about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-12-01 19:00:09 +0100
committerAlyssa Ross <hi@alyssa.is>2023-12-01 19:00:09 +0100
commit9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d (patch)
tree4368f9e4cb2d5b93a956c085337e45cb70f1e331 /nixpkgs/pkgs/tools
parenta9cbfb6941b47d6f50129e6e36927882392daed7 (diff)
parent2344fe1da14cb08b0c18743b207995f9b8597915 (diff)
downloadnixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.gz
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.bz2
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.lz
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.xz
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.tar.zst
nixlib-9e9b07490d5bab5d115c66b80bdb10ff0c11ed8d.zip
Merge https://github.com/NixOS/nixpkgs
Diffstat (limited to 'nixpkgs/pkgs/tools')
-rw-r--r--nixpkgs/pkgs/tools/X11/alttab/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/autocutsel/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/bgs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/ckbcomp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/devour/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/dex/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/dispad/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/ffcast/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/find-cursor/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/go-sct/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/X11/gobble/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/grobi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/hsetroot/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/X11/icon-slicer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/imwheel/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/inputplug/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/kdocker/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/keynav/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/ksuperkey/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/nitrogen/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/obconf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/paperview/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/pmenu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/ratmen/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/run-scaled/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/sbs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/setroot/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/smart-wallpaper/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/srandrd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/sselp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/sx/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/vdpauinfo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/wayv/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/wmctrl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/x11vnc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/x2vnc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/x2x/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xannotate/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xbanish/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xbindkeys-config/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xborders/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xbrightness/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xcalib/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xcape/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xchainkeys/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xcwd/default.nix25
-rw-r--r--nixpkgs/pkgs/tools/X11/xdotool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xgeometry-select/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xidlehook/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xinput_calibrator/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xkb-switch-i3/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xkb-switch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xkbset/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xkbvalidate/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xlayoutdisplay/default.nix13
-rw-r--r--nixpkgs/pkgs/tools/X11/xlogo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xmcp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xmousepasteblock/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xnee/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/X11/xnotify/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xob/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xplugd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xpointerbarrier/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xprintidle-ng/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xprintidle/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xprompt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xrectsel/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xrestop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xtrace/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xtruss/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xvkbd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xwallpaper/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xwinmosaic/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xwinwrap/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/X11/xzoom/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/admin/aliyun-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/admin/awscli2/default.nix20
-rw-r--r--nixpkgs/pkgs/tools/admin/azure-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/admin/azure-cli/python-packages.nix77
-rw-r--r--nixpkgs/pkgs/tools/admin/exoscale-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/admin/fbvnc/default.nix26
-rw-r--r--nixpkgs/pkgs/tools/admin/fioctl/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/admin/kics/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/admin/lxd/package.json104
-rw-r--r--nixpkgs/pkgs/tools/admin/lxd/ui.nix46
-rw-r--r--nixpkgs/pkgs/tools/admin/pgadmin/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/admin/procs/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/admin/qovery-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/admin/syft/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/admin/wander/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/archivers/afio/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/arc_unpacker/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/cabextract/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/cpio/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/ctrtool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/dumpnar/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/fsarchiver/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/gbl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/innoextract/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/lha/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/maxcso/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/ndstool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/payload_dumper/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/pxattr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/quickbms/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/rpmextract/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/runzip/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/tarlz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/undmg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/unshield/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/unzoo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/xarchive/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/xarchiver/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/zarchive/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/archivers/zpaq/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/abcm2ps/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/abcmidi/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/audio/accuraterip-checksum/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/acousticbrainz-client/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/asap/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/audio/audiowaveform/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/bark/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/beets/builtin-plugins.nix82
-rw-r--r--nixpkgs/pkgs/tools/audio/beets/common.nix8
-rw-r--r--nixpkgs/pkgs/tools/audio/beets/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/audio/botamusique/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/catnip-gtk4/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/catnip/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/dsp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/essentia-extractor/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/gvolicon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/headset-charge-indicator/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/linuxwave/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/mictray/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/midimonster/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/mp3cat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/mpd-discord-rpc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/mpd-mpris/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/mpd-notification/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/mpd-sima/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/mpdas/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/mpdris2/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/nanotts/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/pasystray/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/patray/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/picotts/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/piper/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/pnmixer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/pw-volume/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/spotdl/default.nix11
-rw-r--r--nixpkgs/pkgs/tools/audio/stt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/tidal-dl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/unflac/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/video2midi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/volctl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/volumeicon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/whisper-ctranslate2/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/audio/yabridgectl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/backup/awsbck/default.nix11
-rw-r--r--nixpkgs/pkgs/tools/backup/bdsync/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/backup/conserve/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/backup/gphotos-sync/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/backup/rustic-rs/default.nix20
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/bchunk/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/bootiso/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/brasero/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/ccd2iso/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/cdi2iso/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/cue2pops/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/dvd-vr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/dvdisaster/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/iat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/isolyzer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/lsdvd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/mdf2iso/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/mkcue/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/nrg2iso/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/sacd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/uif2iso/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/unetbootin/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/vobcopy/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/cd-dvd/vobsub2srt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/brotli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/bsc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/crabz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/dejsonlz4/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/dtrx/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/efficient-compression-tool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/flips/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/hacpack/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/hactool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/heatshrink/default.nix20
-rw-r--r--nixpkgs/pkgs/tools/compression/imagelol/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/lzbench/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/lzfse/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/lzip/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/lziprecover/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/lzop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/mozlz4a/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/nx2elf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/offzip/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/orz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/ouch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/pbzx/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/pixz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/plzip/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/rzip/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/compression/unzrip/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/upx/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/compression/xar/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/compression/zfp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/bindfs/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/filesystems/blobfuse/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/filesystems/dupe-krill/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/duperemove/default.nix16
-rw-r--r--nixpkgs/pkgs/tools/filesystems/dysk/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/eiciel/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/envfs/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/filesystems/ext4magic/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/extundelete/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fatresize/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fatsort/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/file-rename/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fuse-7z-ng/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fuse-archive/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fuse-ext2/darwin-no-installer.patch31
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fuse-ext2/default.nix46
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fuse-ext2/remove-impure-paths.patch35
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fuse-overlayfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fuseiso/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/fwanalyzer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/garage/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/genext2fs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/genimage/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/genromfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/gitfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/go-mtpfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/goofys/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/gpart/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/grive2/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/httm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/httpdirfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/ifuse/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/ioztat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/jefferson/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/jmtpfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/kdiskmark/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/filesystems/mergerfs/tools.nix8
-rw-r--r--nixpkgs/pkgs/tools/filesystems/mhddfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/mkspiffs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/mount-zip/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/mp3fs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/mtpfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/rdfind/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/rmfuse/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/rmount/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/rnm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/romdirfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/s3backer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/sandboxfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/sasquatch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/sdat2img/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/securefs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/sftpman/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/simple-mtpfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/smbnetfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/snapraid/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/stratis-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/stratisd/Cargo.lock3
-rw-r--r--nixpkgs/pkgs/tools/filesystems/stratisd/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/filesystems/svnfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/tar2ext4/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/filesystems/u3-tool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/ubidump/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/wdfs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/wipefreespace/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/yandex-disk/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/zerofree/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/zkfuse/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/filesystems/zpool-auto-expand-partitions/Cargo.lock753
-rw-r--r--nixpkgs/pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix12
-rw-r--r--nixpkgs/pkgs/tools/filesystems/zpool-iostat-viz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/games/scarab/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/games/trigger-control/default.nix69
-rw-r--r--nixpkgs/pkgs/tools/graphics/aaphoto/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/adriconf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/blockhash/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/blur-effect/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/briss/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/cfdg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/cuneiform/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/didder/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/dippi/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/graphics/ditaa/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/dnglab/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/dpic/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/editres/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/epstool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/escrotum/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/esshader/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/exif/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/facedetect/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/fbv/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/feedgnuplot/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/fgallery/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/ggobi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/gifski/Cargo.lock2
-rw-r--r--nixpkgs/pkgs/tools/graphics/gifski/default.nix12
-rw-r--r--nixpkgs/pkgs/tools/graphics/gmic-qt/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/graphics/gnuplot/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/graphics/goverlay/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/graph-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/graph-easy/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/gromit-mpx/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/guff/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/ibniz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/imgur-screenshot/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/imgurbash2/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/jhead/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/jpegexiforient/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/leela/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/logstalgia/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/lsix/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/mscgen/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/nifskope/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/nip2/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/optipng/default.nix11
-rw-r--r--nixpkgs/pkgs/tools/graphics/oxipng/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pdf2svg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pdftag/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pdftoipe/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/perceptualdiff/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/piglit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pixel2svg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pngcheck/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pngcrush/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pngloss/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pngout/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pngtoico/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/povray/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/pstoedit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/qrcode/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/cmakelists.patch6
-rw-r--r--nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/models_path.patch14
-rw-r--r--nixpkgs/pkgs/tools/graphics/s2png/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/sanjuuni/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/shot-scraper/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/shotgun/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/smartcrop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/sng/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/spirv-cross/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/steghide/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/stegsolve/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/svg2pdf/default.nix13
-rw-r--r--nixpkgs/pkgs/tools/graphics/svgbob/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/svgcleaner/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/textplots/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/texture-synthesis/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/timg/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/graphics/twilight/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/viu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/vkbasalt-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/vkdisplayinfo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/vkmark/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/vulkan-cts/default.nix12
-rw-r--r--nixpkgs/pkgs/tools/graphics/vulkan-cts/sources.nix4
-rw-r--r--nixpkgs/pkgs/tools/graphics/vulkan-helper/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/xcolor/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/xcur2png/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/graphics/yaxg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/emote/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/fusuma/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/lisgd/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/inputmethods/triggerhappy/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/llm/gorilla-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/aaa/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/abduco/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/adafruit-ampy/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/addic7ed-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/addlicense/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/adrgen/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/afetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/agedu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/aichat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/alarm-clock-applet/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/antimicrox/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/aoc-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/apkeep/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/apparix/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/apt-offline/default.nix40
-rw-r--r--nixpkgs/pkgs/tools/misc/aptly/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/aquosctl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/archi/default.nix3
-rwxr-xr-xnixpkgs/pkgs/tools/misc/archi/update.sh25
-rw-r--r--nixpkgs/pkgs/tools/misc/as-tree/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/asciinema-agg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/asciinema-scenario/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/askalono/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/atuin/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/automirror/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/autorevision/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bandwidth/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bartib/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bash_unit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bashcards/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bbe/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bdf2psf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bdf2sfd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bdfresize/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/beats/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/betterdiscord-installer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bfetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bibtool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bitwise/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/blacken-docs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/blahaj/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/blflash/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/blink1-tool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bmap-tools/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/bmon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/boltbrowser/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/boxxy/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/brltty/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/broot/default.nix10
-rw-r--r--nixpkgs/pkgs/tools/misc/bsp-layout/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/btdu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/buildtorrent/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/calamares/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/capture/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/castty/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cc2538-bsl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cf-terraforming/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cfonts/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/chafa/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/changelogger/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/charasay/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/checkpwn/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/chef-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/chelf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/chezmoi/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/misc/cicero-tui/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/citron/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/clac/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/claws/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/clematis/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/clickclack/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/clini/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/clipbuzz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/clipnotify/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/clipster/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cloc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/clolcat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/clpeak/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cod/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/code-minimap/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/codebraid/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/codemov/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/codevis/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/coinlive/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/colord-gtk/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/colorless/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/colorz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/compdb/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/complete-alias/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/completely/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/convbin/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/convfont/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/convimg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/convmv/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/copier/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/coreboot-configurator/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cp437/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cpufetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cpuminer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/crex/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/crypto-tracker/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/csv2latex/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/csv2parquet/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/csvs-to-sqlite/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cutecom/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/cyclonedx-python/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dabet/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dashing/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/datefmt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dbus-map/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ddate/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ddcutil/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/debootstrap/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dgoss/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dialogbox/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/didu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/diffoci/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/diffoscope/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dijo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/direnv/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/misc/discocss/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/disfetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/diskonaut/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/diskscan/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/diskus/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/djenrandom/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/docbook2mdoc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/docker-sync/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/docui/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/doitlive/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dooit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dotacat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dotter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dtach/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dtool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dua/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/misc/duc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/duf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dumptorrent/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dupd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dutree/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dwarf2json/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/dwt1-shell-color-scripts/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/easeprobe/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/edid-decode/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/edid-generator/default.nix60
-rw-r--r--nixpkgs/pkgs/tools/misc/edir/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/elfcat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/empty/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/emv/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/encpipe/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/enjarify/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ent/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/entr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/enumer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/envchain/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/esphome/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/esptool-ck/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ethtool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ets/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/eva/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/evhz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/f2/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/faketty/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fclones/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fcp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fdupes/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fedifetcher/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fetch-scm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ffsend/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/figlet/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/misc/filebench/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fileschanged/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/findup/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/flashrom-stable/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/misc/flashrom/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/flitter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/flowgger/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fltrdr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fluentd/Gemfile.lock6
-rw-r--r--nixpkgs/pkgs/tools/misc/fluentd/gemset.nix33
-rw-r--r--nixpkgs/pkgs/tools/misc/font-config-info/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fontfor/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fpp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fre/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/freshfetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fselect/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fsmark/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fsmon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fsql/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fsrx/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fw/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/misc/fx-cast-bridge/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/misc/fzf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/fzy/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/g203-led/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/g933-utils/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gay/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gazelle-origin/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gbdfed/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/geteltorito/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/getopt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gh-actions-cache/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gh-cal/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gh-dash/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gh-eco/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gh-markdown-preview/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gh-ost/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ghostie/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gibo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gif-for-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gigalixir/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/github-backup/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/github-copilot-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/glasgow/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/go-ios/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/goaccess/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/godu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gomi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/goose/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/goreleaser/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/goss/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/gotify-desktop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gparted/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gpick/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/grafterm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/grass-sass/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/grit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/grizzly/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gti/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/gwe/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hackertyper/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hacksaw/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hakuneko/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/halp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/handlr-regex/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/handlr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hashpump/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/haste-client/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hdaps-gl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hddtemp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hdf5/1.10.nix10
-rw-r--r--nixpkgs/pkgs/tools/misc/hdfview/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hebcal/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/heimdall/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hex/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/hexd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hexdiff/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hexyl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hhpc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hid-listen/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hidrd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/homesick/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hpcg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hpl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/html-proofer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hueadm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hunt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hwatch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/hyperfine/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/i3nator/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/iay/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ibus-theme-tools/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ical2orgpy/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ictree/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ideviceinstaller/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/idevicerestore/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ikill/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ili2c/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/infracost/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ink/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/inklingreader/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/inspec/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/instaloader/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/invoice/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/iotools/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ipad_charge/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ipbt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ised/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/isoimagewriter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ix/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/jdiskreport/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/jdupes/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/journaldriver/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/jsonwatch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/jstest-gtk/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/jugglinglab/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/kak-lsp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/kalker/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/kargo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/kb/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/kcollectd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/keychain/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/keymapviz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/kicli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/killport/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/kitty-img/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/krapslog/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/kronometer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ksnip/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/kt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lavat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lazycli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lazydocker/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ldapvi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ldmtool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/leanify/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ledit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lemmeknow/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lemmy-help/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lerpn/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/libgen-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/librespeed-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lice/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/license-generator/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lighthouse-steamvr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/limitcpu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lineselect/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lipl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/livedl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lnav/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lnch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/loadlibrary/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/locate-dominating-file/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/logtop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lolcat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lorri/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lottieconverter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lrzsz/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/misc/lsd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ltunify/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/lwc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/macchina/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mailman-rss/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/makebootfat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mandown/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/manga-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mapcidr/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/misc/markdown-anki-decks/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/marlin-calc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/massren/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mastotool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mathpix-snipping-tool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mbuffer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mcfly/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mcrypt/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/mdbtools/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/misc/mdr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mdslides/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/me_cleaner/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/megacli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/melody/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mermaid-filter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mimeo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/minipro/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/miniserve/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ministat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mktorrent/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mloader/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mmake/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mmctl/0001-module-replace-public.patch8
-rw-r--r--nixpkgs/pkgs/tools/misc/mmctl/default.nix26
-rw-r--r--nixpkgs/pkgs/tools/misc/mnc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mods/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/misc/mongodb-compass/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mons/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/moon-phases/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/moreutils/default.nix10
-rw-r--r--nixpkgs/pkgs/tools/misc/moserial/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/most/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mpdscribble/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mpremote/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mprime/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mprocs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ms-sys/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mslink/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mtm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/multitail/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/multitime/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mutagen-compose/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mvebu64boot/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/mysqltuner/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/natls/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/nb/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/nbench/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/nbqa/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/nginx-config-formatter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/nitch/default.nix31
-rw-r--r--nixpkgs/pkgs/tools/misc/nix-direnv/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/nomino/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/noteshrink/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/noti/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/notify/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ntfy-sh/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/misc/ntfy/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/misc/nux/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/nvfancontrol/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/nvimpager/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/nyancat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ocs-url/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/octofetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/octosql/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/odyssey/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ollama/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/ondir/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/onefetch/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/misc/onefetch/zstd-pkg-config.patch14
-rw-r--r--nixpkgs/pkgs/tools/misc/open-pdf-sign/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/opencorsairlink/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/opentelemetry-collector/default.nix24
-rw-r--r--nixpkgs/pkgs/tools/misc/opentsdb/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/org-stats/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/os-prober/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/osm2pgsql/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/misc/otel-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/otfcc/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/misc/owofetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-acro/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-drawio-filter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-eqnos/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-fignos/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-imagine/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-include/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-katex/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-plantuml-filter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-secnos/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pandoc-tablenos/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/panicparse/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/panoply/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/paperlike-go/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/paps/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/parallel/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/parcellite/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/parquet-tools/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/partition-manager/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/past-time/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pastebinit/default.nix59
-rw-r--r--nixpkgs/pkgs/tools/misc/pastebinit/use-drv-etc.patch13
-rw-r--r--nixpkgs/pkgs/tools/misc/pazi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pb_cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pcp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pdd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pdf-parser/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/peep/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pferd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pfetch-rs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pfetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pfsshell/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pg_flame/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pg_top/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pgbadger/default.nix12
-rw-r--r--nixpkgs/pkgs/tools/misc/pgcenter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pgmetrics/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/phoronix-test-suite/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pick/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/picocom/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pipectl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pipelight/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pipreqs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pistol/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/piston-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pixd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pk2cmd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pkgdiff/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pkgtop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/plantuml/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/plowshare/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/misc/pmbootstrap/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pod2mdoc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/poop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/portal/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pouf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/poweralertd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/powerline-rs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pre-commit-hook-ensure-sops/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pre-commit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/precice-config-visualizer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/present-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pridecat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pridefetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/procyon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/profetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/progress/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/promexplorer/default.nix22
-rw-r--r--nixpkgs/pkgs/tools/misc/promql-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/proximity-sort/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pspg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/psql2csv/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/psrecord/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/pv/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/misc/pws/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/q-text-as-data/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/qdl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/qjoypad/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/qmk/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/qmk_hid/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/qrscan/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/qt5ct/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/qt6ct/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/quich/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/radeon-profile/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ramfetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rargs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rates/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rauc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rename/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rfc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rig/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ripdrag/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ristate/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rlwrap/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rmate-sh/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rmlint/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rmw/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/roundup/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rpcsvc-proto/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rpi-imager/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/rpm-ostree/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rshim-user-space/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/rtx/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/rtz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rust-motd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/rw/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sagoin/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sanctity/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/savepagenow/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/scdl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/scfbuild/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/screenfetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/scrub/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sd-mux-ctrl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sdate/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/see/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/semiphemeral/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/serverspec/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/setconf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sfz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/shadowenv/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/shallot/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sharedown/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sheldon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/shell-hist/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/shelldap/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/shellspec/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/shunit2/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/silicon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sixpair/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/slop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sloth/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/slsnif/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/smc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/smenu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/smug/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/snore/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sonota/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/spacer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sqlite3-to-mysql/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/srisum/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/star-history/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/starfetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/staruml/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/statserial/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/subberthehut/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/svtplay-dl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/svu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/swaglyrics/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/systrayhelper/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/sysz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/szyszka/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/t/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/t1utils/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/misc/tagref/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tailer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tailspin/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/taoup/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/tbls/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/misc/tcat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/td/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tdfgo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tea/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/teamocil/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tensorman/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tere/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/termplay/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/termtosvg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tewisay/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/texi2mdoc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tfk8s/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tgpt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/time-decode/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/timelimit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/timer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/timetagger_cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/timidity/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tio/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tldr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tmate/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tmpwatch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tmux-cssh/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tmux-mem-cpu-load/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tmux-sessionizer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tmuxinator/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tmuxp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/toastify/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/toilet/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/topgrade/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/topicctl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/torrenttools/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/traefik-certs-dumper/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/trash-cli/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/misc/triehash/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ttchat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ttmkfdir/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tty-clock/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ttygif/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ttylog/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ttyplot/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tvnamer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/twitch-dl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/twm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/twspace-crawler/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/twurl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/txtw/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tydra/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/tz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ugs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/uhubctl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/umlet/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/unclutter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/undocker/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/unparam/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/up/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/url-parser/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/urlencode/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/usbimager/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/usbmuxd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/usbmuxd2/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/usbview/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/uwufetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/uwuify/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/valeronoi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vcs_query/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vector/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/misc/vector/vector-pr19075.patch23
-rw-r--r--nixpkgs/pkgs/tools/misc/veikk-linux-driver-gui/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/via/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/viddy/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vimer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vimwiki-markdown/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vivid/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vix/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vmtouch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/void/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vorbisgain/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vrc-get/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vsh/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vtm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/vttest/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/wagyu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/wakapi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/wasm-tools/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/watchexec/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/misc/wayback-machine-archiver/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/waylevel/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/webcat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/websocat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/wemux/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/wit-bindgen/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/wlc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/woeusb/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/woof/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/wootility/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/wsl-open/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/wwcd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/wyrd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/x11idle/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xcd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xcp/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/misc/xdaliclock/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xdg-ninja/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xdiskusage/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xdo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xdxf2slob/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xflux/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xfstests/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xiccd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xilinx-bootgen/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xjobs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xmonad-log/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xq/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xtitle/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/xxv/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/yafetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/yai/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/yajsv/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/yank/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/yle-dl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/you-get/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/youtube-dl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ytarchive/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ytcast/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ytfzf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/ytmdl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/yubico-piv-tool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/yubikey-personalization-gui/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/yutto/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/zabbixctl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/zalgo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/zellij/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/misc/zf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/zitadel-tools/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/zotero-translation-server/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/zsh-history-to-fish/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/misc/zthrottle/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/networking/aardvark-dns/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/airgeddon/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/networking/boundary/default.nix10
-rw-r--r--nixpkgs/pkgs/tools/networking/dd-agent/datadog-agent.nix1
-rw-r--r--nixpkgs/pkgs/tools/networking/ddclient/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/networking/ddns-go/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/networking/httptunnel/default.nix22
-rw-r--r--nixpkgs/pkgs/tools/networking/hysteria/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/ipfetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/networking/ipinfo/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/networking/kea/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/networking/maubot/allow-building-plugins-from-nix-store.patch13
-rw-r--r--nixpkgs/pkgs/tools/networking/maubot/default.nix39
-rw-r--r--nixpkgs/pkgs/tools/networking/maubot/plugins/default.nix68
-rw-r--r--nixpkgs/pkgs/tools/networking/maubot/plugins/generated.json2225
-rw-r--r--nixpkgs/pkgs/tools/networking/maubot/plugins/generated.nix74
-rwxr-xr-xnixpkgs/pkgs/tools/networking/maubot/plugins/update.py200
-rw-r--r--nixpkgs/pkgs/tools/networking/maubot/wrapper.nix70
-rw-r--r--nixpkgs/pkgs/tools/networking/muffet/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/netbird/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/networking/netifd/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/networking/ngrep/default.nix10
-rw-r--r--nixpkgs/pkgs/tools/networking/ockam/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/oha/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/ooniprobe-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/opendrop/default.nix41
-rw-r--r--nixpkgs/pkgs/tools/networking/opensnitch/daemon.nix4
-rw-r--r--nixpkgs/pkgs/tools/networking/opensnitch/ui.nix4
-rw-r--r--nixpkgs/pkgs/tools/networking/pgrok/build-deps/package.json2
-rw-r--r--nixpkgs/pkgs/tools/networking/pgrok/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/q/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/requestly/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/networking/sing-box/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/tridactyl-native/default.nix29
-rw-r--r--nixpkgs/pkgs/tools/networking/uqmi/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/networking/v2raya/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/networking/v2raya/package.json3
-rw-r--r--nixpkgs/pkgs/tools/networking/wg-friendly-peer-names/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/networking/wol/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/nix/fh/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/nix/manix/default.nix32
-rw-r--r--nixpkgs/pkgs/tools/nix/nar-serve/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/nix/nix-output-monitor/generated-package.nix153
-rwxr-xr-xnixpkgs/pkgs/tools/nix/nix-output-monitor/update.sh8
-rw-r--r--nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py4
-rw-r--r--nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py89
-rw-r--r--nixpkgs/pkgs/tools/package-management/akku/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/apk-tools/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/apkg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/apt/default.nix87
-rw-r--r--nixpkgs/pkgs/tools/package-management/apx/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/package-management/auditwheel/default.nix59
-rw-r--r--nixpkgs/pkgs/tools/package-management/ciel/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix23
-rw-r--r--nixpkgs/pkgs/tools/package-management/dnf5/default.nix38
-rw-r--r--nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/emplace/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/fortran-fpm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/fpm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/fusesoc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/gx/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/holo-build/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/home-manager/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/licensee/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/microdnf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/micromamba/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/package-management/morph/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nfpm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/niff/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-doc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-du/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-eval-jobs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-pin/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-serve/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-template/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-top/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix/common.nix35
-rw-r--r--nixpkgs/pkgs/tools/package-management/nix/default.nix40
-rw-r--r--nixpkgs/pkgs/tools/package-management/pacup/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/pdm/default.nix14
-rw-r--r--nixpkgs/pkgs/tools/package-management/pkg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/poetry/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-export.nix4
-rw-r--r--nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix4
-rw-r--r--nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix18
-rw-r--r--nixpkgs/pkgs/tools/package-management/poetry2conda/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/repro-get/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/reuse/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/rpm/default.nix36
-rw-r--r--nixpkgs/pkgs/tools/package-management/smlpkg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/package-management/yarn-lock-converter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/agebox/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/aide/default.nix11
-rw-r--r--nixpkgs/pkgs/tools/security/apkleaks/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/bao/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/bettercap/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/buttercup-desktop/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/certinfo/default.nix29
-rw-r--r--nixpkgs/pkgs/tools/security/certmgr/default.nix45
-rw-r--r--nixpkgs/pkgs/tools/security/cfripper/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/chainsaw/Cargo.lock384
-rw-r--r--nixpkgs/pkgs/tools/security/chainsaw/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/chkrootkit/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/cmospwd/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/security/cnspec/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/ctmg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/cyclonedx-gomod/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/dalfox/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/dismember/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/erosmb/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/exploitdb/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/feroxbuster/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/fscan/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/gen-oath-safe/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/ggshield/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/security/go-dork/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/gopass/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/gopass/git-credential.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/gopass/hibp.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/gopass/jsonapi.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/gopass/summon.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/gotestwaf/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/govulncheck/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/security/govulncheck/version.patch15
-rw-r--r--nixpkgs/pkgs/tools/security/hash-identifier/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/hashcat/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/hcxdumptool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/himitsu/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/iaito/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/security/ic-keysmith/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/jwt-hack/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/kepler/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/kube-hunter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/kubeaudit/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/kubesec/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/kubestroyer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/ldapnomnom/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/ldeep/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/lethe/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/libmodsecurity/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/lmp/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/log4jcheck/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/log4shell-detector/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/logmap/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/mantra/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/metasploit/Gemfile2
-rw-r--r--nixpkgs/pkgs/tools/security/metasploit/Gemfile.lock8
-rw-r--r--nixpkgs/pkgs/tools/security/metasploit/default.nix15
-rw-r--r--nixpkgs/pkgs/tools/security/metasploit/gemset.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/minisign/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/mitmproxy2swagger/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/mongoaudit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/naabu/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/nitrokey-app/default.nix19
-rw-r--r--nixpkgs/pkgs/tools/security/nsjail/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/nuclei/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/oath-toolkit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/onesixtyone/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/ospd-openvas/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/parsero/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/pass/extensions/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/pass/extensions/file.nix23
-rw-r--r--nixpkgs/pkgs/tools/security/pass/wofi-pass.nix65
-rw-r--r--nixpkgs/pkgs/tools/security/prs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/routersploit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/rucredstash/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/sequoia-chameleon-gnupg/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/security/shellz/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/sigma-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/silenthound/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/slowhttptest/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/slsa-verifier/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/smbscan/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/spire/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/stegseek/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/step-cli/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/stricat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/sx-go/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/terrascan/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/security/tessen/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/trufflehog/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/vault/vault-bin.nix12
-rw-r--r--nixpkgs/pkgs/tools/security/vaultwarden/Cargo.lock4052
-rw-r--r--nixpkgs/pkgs/tools/security/vaultwarden/default.nix12
-rw-r--r--nixpkgs/pkgs/tools/security/webanalyze/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/xcrawl3r/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/yatas/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/yubihsm-connector/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/security/yubihsm-shell/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/security/zsteg/Gemfile.lock22
-rw-r--r--nixpkgs/pkgs/tools/security/zsteg/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/security/zsteg/gemset.nix49
-rw-r--r--nixpkgs/pkgs/tools/system/actkbd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/amdgpu_top/Cargo.lock1860
-rw-r--r--nixpkgs/pkgs/tools/system/amdgpu_top/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/system/augeas/bootstrap.diff15
-rw-r--r--nixpkgs/pkgs/tools/system/augeas/default.nix56
-rw-r--r--nixpkgs/pkgs/tools/system/automatic-timezoned/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/awstats/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/bar/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/btop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/chase/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/clinfo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/colorls/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/confd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/consul-template/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/ctop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/daemon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/daemonize/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/datefudge/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/dcfldd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/ddh/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/ddrescueview/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/dfc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/dfrs/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/disk-filltest/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/dog/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/dool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/envconsul/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/epilys-bb/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/facter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/foreman/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/foremost/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/gdmap/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/gdu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/gkraken/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/go-audit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/gohai/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/gopsuinfo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/gotop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/gptman/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/gt5/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/gtop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/hardinfo/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/hddfancontrol/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/hiera-eyaml/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/honcho/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/hostctl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/hw-probe/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/idle3tools/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/illum/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/inxi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/ioping/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/java-service-wrapper/default.nix26
-rw-r--r--nixpkgs/pkgs/tools/system/jobber/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/jsvc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/jump/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/kmon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/lact/default.nix11
-rw-r--r--nixpkgs/pkgs/tools/system/lact/pci-ids.patch10
-rw-r--r--nixpkgs/pkgs/tools/system/localtime/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/logrotate/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/lr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/lshw/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/mediawriter/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/memtester/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/minijail/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/mlc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/monit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/mq-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/nats-top/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/opencl-info/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/osquery/Use-locale.h-instead-of-removed-xlocale.h-header.patch31
-rw-r--r--nixpkgs/pkgs/tools/system/osquery/default.nix10
-rw-r--r--nixpkgs/pkgs/tools/system/pcstat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/procodile/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/ps_mem/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/psensor/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/psstop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/r10k/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/retry/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/rofi-systemd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/runitor/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/rwc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/s-tui/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/s0ix-selftest-tool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/safe-rm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/safecopy/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/setserial/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/skeema/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/snooze/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/stacer/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/stress-ng/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/stress/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/stressapptest/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/supercronic/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/symlinks/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/syslog-ng/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/system/systemd-journal2gelf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/thermald/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/thinkfan/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/tm/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/tp-auto-kbbl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/ts/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/ttop/default.nix35
-rw-r--r--nixpkgs/pkgs/tools/system/tuptime/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/ufiformat/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/undaemonize/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/vbetool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/wsysmon/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/xe/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/yeshup/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/zfxtop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/zps/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/system/zx/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/text/comrak/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/difftastic/Cargo.lock284
-rw-r--r--nixpkgs/pkgs/tools/text/difftastic/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/text/frawk/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/text/frogmouth/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/gtranslator/default.nix31
-rw-r--r--nixpkgs/pkgs/tools/text/highlight/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/mdbook-footnote/default.nix28
-rw-r--r--nixpkgs/pkgs/tools/text/mdhtml/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/poedit/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/ripgrep/default.nix25
-rw-r--r--nixpkgs/pkgs/tools/text/ugrep/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/text/xml/rxp/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix31
-rw-r--r--nixpkgs/pkgs/tools/text/zim-tools/default.nix4
-rw-r--r--nixpkgs/pkgs/tools/typesetting/asciidoctorj/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/biber-ms/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/biber/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/biblatex-check/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/coq2html/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/djvu2pdf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/docbook2odf/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/fop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/git-latexdiff/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/halibut/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/hayagriva/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/typesetting/htmldoc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/kramdown-asciidoc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/lowdown/default.nix6
-rw-r--r--nixpkgs/pkgs/tools/typesetting/mmark/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/pdf2djvu/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/pdf2odt/default.nix60
-rw-r--r--nixpkgs/pkgs/tools/typesetting/pdf2odt/use_mktemp.patch19
-rw-r--r--nixpkgs/pkgs/tools/typesetting/pdfchain/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/pdfgrep/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/pdfsandwich/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/pdftk/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/psutils/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/typesetting/pulldown-cmark/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/rfc-bibtex/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/satysfi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/sile/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/sshlatex/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/tectonic/default.nix3
-rw-r--r--nixpkgs/pkgs/tools/typesetting/tex/auctex/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/typesetting/tex/texlive/build-tex-env.nix2
-rw-r--r--nixpkgs/pkgs/tools/typesetting/tikzit/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/typstfmt/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/typesetting/xmlroff/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/dvgrab/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/go2rtc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/gopro/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/harvid/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/lux/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/video/play-with-mpv/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/rav1e/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/recyclarr/default.nix10
-rw-r--r--nixpkgs/pkgs/tools/video/replay-sorcery/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/swfmill/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/vcsi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/vncrec/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/wtwitch/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/yamdi/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/video/yaydl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/alpine-make-vm-image/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/amazon-ecs-cli/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/distrobuilder/default.nix40
-rw-r--r--nixpkgs/pkgs/tools/virtualization/distrobuilder/generator.nix19
-rw-r--r--nixpkgs/pkgs/tools/virtualization/distrobuilder/nixos-generator.patch113
-rw-r--r--nixpkgs/pkgs/tools/virtualization/extra-container/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/govc/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/jumppad/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/kubevirt/default.nix5
-rw-r--r--nixpkgs/pkgs/tools/virtualization/lxd-image-server/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/marathonctl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/mininet/default.nix9
-rw-r--r--nixpkgs/pkgs/tools/virtualization/mkosi/default.nix31
-rw-r--r--nixpkgs/pkgs/tools/virtualization/multipass/default.nix8
-rw-r--r--nixpkgs/pkgs/tools/virtualization/nixos-shell/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/onmetal-image/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/ovftool/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/reg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/supermin/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/udocker/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/uefi-run/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/vpsfree-client/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/virtualization/xva-img/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/aw-watcher-window-wayland/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/chayang/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/clapboard/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/clipman/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/gnome-randr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/hyprland-per-window-layout/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/proycon-wayout/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/shikane/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/swaycwd/default.nix33
-rw-r--r--nixpkgs/pkgs/tools/wayland/swayimg/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/swaykbdd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/swayrbar/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/swaysome/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/way-displays/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/waylogout/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/waynergy/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/wayland/wayout/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wdomirror/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wev/default.nix2
-rw-r--r--nixpkgs/pkgs/tools/wayland/wl-color-picker/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wl-gammactl/default.nix7
-rw-r--r--nixpkgs/pkgs/tools/wayland/wl-gammactl/dont-need-wlroots.diff20
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlay/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlprop/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlr-randr/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlr-which-key/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlrctl/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wlsunset/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wluma/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wob/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wpaperd/default.nix1
-rw-r--r--nixpkgs/pkgs/tools/wayland/wshowkeys/default.nix1
1523 files changed, 8652 insertions, 6367 deletions
diff --git a/nixpkgs/pkgs/tools/X11/alttab/default.nix b/nixpkgs/pkgs/tools/X11/alttab/default.nix
index 7e675c250175..99619bd88d2c 100644
--- a/nixpkgs/pkgs/tools/X11/alttab/default.nix
+++ b/nixpkgs/pkgs/tools/X11/alttab/default.nix
@@ -53,5 +53,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = [ ];
+    mainProgram = "alttab";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/autocutsel/default.nix b/nixpkgs/pkgs/tools/X11/autocutsel/default.nix
index 61a80bcbcdd6..e1b9a3c1c73a 100644
--- a/nixpkgs/pkgs/tools/X11/autocutsel/default.nix
+++ b/nixpkgs/pkgs/tools/X11/autocutsel/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     description = "Tracks changes in the server's cutbuffer and CLIPBOARD selection";
     license = lib.licenses.gpl2Plus;
     platforms = with lib.platforms; all;
+    mainProgram = "autocutsel";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/bgs/default.nix b/nixpkgs/pkgs/tools/X11/bgs/default.nix
index f0150e931551..b50f15a1929c 100644
--- a/nixpkgs/pkgs/tools/X11/bgs/default.nix
+++ b/nixpkgs/pkgs/tools/X11/bgs/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "bgs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/ckbcomp/default.nix b/nixpkgs/pkgs/tools/X11/ckbcomp/default.nix
index f78e43dbcc8e..1b50b2456d0a 100644
--- a/nixpkgs/pkgs/tools/X11/ckbcomp/default.nix
+++ b/nixpkgs/pkgs/tools/X11/ckbcomp/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ dezgeg ];
     platforms = platforms.unix;
+    mainProgram = "ckbcomp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/devour/default.nix b/nixpkgs/pkgs/tools/X11/devour/default.nix
index 016ffa6215db..861eaf905f9d 100644
--- a/nixpkgs/pkgs/tools/X11/devour/default.nix
+++ b/nixpkgs/pkgs/tools/X11/devour/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ mazurel ];
     platforms = platforms.unix;
+    mainProgram = "devour";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/dex/default.nix b/nixpkgs/pkgs/tools/X11/dex/default.nix
index 5e0ef6002ce0..c194e1543f29 100644
--- a/nixpkgs/pkgs/tools/X11/dex/default.nix
+++ b/nixpkgs/pkgs/tools/X11/dex/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ nickcao ];
+    mainProgram = "dex";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/dispad/default.nix b/nixpkgs/pkgs/tools/X11/dispad/default.nix
index fbb7b117d298..11d46bf24cb6 100644
--- a/nixpkgs/pkgs/tools/X11/dispad/default.nix
+++ b/nixpkgs/pkgs/tools/X11/dispad/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ zimbatm ];
     platforms = platforms.linux;
+    mainProgram = "dispad";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/ffcast/default.nix b/nixpkgs/pkgs/tools/X11/ffcast/default.nix
index 9723ef69b850..9b2611dde210 100644
--- a/nixpkgs/pkgs/tools/X11/ffcast/default.nix
+++ b/nixpkgs/pkgs/tools/X11/ffcast/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ sikmir ];
     platforms = platforms.linux;
+    mainProgram = "ffcast";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/find-cursor/default.nix b/nixpkgs/pkgs/tools/X11/find-cursor/default.nix
index 44a7c7662152..3b9862a47dea 100644
--- a/nixpkgs/pkgs/tools/X11/find-cursor/default.nix
+++ b/nixpkgs/pkgs/tools/X11/find-cursor/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = [ maintainers.yanganto ];
+    mainProgram = "find-cursor";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/go-sct/default.nix b/nixpkgs/pkgs/tools/X11/go-sct/default.nix
index 585e28971b49..5e464d43f81c 100644
--- a/nixpkgs/pkgs/tools/X11/go-sct/default.nix
+++ b/nixpkgs/pkgs/tools/X11/go-sct/default.nix
@@ -8,7 +8,7 @@ buildGoModule rec {
     owner = "d4l3k";
     repo = "go-sct";
     rev = "4ae88a6bf50e0b917541ddbcec1ff10ab77a0b15";
-    sha256 = "sha256-/0ilM1g3CNaseqV9i+cKWyzxvWnj+TFqazt+aYDtNVs=";
+    hash = "sha256-/0ilM1g3CNaseqV9i+cKWyzxvWnj+TFqazt+aYDtNVs=";
   };
 
   postPatch = ''
@@ -27,6 +27,7 @@ buildGoModule rec {
     homepage = "https://github.com/d4l3k/go-sct";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
+    platforms = platforms.linux;
     mainProgram = "sct";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/gobble/default.nix b/nixpkgs/pkgs/tools/X11/gobble/default.nix
index 46b1b2c4b482..b61cf78f9921 100644
--- a/nixpkgs/pkgs/tools/X11/gobble/default.nix
+++ b/nixpkgs/pkgs/tools/X11/gobble/default.nix
@@ -33,5 +33,6 @@ rustPlatform.buildRustPackage rec {
     license = lib.licenses.gpl3Only;
     maintainers = with lib.maintainers; [ vuimuich ];
     platforms = lib.platforms.linux;
+    mainProgram = "gobble";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/grobi/default.nix b/nixpkgs/pkgs/tools/X11/grobi/default.nix
index 08b037972970..cea5fad51e55 100644
--- a/nixpkgs/pkgs/tools/X11/grobi/default.nix
+++ b/nixpkgs/pkgs/tools/X11/grobi/default.nix
@@ -26,5 +26,6 @@ buildGoModule rec {
     description = "Automatically configure monitors/outputs for Xorg via RANDR";
     license = with licenses; [ bsd2 ];
     platforms   = platforms.linux;
+    mainProgram = "grobi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/hsetroot/default.nix b/nixpkgs/pkgs/tools/X11/hsetroot/default.nix
index 95ccd9586d9c..a3ebc33f56ba 100644
--- a/nixpkgs/pkgs/tools/X11/hsetroot/default.nix
+++ b/nixpkgs/pkgs/tools/X11/hsetroot/default.nix
@@ -38,7 +38,7 @@ stdenv.mkDerivation rec {
     description = "Allows you to compose wallpapers ('root pixmaps') for X";
     homepage = "https://github.com/himdel/hsetroot";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ henrytill shamilton ];
+    maintainers = with maintainers; [ shamilton ];
     platforms = platforms.unix;
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/icon-slicer/default.nix b/nixpkgs/pkgs/tools/X11/icon-slicer/default.nix
index 37b309c54b76..514b39496ffa 100644
--- a/nixpkgs/pkgs/tools/X11/icon-slicer/default.nix
+++ b/nixpkgs/pkgs/tools/X11/icon-slicer/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ zaninime ];
     platforms = platforms.linux;
+    mainProgram = "icon-slicer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/imwheel/default.nix b/nixpkgs/pkgs/tools/X11/imwheel/default.nix
index 79fbe65af1f2..bab363583a6c 100644
--- a/nixpkgs/pkgs/tools/X11/imwheel/default.nix
+++ b/nixpkgs/pkgs/tools/X11/imwheel/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ jhillyerd ];
     platforms = platforms.linux;
     license = licenses.gpl2;
+    mainProgram = "imwheel";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/inputplug/default.nix b/nixpkgs/pkgs/tools/X11/inputplug/default.nix
index e6bf334cf4c0..80d97190a0ce 100644
--- a/nixpkgs/pkgs/tools/X11/inputplug/default.nix
+++ b/nixpkgs/pkgs/tools/X11/inputplug/default.nix
@@ -34,6 +34,7 @@ rustPlatform.buildRustPackage rec {
     # `daemon(3)` is deprecated on macOS and `pidfile-rs` needs updating
     broken = stdenv.isDarwin;
     maintainers = with maintainers; [ jecaro ];
+    mainProgram = "inputplug";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/X11/kdocker/default.nix b/nixpkgs/pkgs/tools/X11/kdocker/default.nix
index 21a11f8fa31a..e8c08e4c3832 100644
--- a/nixpkgs/pkgs/tools/X11/kdocker/default.nix
+++ b/nixpkgs/pkgs/tools/X11/kdocker/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ hexclover ];
     platforms = platforms.linux;
+    mainProgram = "kdocker";
   };
 })
diff --git a/nixpkgs/pkgs/tools/X11/keynav/default.nix b/nixpkgs/pkgs/tools/X11/keynav/default.nix
index 4a2a0e8b5904..63732f478cba 100644
--- a/nixpkgs/pkgs/tools/X11/keynav/default.nix
+++ b/nixpkgs/pkgs/tools/X11/keynav/default.nix
@@ -58,5 +58,6 @@ stdenv.mkDerivation {
     license = licenses.bsd3;
     maintainers = with maintainers; [ pSub ];
     platforms = platforms.linux;
+    mainProgram = "keynav";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/ksuperkey/default.nix b/nixpkgs/pkgs/tools/X11/ksuperkey/default.nix
index 8b77ae550300..733022948dbd 100644
--- a/nixpkgs/pkgs/tools/X11/ksuperkey/default.nix
+++ b/nixpkgs/pkgs/tools/X11/ksuperkey/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = [ ];
     platforms = platforms.linux;
+    mainProgram = "ksuperkey";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/nitrogen/default.nix b/nixpkgs/pkgs/tools/X11/nitrogen/default.nix
index deefddf23cea..6097948a7cd3 100644
--- a/nixpkgs/pkgs/tools/X11/nitrogen/default.nix
+++ b/nixpkgs/pkgs/tools/X11/nitrogen/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2;
     platforms = lib.platforms.linux;
     maintainers = [ lib.maintainers.auntie ];
+    mainProgram = "nitrogen";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/obconf/default.nix b/nixpkgs/pkgs/tools/X11/obconf/default.nix
index efd8b60419be..f4f9fd433fde 100644
--- a/nixpkgs/pkgs/tools/X11/obconf/default.nix
+++ b/nixpkgs/pkgs/tools/X11/obconf/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = [ lib.maintainers.sfrijters ];
     platforms = lib.platforms.linux;
+    mainProgram = "obconf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/paperview/default.nix b/nixpkgs/pkgs/tools/X11/paperview/default.nix
index 790eaed53ab5..30f04702708a 100644
--- a/nixpkgs/pkgs/tools/X11/paperview/default.nix
+++ b/nixpkgs/pkgs/tools/X11/paperview/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ _3JlOy-PYCCKUi ];
+    mainProgram = "paperview";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/pmenu/default.nix b/nixpkgs/pkgs/tools/X11/pmenu/default.nix
index c5f6274d988e..278a181f5c92 100644
--- a/nixpkgs/pkgs/tools/X11/pmenu/default.nix
+++ b/nixpkgs/pkgs/tools/X11/pmenu/default.nix
@@ -56,5 +56,6 @@ stdenv.mkDerivation (finalAttrs: {
     '';
     maintainers = [ lib.maintainers.azahi ];
     platforms = lib.platforms.unix;
+    mainProgram = "pmenu";
   };
 })
diff --git a/nixpkgs/pkgs/tools/X11/ratmen/default.nix b/nixpkgs/pkgs/tools/X11/ratmen/default.nix
index 8a07b41ac371..0fe85a9ae452 100644
--- a/nixpkgs/pkgs/tools/X11/ratmen/default.nix
+++ b/nixpkgs/pkgs/tools/X11/ratmen/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     homepage = "http://www.update.uu.se/~zrajm/programs/";
     downloadPage = "http://www.update.uu.se/~zrajm/programs/ratmen/";
+    mainProgram = "ratmen";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/run-scaled/default.nix b/nixpkgs/pkgs/tools/X11/run-scaled/default.nix
index d62b38bdf287..b9cdc20f78aa 100644
--- a/nixpkgs/pkgs/tools/X11/run-scaled/default.nix
+++ b/nixpkgs/pkgs/tools/X11/run-scaled/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation {
     maintainers = [ maintainers.snaar ];
     license = licenses.bsd3;
     platforms = platforms.unix;
+    mainProgram = "run_scaled";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/sbs/default.nix b/nixpkgs/pkgs/tools/X11/sbs/default.nix
index 02a25ba467fb..8f16729cd256 100644
--- a/nixpkgs/pkgs/tools/X11/sbs/default.nix
+++ b/nixpkgs/pkgs/tools/X11/sbs/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ onur-ozkan ];
+    mainProgram = "sbs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/setroot/default.nix b/nixpkgs/pkgs/tools/X11/setroot/default.nix
index bc7b468caaf8..2c7729eab3ad 100644
--- a/nixpkgs/pkgs/tools/X11/setroot/default.nix
+++ b/nixpkgs/pkgs/tools/X11/setroot/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.vyp ];
     platforms = platforms.unix;
+    mainProgram = "setroot";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/smart-wallpaper/default.nix b/nixpkgs/pkgs/tools/X11/smart-wallpaper/default.nix
index f992838935c7..8f41bb7a78af 100644
--- a/nixpkgs/pkgs/tools/X11/smart-wallpaper/default.nix
+++ b/nixpkgs/pkgs/tools/X11/smart-wallpaper/default.nix
@@ -34,5 +34,6 @@ stdenvNoCC.mkDerivation {
     license = licenses.bsd2;
     maintainers = with maintainers; [ baitinq ];
     platforms = platforms.linux;
+    mainProgram = "smart-wallpaper";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/srandrd/default.nix b/nixpkgs/pkgs/tools/X11/srandrd/default.nix
index 84f43301bbd7..0d51bf4785ec 100644
--- a/nixpkgs/pkgs/tools/X11/srandrd/default.nix
+++ b/nixpkgs/pkgs/tools/X11/srandrd/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = [ maintainers.utdemir ];
+    mainProgram = "srandrd";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/X11/sselp/default.nix b/nixpkgs/pkgs/tools/X11/sselp/default.nix
index d22884270dd4..de083a32028d 100644
--- a/nixpkgs/pkgs/tools/X11/sselp/default.nix
+++ b/nixpkgs/pkgs/tools/X11/sselp/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.mit;
     maintainers = [lib.maintainers.magnetophon ];
     platforms = lib.platforms.linux;
+    mainProgram = "sselp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/sx/default.nix b/nixpkgs/pkgs/tools/X11/sx/default.nix
index f48e59c753eb..d408af8245bc 100644
--- a/nixpkgs/pkgs/tools/X11/sx/default.nix
+++ b/nixpkgs/pkgs/tools/X11/sx/default.nix
@@ -35,5 +35,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ figsoda thiagokokada ];
+    mainProgram = "sx";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/vdpauinfo/default.nix b/nixpkgs/pkgs/tools/X11/vdpauinfo/default.nix
index a5fc87aaf6f2..0ca3354433dc 100644
--- a/nixpkgs/pkgs/tools/X11/vdpauinfo/default.nix
+++ b/nixpkgs/pkgs/tools/X11/vdpauinfo/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit; # expat version
     platforms = platforms.unix;
     maintainers = with maintainers; [ vcunat ];
+    mainProgram = "vdpauinfo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/wayv/default.nix b/nixpkgs/pkgs/tools/X11/wayv/default.nix
index 2bdeff6a5790..eae930de1dd9 100644
--- a/nixpkgs/pkgs/tools/X11/wayv/default.nix
+++ b/nixpkgs/pkgs/tools/X11/wayv/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation rec {
     maintainers = [lib.maintainers.raskin];
     platforms = lib.platforms.linux;
     homepage = "https://github.com/mikemb/wayV";
+    mainProgram = "wayv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/wmctrl/default.nix b/nixpkgs/pkgs/tools/X11/wmctrl/default.nix
index 19a464aff72a..08a3e9c365f4 100644
--- a/nixpkgs/pkgs/tools/X11/wmctrl/default.nix
+++ b/nixpkgs/pkgs/tools/X11/wmctrl/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2;
     platforms = with lib.platforms; all;
     maintainers = [ lib.maintainers.Anton-Latukha ];
+    mainProgram = "wmctrl";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/X11/x11vnc/default.nix b/nixpkgs/pkgs/tools/X11/x11vnc/default.nix
index e9e9e4b4daba..8c48951b2d42 100644
--- a/nixpkgs/pkgs/tools/X11/x11vnc/default.nix
+++ b/nixpkgs/pkgs/tools/X11/x11vnc/default.nix
@@ -57,5 +57,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.gpl2;
     maintainers = with maintainers; [ OPNA2608 ];
+    mainProgram = "x11vnc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/x2vnc/default.nix b/nixpkgs/pkgs/tools/X11/x2vnc/default.nix
index ed4a83fc8de0..8c9648e71d37 100644
--- a/nixpkgs/pkgs/tools/X11/x2vnc/default.nix
+++ b/nixpkgs/pkgs/tools/X11/x2vnc/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     description = "A program to control a remote VNC server";
     platforms = platforms.unix;
     license = licenses.gpl2;
+    mainProgram = "x2vnc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/x2x/default.nix b/nixpkgs/pkgs/tools/X11/x2x/default.nix
index 3a766d63ba97..061f1d190318 100644
--- a/nixpkgs/pkgs/tools/X11/x2x/default.nix
+++ b/nixpkgs/pkgs/tools/X11/x2x/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/dottedmag/x2x";
     license = licenses.bsd3;
     platforms = platforms.linux;
+    mainProgram = "x2x";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xannotate/default.nix b/nixpkgs/pkgs/tools/X11/xannotate/default.nix
index fe6d5cae6ee1..148bbcfe7af4 100644
--- a/nixpkgs/pkgs/tools/X11/xannotate/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xannotate/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     maintainers = [lib.maintainers.raskin];
     platforms = lib.platforms.linux;
     homepage = "https://github.com/blais/xannotate";
+    mainProgram = "xannotate";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xbanish/default.nix b/nixpkgs/pkgs/tools/X11/xbanish/default.nix
index 9aa7e4f5b023..9a8780324b84 100644
--- a/nixpkgs/pkgs/tools/X11/xbanish/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xbanish/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.bsd3;
     maintainers = [lib.maintainers.choochootrain];
     platforms = lib.platforms.linux;
+    mainProgram = "xbanish";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xbindkeys-config/default.nix b/nixpkgs/pkgs/tools/X11/xbindkeys-config/default.nix
index e9d6d42b0689..8a5c07ef96ec 100644
--- a/nixpkgs/pkgs/tools/X11/xbindkeys-config/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xbindkeys-config/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [benley];
     platforms = with lib.platforms; linux;
+    mainProgram = "xbindkeys-config";
   };
 
   patches = [ ./xbindkeys-config-patch1.patch ];
diff --git a/nixpkgs/pkgs/tools/X11/xborders/default.nix b/nixpkgs/pkgs/tools/X11/xborders/default.nix
index f9e78034c3c0..379f976acf45 100644
--- a/nixpkgs/pkgs/tools/X11/xborders/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xborders/default.nix
@@ -53,5 +53,6 @@ python3Packages.buildPythonPackage rec {
     license = licenses.unlicense;
     maintainers = with maintainers; [ elnudev ];
     platforms = platforms.linux;
+    mainProgram = "xborders";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xbrightness/default.nix b/nixpkgs/pkgs/tools/X11/xbrightness/default.nix
index 1445c60ccb19..c022371c01d9 100644
--- a/nixpkgs/pkgs/tools/X11/xbrightness/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xbrightness/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     homepage = "http://shallowsky.com/software";
     license = lib.licenses.mit;
     platforms = lib.platforms.linux;
+    mainProgram = "xbrightness";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xcalib/default.nix b/nixpkgs/pkgs/tools/X11/xcalib/default.nix
index 09d5cde88fe6..4960aff0f7b0 100644
--- a/nixpkgs/pkgs/tools/X11/xcalib/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xcalib/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [];
     platforms = platforms.linux;
+    mainProgram = "xcalib";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xcape/default.nix b/nixpkgs/pkgs/tools/X11/xcape/default.nix
index f8d4376017bd..c62e29cedc15 100644
--- a/nixpkgs/pkgs/tools/X11/xcape/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xcape/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3 ;
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.linux;
+    mainProgram = "xcape";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xchainkeys/default.nix b/nixpkgs/pkgs/tools/X11/xchainkeys/default.nix
index 5c154f8a1116..7a251b30a47b 100644
--- a/nixpkgs/pkgs/tools/X11/xchainkeys/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xchainkeys/default.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation rec {
     description = "A standalone X11 program to create chained key bindings";
     license = lib.licenses.gpl3;
     platforms = lib.platforms.unix;
+    mainProgram = "xchainkeys";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xcwd/default.nix b/nixpkgs/pkgs/tools/X11/xcwd/default.nix
index 6dbd8606485a..897c4af95edc 100644
--- a/nixpkgs/pkgs/tools/X11/xcwd/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xcwd/default.nix
@@ -1,31 +1,32 @@
 { lib, stdenv, fetchFromGitHub, libX11 }:
 
-stdenv.mkDerivation rec {
-  version = "1.0";
+stdenv.mkDerivation (finalAttrs: {
   pname = "xcwd";
+  version = "1.0";
 
   src = fetchFromGitHub {
     owner   = "schischi";
     repo    = "xcwd";
-    rev     = "v${version}";
-    sha256  = "sha256-M6/1H6hI50Cvx40RTKzZXoUui0FGZfwe1IwdaxMJIQo=";
+    rev     = "v${finalAttrs.version}";
+    hash    = "sha256-M6/1H6hI50Cvx40RTKzZXoUui0FGZfwe1IwdaxMJIQo=";
   };
 
   buildInputs = [ libX11 ];
 
   makeFlags = [ "prefix=$(out)" ];
 
-  installPhase = ''
-    install -D xcwd "$out/bin/xcwd"
+  preInstall = ''
+    mkdir -p $out/bin
   '';
 
-  meta = with lib; {
+  meta = {
     description = ''
-      A simple tool which print the current working directory of the currently focused window
+      A simple tool which prints the current working directory of the currently focused window
     '';
     homepage = "https://github.com/schischi/xcwd";
-    maintainers = [ maintainers.grburst ];
-    license = licenses.bsd3;
-    platforms = platforms.linux;
+    license = lib.licenses.bsd3;
+    mainProgram = "xcwd";
+    maintainers = [ lib.maintainers.grburst ];
+    platforms = lib.platforms.linux;
   };
-}
+})
diff --git a/nixpkgs/pkgs/tools/X11/xdotool/default.nix b/nixpkgs/pkgs/tools/X11/xdotool/default.nix
index 736c05c7c7db..bcb48ac44fac 100644
--- a/nixpkgs/pkgs/tools/X11/xdotool/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xdotool/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [viric];
     platforms = with lib.platforms; linux;
+    mainProgram = "xdotool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xgeometry-select/default.nix b/nixpkgs/pkgs/tools/X11/xgeometry-select/default.nix
index 9f9b50feab90..005bf302cc34 100644
--- a/nixpkgs/pkgs/tools/X11/xgeometry-select/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xgeometry-select/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     homepage    = "https://bbs.archlinux.org/viewtopic.php?pid=660837";
     maintainers = with maintainers; [ obadz ];
     platforms   = platforms.linux;
+    mainProgram = "xgeometry-select";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xidlehook/default.nix b/nixpkgs/pkgs/tools/X11/xidlehook/default.nix
index bb86014257b8..c23acbedafdf 100644
--- a/nixpkgs/pkgs/tools/X11/xidlehook/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xidlehook/default.nix
@@ -44,5 +44,6 @@ rustPlatform.buildRustPackage rec {
     maintainers = with maintainers; [ ];
     platforms = platforms.unix;
     badPlatforms = platforms.darwin;
+    mainProgram = "xidlehook";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xinput_calibrator/default.nix b/nixpkgs/pkgs/tools/X11/xinput_calibrator/default.nix
index 25b419ade4e3..d8afb3e4a896 100644
--- a/nixpkgs/pkgs/tools/X11/xinput_calibrator/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xinput_calibrator/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.flosse ];
     platforms = lib.platforms.linux;
+    mainProgram = "xinput_calibrator";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xkb-switch-i3/default.nix b/nixpkgs/pkgs/tools/X11/xkb-switch-i3/default.nix
index 6333c1abc740..975eeb986614 100644
--- a/nixpkgs/pkgs/tools/X11/xkb-switch-i3/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xkb-switch-i3/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ewok ];
     platforms = platforms.linux;
+    mainProgram = "xkb-switch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xkb-switch/default.nix b/nixpkgs/pkgs/tools/X11/xkb-switch/default.nix
index e2f15d969edd..7db592532234 100644
--- a/nixpkgs/pkgs/tools/X11/xkb-switch/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xkb-switch/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ smironov ];
     platforms = platforms.linux;
+    mainProgram = "xkb-switch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xkbset/default.nix b/nixpkgs/pkgs/tools/X11/xkbset/default.nix
index 645770f7e015..9c4bc81744fa 100644
--- a/nixpkgs/pkgs/tools/X11/xkbset/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xkbset/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ drets ];
     platforms = platforms.linux;
     license = licenses.bsd3;
+    mainProgram = "xkbset";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xkbvalidate/default.nix b/nixpkgs/pkgs/tools/X11/xkbvalidate/default.nix
index 92a47aa65638..b39e697f7741 100644
--- a/nixpkgs/pkgs/tools/X11/xkbvalidate/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xkbvalidate/default.nix
@@ -7,6 +7,7 @@ runCommandCC "xkbvalidate" {
     license = lib.licenses.mit;
     platforms = lib.platforms.unix;
     maintainers = [ lib.maintainers.aszlig ];
+    mainProgram = "xkbvalidate";
   };
 } ''
   mkdir -p "$out/bin"
diff --git a/nixpkgs/pkgs/tools/X11/xlayoutdisplay/default.nix b/nixpkgs/pkgs/tools/X11/xlayoutdisplay/default.nix
index 593b40a2ade7..5ab9ca0b86ff 100644
--- a/nixpkgs/pkgs/tools/X11/xlayoutdisplay/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xlayoutdisplay/default.nix
@@ -1,27 +1,23 @@
-{ lib, stdenv, fetchFromGitHub, xorg, boost, gtest }:
+{ lib, stdenv, fetchFromGitHub, pkg-config, xorg, boost, gtest }:
 
 stdenv.mkDerivation rec {
   pname = "xlayoutdisplay";
-  version = "1.3.0";
+  version = "1.5.0";
 
   src = fetchFromGitHub {
     owner = "alex-courtis";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-8K9SoZToJTk/sL4PC4Fcsu9XzGLYfNIZlbIyxc9jf84=";
+    hash = "sha256-A37jFhVTW/3QNEf776Oi3ViRK+ebOPRTsEQqdmNhA7E=";
   };
 
+  nativeBuildInputs = [ pkg-config ];
   buildInputs = with xorg; [ libX11 libXrandr libXcursor boost ];
   nativeCheckInputs = [ gtest ];
 
   doCheck = true;
   checkTarget = "gtest";
 
-  # Fixup reference to hardcoded boost path, dynamically link as seems fine and we don't have static for this
-  postPatch = ''
-    substituteInPlace config.mk --replace '/usr/lib/libboost_program_options.a' '-lboost_program_options'
-  '';
-
   makeFlags = [ "PREFIX=${placeholder "out"}" ];
   enableParallelBuilding = true;
 
@@ -31,5 +27,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ dtzWill ];
     license = licenses.asl20;
     platforms = platforms.linux;
+    mainProgram = "xlayoutdisplay";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xlogo/default.nix b/nixpkgs/pkgs/tools/X11/xlogo/default.nix
index 8c30b34eca75..7b8e9bf52212 100644
--- a/nixpkgs/pkgs/tools/X11/xlogo/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xlogo/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ raboof ];
     platforms = platforms.unix;
     license = licenses.mit;
+    mainProgram = "xlogo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xmcp/default.nix b/nixpkgs/pkgs/tools/X11/xmcp/default.nix
index 178861d63724..228d502c4b7c 100644
--- a/nixpkgs/pkgs/tools/X11/xmcp/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xmcp/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ azahi ];
     platforms = platforms.linux;
+    mainProgram = "xmcp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xmousepasteblock/default.nix b/nixpkgs/pkgs/tools/X11/xmousepasteblock/default.nix
index ec6a5b0b8e11..121ec93b2242 100644
--- a/nixpkgs/pkgs/tools/X11/xmousepasteblock/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xmousepasteblock/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/milaq/XMousePasteBlock";
     license = lib.licenses.gpl2;
     maintainers = [ maintainers.petercommand ];
+    mainProgram = "xmousepasteblock";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xnee/default.nix b/nixpkgs/pkgs/tools/X11/xnee/default.nix
index ac232f917bd7..b6fe79c7b9cf 100644
--- a/nixpkgs/pkgs/tools/X11/xnee/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xnee/default.nix
@@ -74,6 +74,12 @@ stdenv.mkDerivation (finalAttrs: {
     "LDFLAGS=-lXi"
   ];
 
+  # error: call to undeclared function 'xnee_check_key';
+  # ISO C99 and later do not support implicit function declarations
+  env = lib.optionalAttrs stdenv.cc.isClang {
+    NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration";
+  };
+
   # XXX: Actually tests require an X server.
   doCheck = true;
 
diff --git a/nixpkgs/pkgs/tools/X11/xnotify/default.nix b/nixpkgs/pkgs/tools/X11/xnotify/default.nix
index e5c6c31e7dbb..cdd7d54b5294 100644
--- a/nixpkgs/pkgs/tools/X11/xnotify/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xnotify/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ azahi ];
     platforms = platforms.unix;
+    mainProgram = "xnotify";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xob/default.nix b/nixpkgs/pkgs/tools/X11/xob/default.nix
index 71e50248df97..e6e2fc273020 100644
--- a/nixpkgs/pkgs/tools/X11/xob/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xob/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ florentc ];
+    mainProgram = "xob";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xplugd/default.nix b/nixpkgs/pkgs/tools/X11/xplugd/default.nix
index aa07c7f37b1b..f5b81571ef2d 100644
--- a/nixpkgs/pkgs/tools/X11/xplugd/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xplugd/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ akho ];
+    mainProgram = "xplugd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xpointerbarrier/default.nix b/nixpkgs/pkgs/tools/X11/xpointerbarrier/default.nix
index 33271090678f..8621e7644365 100644
--- a/nixpkgs/pkgs/tools/X11/xpointerbarrier/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xpointerbarrier/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.mit;
     maintainers = with maintainers; [ AndersonTorres xzfc ];
     platforms = platforms.linux;
+    mainProgram = "xpointerbarrier";
   };
 })
diff --git a/nixpkgs/pkgs/tools/X11/xprintidle-ng/default.nix b/nixpkgs/pkgs/tools/X11/xprintidle-ng/default.nix
index ec8a2ed459d3..ebe3d2a61992 100644
--- a/nixpkgs/pkgs/tools/X11/xprintidle-ng/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xprintidle-ng/default.nix
@@ -67,5 +67,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Only;
     maintainers = [ lib.maintainers.raskin ];
     platforms = lib.platforms.linux;
+    mainProgram = "xprintidle-ng";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xprintidle/default.nix b/nixpkgs/pkgs/tools/X11/xprintidle/default.nix
index 400306db6efd..4a0d371a7fd6 100644
--- a/nixpkgs/pkgs/tools/X11/xprintidle/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xprintidle/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ fgaz ];
     platforms = platforms.linux;
+    mainProgram = "xprintidle";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xprompt/default.nix b/nixpkgs/pkgs/tools/X11/xprompt/default.nix
index 191b0316fa80..15f7b337c879 100644
--- a/nixpkgs/pkgs/tools/X11/xprompt/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xprompt/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ azahi ];
     platforms = platforms.unix;
+    mainProgram = "xprompt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xrectsel/default.nix b/nixpkgs/pkgs/tools/X11/xrectsel/default.nix
index 8b37a6792424..7eef352aea53 100644
--- a/nixpkgs/pkgs/tools/X11/xrectsel/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xrectsel/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ sikmir ];
     platforms = platforms.linux;
+    mainProgram = "xrectsel";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xrestop/default.nix b/nixpkgs/pkgs/tools/X11/xrestop/default.nix
index dd3766160c01..2837d2a83d73 100644
--- a/nixpkgs/pkgs/tools/X11/xrestop/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xrestop/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ qyliss ];
     platforms = platforms.unix;
     license = licenses.gpl2Plus;
+    mainProgram = "xrestop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xtrace/default.nix b/nixpkgs/pkgs/tools/X11/xtrace/default.nix
index dfd834e67b80..de1ea88266e2 100644
--- a/nixpkgs/pkgs/tools/X11/xtrace/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xtrace/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ viric ];
     platforms = with platforms; linux;
+    mainProgram = "xtrace";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xtruss/default.nix b/nixpkgs/pkgs/tools/X11/xtruss/default.nix
index 9e2ee94efa4a..790312335ab2 100644
--- a/nixpkgs/pkgs/tools/X11/xtruss/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xtruss/default.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation rec {
     homepage = "https://www.chiark.greenend.org.uk/~sgtatham/xtruss";
     license = licenses.mit;
     maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "xtruss";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xvkbd/default.nix b/nixpkgs/pkgs/tools/X11/xvkbd/default.nix
index 32355205d59a..7ed6b355a799 100644
--- a/nixpkgs/pkgs/tools/X11/xvkbd/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xvkbd/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.bennofs ];
     platforms = platforms.linux;
+    mainProgram = "xvkbd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xwallpaper/default.nix b/nixpkgs/pkgs/tools/X11/xwallpaper/default.nix
index 051a3a0d0fe7..df93e10fe194 100644
--- a/nixpkgs/pkgs/tools/X11/xwallpaper/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xwallpaper/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ ivar ];
     platforms = platforms.linux;
+    mainProgram = "xwallpaper";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xwinmosaic/default.nix b/nixpkgs/pkgs/tools/X11/xwinmosaic/default.nix
index 51ba815f1de4..1189fd8f86aa 100644
--- a/nixpkgs/pkgs/tools/X11/xwinmosaic/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xwinmosaic/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.bsd2 ;
     maintainers = [lib.maintainers.raskin];
     platforms = lib.platforms.linux;
+    mainProgram = "xwinmosaic";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xwinwrap/default.nix b/nixpkgs/pkgs/tools/X11/xwinwrap/default.nix
index e5bc5743c28d..d36d2c51de5e 100644
--- a/nixpkgs/pkgs/tools/X11/xwinwrap/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xwinwrap/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     homepage = "https://shantanugoel.com/2008/09/03/shantz-xwinwrap/";
     maintainers = with maintainers; [ infinisil ];
     platforms = platforms.linux;
+    mainProgram = "xwinwrap";
   };
 }
diff --git a/nixpkgs/pkgs/tools/X11/xzoom/default.nix b/nixpkgs/pkgs/tools/X11/xzoom/default.nix
index 7ba6bbee223d..0e368651000d 100644
--- a/nixpkgs/pkgs/tools/X11/xzoom/default.nix
+++ b/nixpkgs/pkgs/tools/X11/xzoom/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.free ;
     maintainers = [lib.maintainers.raskin];
     platforms = lib.platforms.linux;
+    mainProgram = "xzoom";
   };
 }
diff --git a/nixpkgs/pkgs/tools/admin/aliyun-cli/default.nix b/nixpkgs/pkgs/tools/admin/aliyun-cli/default.nix
index 485146a6ae26..eb713b56a050 100644
--- a/nixpkgs/pkgs/tools/admin/aliyun-cli/default.nix
+++ b/nixpkgs/pkgs/tools/admin/aliyun-cli/default.nix
@@ -2,17 +2,17 @@
 
 buildGoModule rec {
   pname = "aliyun-cli";
-  version = "3.0.184";
+  version = "3.0.186";
 
   src = fetchFromGitHub {
     rev = "v${version}";
     owner = "aliyun";
     repo = pname;
     fetchSubmodules = true;
-    sha256 = "sha256-VqHyTwSSBAWbeWjQc1RU5mWTqIA2CJDcL83ElaS++5E=";
+    sha256 = "sha256-Uz34+Z9JH9clAFwbTn8RXxokv0yMD05lrYGexUQwmjo=";
   };
 
-  vendorHash = "sha256-JrzN9ycc3obxOX8NYM1cQ9AfKKPXffugCsiAxEHVBr0=";
+  vendorHash = "sha256-9vrfctA1r0eheCBU0CeTgjs/JVt4CB3o3n5KVeFuaRI=";
 
   subPackages = [ "main" ];
 
diff --git a/nixpkgs/pkgs/tools/admin/awscli2/default.nix b/nixpkgs/pkgs/tools/admin/awscli2/default.nix
index b59f702701f7..37deb7960532 100644
--- a/nixpkgs/pkgs/tools/admin/awscli2/default.nix
+++ b/nixpkgs/pkgs/tools/admin/awscli2/default.nix
@@ -19,10 +19,14 @@ let
           hash = "sha256-i3zml6LyEnUqNcGsQURx3BbEJMlXO+SSa1b/P10jt68=";
         };
       });
-      urllib3 = prev.urllib3.overridePythonAttrs (prev: {
-        format = "setuptools";
+      urllib3 = prev.urllib3.overridePythonAttrs (prev: rec {
+        pyproject = true;
+        version = "1.26.18";
+        nativeBuildInputs = with final; [
+          setuptools
+        ];
         src = prev.src.override {
-          version = "1.26.18";
+          inherit version;
           hash = "sha256-+OzBu6VmdBNFfFKauVW/jGe0XbeZ0VkGYmFxnjKFgKA=";
         };
       });
@@ -32,21 +36,21 @@ let
 in
 with py.pkgs; buildPythonApplication rec {
   pname = "awscli2";
-  version = "2.13.33"; # N.B: if you change this, check if overrides are still up-to-date
-  format = "pyproject";
+  version = "2.14.2"; # N.B: if you change this, check if overrides are still up-to-date
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "aws";
     repo = "aws-cli";
     rev = "refs/tags/${version}";
-    hash = "sha256-5ANfMa7b72z5E1EH9+dJ9avLDBnSEFGqvDOFFzLbZcM=";
+    hash = "sha256-ECP22D4lQzJ/13/oXkOgn97EhRRuXv4vW0FtlwugrNs=";
   };
 
   postPatch = ''
     substituteInPlace pyproject.toml \
       --replace 'cryptography>=3.3.2,<40.0.2' 'cryptography>=3.3.2' \
       --replace 'flit_core>=3.7.1,<3.8.1' 'flit_core>=3.7.1' \
-      --replace 'awscrt>=0.16.4,<=0.19.6' 'awscrt>=0.16.4' \
+      --replace 'awscrt==0.19.18' 'awscrt>=0.19' \
       --replace 'docutils>=0.10,<0.20' 'docutils>=0.10' \
       --replace 'prompt-toolkit>=3.0.24,<3.0.39' 'prompt-toolkit>=3.0.24'
 
@@ -134,7 +138,7 @@ with py.pkgs; buildPythonApplication rec {
 
   meta = with lib; {
     description = "Unified tool to manage your AWS services";
-    homepage = "https://docs.aws.amazon.com/cli/latest/userguide/";
+    homepage = "https://aws.amazon.com/cli/";
     changelog = "https://github.com/aws/aws-cli/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
     maintainers = with maintainers; [ bhipple davegallant bryanasdev000 devusb anthonyroussel ];
diff --git a/nixpkgs/pkgs/tools/admin/azure-cli/default.nix b/nixpkgs/pkgs/tools/admin/azure-cli/default.nix
index 982fc5efa3fb..657ce55e400b 100644
--- a/nixpkgs/pkgs/tools/admin/azure-cli/default.nix
+++ b/nixpkgs/pkgs/tools/admin/azure-cli/default.nix
@@ -5,14 +5,14 @@
 }:
 
 let
-  version = "2.53.1";
+  version = "2.54.0";
 
   src = fetchFromGitHub {
     name = "azure-cli-${version}-src";
     owner = "Azure";
     repo = "azure-cli";
     rev = "azure-cli-${version}";
-    hash = "sha256-++JquLva3ij4NDhXnY7tSQMH4HCtJ8DhZIzE0XguInM=";
+    hash = "sha256-LbGDPZe4AWl6wnZ5GtiiM4O5EsCHEHX420lBIJJ0+Kk=";
   };
 
   # put packages that needs to be overridden in the py package scope
diff --git a/nixpkgs/pkgs/tools/admin/azure-cli/python-packages.nix b/nixpkgs/pkgs/tools/admin/azure-cli/python-packages.nix
index 5cbb6a903d69..ab7760038732 100644
--- a/nixpkgs/pkgs/tools/admin/azure-cli/python-packages.nix
+++ b/nixpkgs/pkgs/tools/admin/azure-cli/python-packages.nix
@@ -28,20 +28,6 @@ let
         pname = "azure-cli-core";
         inherit version src;
 
-        patches = [
-          (fetchpatch {
-            name = "fix-python311.patch";
-            url = "https://github.com/Azure/azure-cli/commit/a5198b578b17de934e15b1c92e369e45323e9658.patch";
-            hash = "sha256-qbyKF6Vvtz8QwY78sG7ptTVcbM2IR+phntOKqsrWetE=";
-            stripLen = 2;
-            includes = [
-              "azure/cli/core/tests/test_command_registration.py"
-              "azure/cli/core/tests/test_help.py"
-              "azure/cli/core/tests/test_parser.py"
-            ];
-          })
-        ];
-
         sourceRoot = "${src.name}/src/azure-cli-core";
 
         propagatedBuildInputs = with self; [
@@ -108,8 +94,48 @@ let
       };
 
       antlr4-python3-runtime = super.antlr4-python3-runtime.override (_: {
-        antlr4 = super.pkgs.antlr4_9;
+        antlr4 = super.pkgs.antlr4_12;
       });
+      azure-mgmt-advisor = overrideAzureMgmtPackage super.azure-mgmt-advisor "9.0.0" "zip" "sha256-/ECLNzFf6EeBtRkST4yxuKwQsvQkHkOdDT4l/WyhjXs=";
+      azure-mgmt-apimanagement = overrideAzureMgmtPackage super.azure-mgmt-apimanagement "4.0.0" "zip" "sha256-AiTjLJ28g80xnrRFLfPUevJgeaxLpuGmvkd3+FskNiw=";
+      azure-mgmt-authorization = overrideAzureMgmtPackage super.azure-mgmt-authorization "4.0.0" "zip" "sha256-abhavAmuZPxyl1vUNDEXDYx+tdFmdUuYqsXzhF3lfcQ=";
+      azure-mgmt-batch = overrideAzureMgmtPackage super.azure-mgmt-batch "17.0.0" "zip" "sha256-hkM4WVLuwxj4qgXsY8Ya7zu7/v37gKdP0Xbf2EqrsWo=";
+      azure-mgmt-billing = overrideAzureMgmtPackage super.azure-mgmt-billing "6.0.0" "zip" "sha256-1PXFpBiKRW/h6zK2xF9VyiBpx0vkHrdpIYQLOfL1wH8=";
+      azure-mgmt-botservice = overrideAzureMgmtPackage super.azure-mgmt-botservice "2.0.0b3" "zip" "sha256-XZGQOeMw8usyQ1tl8j57fZ3uqLshomHY9jO/rbpQOvM=";
+      azure-mgmt-cognitiveservices = overrideAzureMgmtPackage super.azure-mgmt-cognitiveservices "13.5.0" "zip" "sha256-RK8LGbH4J+nN6gnGBUweZgkqUcMrwe9aVtvZtAvFeBU=";
+      azure-mgmt-compute = overrideAzureMgmtPackage super.azure-mgmt-compute "30.3.0" "tar.gz" "sha256-5Sl4Y0D4YqpqIYp61qW+trn7VYM8XKoIUcwzFNBJO2M=";
+      azure-mgmt-containerinstance = overrideAzureMgmtPackage super.azure-mgmt-containerinstance "10.1.0" "zip" "sha256-eNQ3rbKFdPRIyDjtXwH5ztN4GWCYBh3rWdn3AxcEwX4=";
+      azure-mgmt-containerregistry = overrideAzureMgmtPackage super.azure-mgmt-containerregistry "10.1.0" "zip" "sha256-VrX9YfYNvlA8+eNqHCp35BAeQZzQKakZs7ZZKwT8oYc=";
+      azure-mgmt-containerservice = overrideAzureMgmtPackage super.azure-mgmt-containerservice "27.0.0" "tar.gz" "sha256-IdGo2A65YiMJJ8S18Ji+FfnnylNhs8vFOQpfA91wgNM=";
+      azure-mgmt-core = overrideAzureMgmtPackage super.azure-mgmt-core "1.3.2" "zip" "sha256-B/Sv6COlXXBLBI1h7f3BMYwFHtWfJEAyEmNQvpXp1QE=";
+      azure-mgmt-cosmosdb = overrideAzureMgmtPackage super.azure-mgmt-cosmosdb "9.3.0" "tar.gz" "sha256-02DisUN2/auBDhPgE9aUvEvYwoQUQC4NYGD/PQZOl/Y=";
+      azure-mgmt-databoxedge = overrideAzureMgmtPackage super.azure-mgmt-databoxedge "1.0.0" "zip" "sha256-BAkAYrwejwDC9FMVo7zrD7OzR57BR01xuINC4TSZsIc=";
+      azure-mgmt-datalake-nspkg = overrideAzureMgmtPackage super.azure-mgmt-datalake-nspkg "3.0.1" "zip" "sha256-3rGSukIviz7Ccs5OiHNnlvIW8o6lsD8oMx14S3o/SIA=";
+      azure-mgmt-datamigration = overrideAzureMgmtPackage super.azure-mgmt-datamigration "10.0.0" "zip" "sha256-XO5w+X/joJPDy3DCoZDC35Nrdy6UoJ73496x7Rd8nzI=";
+      azure-mgmt-dns = overrideAzureMgmtPackage super.azure-mgmt-dns "8.0.0" "zip" "sha256-QHwtrLM1E/++nKS+Wt216dS64Mt++mE8P31THve/jeg=";
+      azure-mgmt-extendedlocation = overrideAzureMgmtPackage super.azure-mgmt-extendedlocation "1.0.0b2" "zip" "sha256-mjfH35T81JQ97jVgElWmZ8P5MwXVxZQv/QJKNLS3T8A=";
+      azure-mgmt-hdinsight = overrideAzureMgmtPackage super.azure-mgmt-hdinsight "9.0.0" "zip" "sha256-QevcacDR+B0l3TBDjBT/9DMfZmOfVYBbkYuWSer/54o=";
+      azure-mgmt-imagebuilder = overrideAzureMgmtPackage super.azure-mgmt-imagebuilder "1.2.0" "zip" "sha256-XmGIzw+yGYgdaNGZJClFRl531BGsQUH+HESUXGVK6TI=";
+      azure-mgmt-iothubprovisioningservices = overrideAzureMgmtPackage super.azure-mgmt-iothubprovisioningservices "1.1.0" "zip" "sha256-04OoJuff93L62G6IozpmHpEaUbHHHD6nKlkMHVoJvJ4=";
+      azure-mgmt-managementgroups = overrideAzureMgmtPackage super.azure-mgmt-managementgroups "1.0.0" "zip" "sha256-urm9UyocNFV/Wwq5lQ5DHj8Au5boo85m3w9s4q4ZzXM=";
+      azure-mgmt-maps = overrideAzureMgmtPackage super.azure-mgmt-maps "2.0.0" "zip" "sha256-OE4X92potwCk+YhHiUXDqXIXEcBAByWv38tjz4ToXw4=";
+      azure-mgmt-marketplaceordering = overrideAzureMgmtPackage super.azure-mgmt-marketplaceordering "1.1.0" "zip" "sha256-aLOB9SpN9ENdrK1al+HFmsTJgfZn3MqPnQRFNBfWCtg=";
+      azure-mgmt-monitor = overrideAzureMgmtPackage super.azure-mgmt-monitor "5.0.0" "zip" "sha256-eL9KJowxTF7hZJQQQCNJZ7l+rKPFM8wP5vEigt3ZFGE=";
+      azure-mgmt-msi = overrideAzureMgmtPackage super.azure-mgmt-msi "7.0.0" "zip" "sha256-ctRsmmJ4PsTqthm+nRt4/+u9qhZNQG/TA/FjA/NyVrI=";
+      azure-mgmt-privatedns = overrideAzureMgmtPackage super.azure-mgmt-privatedns "1.0.0" "zip" "sha256-tg8W5D97KRWCxfV7rhsIMJbYMD6dmVjiwpInpVzCfEU=";
+      azure-mgmt-recoveryservices = overrideAzureMgmtPackage super.azure-mgmt-recoveryservices "2.5.0" "tar.gz" "sha256-XxowjEhYx5uD/4vY5hGSCSvcarmdbdc5Y2GLHciEurU=";
+      azure-mgmt-recoveryservicesbackup = overrideAzureMgmtPackage super.azure-mgmt-recoveryservicesbackup "7.0.0" "tar.gz" "sha256-GuW6x8JGdBedywum4fDAQ8rwbVU9UgQWgHrFqJ6Uz9A=";
+      azure-mgmt-redhatopenshift = overrideAzureMgmtPackage super.azure-mgmt-redhatopenshift "1.4.0" "tar.gz" "sha256-BL2a2L2AwJWvs0V+VpSGaS8//AWMy5m6rdAPDJPbrEo=";
+      azure-mgmt-redis = overrideAzureMgmtPackage super.azure-mgmt-redis "14.1.0" "zip" "sha256-LO92Wc2+VvsEKiOjVSHXw2o3D69NQlL58m+YqWl6+ig=";
+      azure-mgmt-search = overrideAzureMgmtPackage super.azure-mgmt-search "9.0.0" "zip" "sha256-Gc+qoTa1EE4/YmJvUSqVG+zZ50wfohvWOe/fLJ/vgb0=";
+      azure-mgmt-security = overrideAzureMgmtPackage super.azure-mgmt-security "5.0.0" "zip" "sha256-OLA+/oLCNEzqID/alebQC3rCJ4L6HAtYXNDqLI/z5wI=";
+      azure-mgmt-servicebus = overrideAzureMgmtPackage super.azure-mgmt-servicebus "8.2.0" "zip" "sha256-i+kgjxQdmnifaNuNIZdU/3gGn9j5OQ6fdkS7laO+nsI=";
+      azure-mgmt-servicefabricmanagedclusters = overrideAzureMgmtPackage super.azure-mgmt-servicefabricmanagedclusters "1.0.0" "zip" "sha256-EJyjolHrt92zWg+IKWFKTapwZaFrwTtSyEIu5/mZXOg=";
+      azure-mgmt-storage = overrideAzureMgmtPackage super.azure-mgmt-storage "21.1.0" "tar.gz" "sha256-1tPA6RfJiLye0Eckd9PvP5CIYAnrHZenEZRPg3VjAWI=";
+      azure-mgmt-trafficmanager = overrideAzureMgmtPackage super.azure-mgmt-trafficmanager "1.0.0" "zip" "sha256-R0F2HoA0bE7dTLPycTaOqYBj+ATQFeJFwv4EjtK1lqg=";
+      azure-synapse-managedprivateendpoints = overrideAzureMgmtPackage super.azure-synapse-managedprivateendpoints "0.4.0" "zip" "sha256-kA6urM/9zQEBKySKfQSQCMkoB7dJ7dHJB0ypJIVUwX4=";
+
+      azure-synapse-spark = overrideAzureMgmtPackage super.azure-synapse-spark "0.2.0" "zip" "sha256-OQ5brhweEIrtN2iP4I5NacdC9t3YUiGIVhhqSs3FMuI=";
 
       azure-mgmt-appcontainers = overrideAzureMgmtPackage super.azure-mgmt-appcontainers "2.0.0" "zip"
         "sha256-ccdIdvdgTYPWEZCWqkLc8lEuMuAEERvl5B1huJyBkvU=";
@@ -123,8 +149,8 @@ let
       azure-mgmt-cdn = overrideAzureMgmtPackage super.azure-mgmt-cdn "12.0.0" "zip"
         "sha256-t8PuIYkjS0r1Gs4pJJJ8X9cz8950imQtbVBABnyMnd0=";
 
-      azure-mgmt-rdbms = overrideAzureMgmtPackage super.azure-mgmt-rdbms "10.2.0b10" "zip"
-        "sha256-sM8oZdhv+5WCd4RnMtEmCikTBmzGsap5heKzSbHbRPI=";
+      azure-mgmt-rdbms = overrideAzureMgmtPackage super.azure-mgmt-rdbms "10.2.0b11" "tar.gz"
+        "sha256-A7SwklqAhz4Ey9ar1YWythtVZyQ2Y2RUsa27iMc2mxU=";
 
       azure-mgmt-appconfiguration = overrideAzureMgmtPackage super.azure-mgmt-appconfiguration "3.0.0" "zip"
         "sha256-FJhuVgqNjdRIegP4vUISrAtHvvVle5VQFVITPm4HLEw=";
@@ -132,8 +158,8 @@ let
       azure-mgmt-eventgrid = overrideAzureMgmtPackage super.azure-mgmt-eventgrid "10.2.0b2" "zip"
         "sha256-QcHY1wCwQyVOEdUi06/wEa4dqJH5Ccd33gJ1Sju0qZA=";
 
-      azure-mgmt-iothub = overrideAzureMgmtPackage super.azure-mgmt-iothub "2.3.0" "zip"
-        "sha256-ml+koj52l5o0toAcnsGtsw0tGnO5F/LKq56ovzdmx/A=";
+      azure-mgmt-iothub = overrideAzureMgmtPackage super.azure-mgmt-iothub "3.0.0" "tar.gz"
+        "sha256-2vIfyYxoo1PsYWMYwOYr4EyNaJmWC+jCy/mRZzrItyI=";
 
       azure-mgmt-iotcentral = overrideAzureMgmtPackage super.azure-mgmt-iotcentral "10.0.0b1" "zip"
         "sha256-1CiZuTXYhIb74eGQZUJHHzovYNnnVd3Ydu1UCy2Bu00=";
@@ -154,7 +180,10 @@ let
         "sha256-WvyNgfiliEt6qawqy8Le8eifhxusMkoZbf6YcyY1SBA=";
 
       azure-mgmt-netapp = overrideAzureMgmtPackage super.azure-mgmt-netapp "10.1.0" "zip"
-        "sha256-eJiWTOCk2C79Jotku9bKlu3vU6H8004hWrX+h76MjQM=";
+      "sha256-eJiWTOCk2C79Jotku9bKlu3vU6H8004hWrX+h76MjQM=";
+
+      azure-mgmt-signalr = overrideAzureMgmtPackage super.azure-mgmt-signalr "2.0.0b2" "tar.gz"
+        "sha256-05PUV8ouAKq/xhGxVEWIzDop0a7WDTV5mGVSC4sv9P4=";
 
       azure-mgmt-sql = overrideAzureMgmtPackage super.azure-mgmt-sql "4.0.0b12" "tar.gz"
         "sha256-LJx9cdtqpoHl1pPGYodoA50y8NP4ftbXhY7zohsCPH8=";
@@ -168,8 +197,8 @@ let
       azure-mgmt-eventhub = overrideAzureMgmtPackage super.azure-mgmt-eventhub "10.1.0" "zip"
         "sha256-MZqhSBkwypvEefhoEWEPsBUFidWYD7qAX6edcBDDSSA=";
 
-      azure-mgmt-keyvault = overrideAzureMgmtPackage super.azure-mgmt-keyvault "10.2.3" "zip"
-        "sha256-JDM6F0ToMpUeBlLULih17TLzCbrNdxrGrcq5oIfsybU=";
+      azure-mgmt-keyvault = overrideAzureMgmtPackage super.azure-mgmt-keyvault "10.3.0" "tar.gz"
+        "sha256-GDtBZM8YaLjqfv6qmO2tfSpOFKm9l3woGLErdRUM0qI=";
 
       azure-mgmt-applicationinsights = overrideAzureMgmtPackage super.azure-mgmt-applicationinsights "1.0.0" "zip"
         "sha256-woeix9703hn5LAwxugKGf6xvW433G129qxkoi7RV/Fs=";
@@ -183,8 +212,8 @@ let
       azure-storage-common = overrideAzureMgmtPackage super.azure-storage-common "1.4.2" "tar.gz"
         "sha256-Tsh8dTfUV+yVJS4ORkd+LBzPM3dP/v0F2FRGgssK5AE=";
 
-      azure-keyvault-keys = overrideAzureMgmtPackage super.azure-keyvault-keys "4.8.0b2" "zip"
-        "sha256-VUwQJAwpZIQ8fzBUjUX0ui2yaVkDK7p0fwmnz373XbY=";
+      azure-keyvault-keys = overrideAzureMgmtPackage super.azure-keyvault-keys "4.9.0b3" "tar.gz"
+        "sha256-qoseyf6WqBEG8vPc1hF17K46AWk8Ba8V9KRed4lOlGo=";
 
       azure-mgmt-datalake-store = overrideAzureMgmtPackage super.azure-mgmt-datalake-store "0.5.0" "zip"
         "sha256-k3bTVJVmHRn4rMVgT2ewvFlJOxg1u8SA+aGVL5ABekw=";
diff --git a/nixpkgs/pkgs/tools/admin/exoscale-cli/default.nix b/nixpkgs/pkgs/tools/admin/exoscale-cli/default.nix
index e7d889e9009c..f400d7f537c7 100644
--- a/nixpkgs/pkgs/tools/admin/exoscale-cli/default.nix
+++ b/nixpkgs/pkgs/tools/admin/exoscale-cli/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "exoscale-cli";
-  version = "1.74.4";
+  version = "1.75.0";
 
   src = fetchFromGitHub {
     owner = "exoscale";
     repo = "cli";
     rev = "v${version}";
-    sha256 = "sha256-PzjIcdzEmX+0PRurOX5ZQ4LQnBny9Av8eKhPsyiZb6c=";
+    sha256 = "sha256-9BGcP35nTEHccDKLIBNgZbU2xjtFAKtEHLRt8kTlgv0=";
   };
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/tools/admin/fbvnc/default.nix b/nixpkgs/pkgs/tools/admin/fbvnc/default.nix
index 2bd46f27ab0f..0157f391d66b 100644
--- a/nixpkgs/pkgs/tools/admin/fbvnc/default.nix
+++ b/nixpkgs/pkgs/tools/admin/fbvnc/default.nix
@@ -1,30 +1,38 @@
-{lib, stdenv, fetchFromGitHub}:
+{ lib
+, stdenv
+, fetchFromGitHub
+}:
+
 stdenv.mkDerivation rec {
-  name = "${pname}-${version}";
   pname = "fbvnc";
   version = "1.0.2";
 
   src = fetchFromGitHub {
     owner = "zohead";
     repo = pname;
-    sha256 = "0lkr4j1wsa05av2g9w99rr9w4j4k7a21vp36x0a3h50y8bmgwgm1";
     rev = "783204ff6c92afec33d6d36f7e74f1fcf2b1b601";
+    hash = "sha256-oT7+6kIeFDgU6GbcHYQ6k0jCU84p8fTEVgUozYMkeVI=";
   };
 
-  buildInputs = [];
+  makeFlags = [
+    "CC:=$(CC)"
+  ];
 
   installPhase = ''
-    mkdir -p "$out/bin"
-    cp fbvnc "$out/bin"
-    mkdir -p "$out/share/doc/${pname}"
-    cp README* "$out/share/doc/${pname}"
+    runHook preInstall
+
+    install -Dm555 fbvnc     -t "$out/bin"
+    install -Dm444 README.md -t "$out/share/doc/fbvnc"
+
+    runHook postInstall
   '';
 
   meta = {
     description = "Framebuffer VNC client";
     license = lib.licenses.bsd3;
-    maintainers = [lib.maintainers.raskin];
+    maintainers = [ lib.maintainers.raskin ];
     platforms = lib.platforms.linux;
     homepage = "https://github.com/zohead/fbvnc/";
+    mainProgram = "fbvnc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/admin/fioctl/default.nix b/nixpkgs/pkgs/tools/admin/fioctl/default.nix
index f9e517e091d8..d27e5eb7386d 100644
--- a/nixpkgs/pkgs/tools/admin/fioctl/default.nix
+++ b/nixpkgs/pkgs/tools/admin/fioctl/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "fioctl";
-  version = "0.35";
+  version = "0.38";
 
   src = fetchFromGitHub {
     owner = "foundriesio";
     repo = "fioctl";
     rev = "v${version}";
-    sha256 = "sha256-4lAoUmbNsC0d+yaB+DqHVqz3UMI08rhXIm7rgueeXik=";
+    sha256 = "sha256-MA7mMGZyRbQ4165qB+Q6/gQZP/yaUoZmMCVrPCPZoj4=";
   };
 
-  vendorHash = "sha256-hSllpWjiYOBbANCX7usdAAF1HNAJ79ELK92qEyn8G1c=";
+  vendorHash = "sha256-OmukK6ecaiCRnK6fL238GhkxW4A4yrcR/xelBZzVwqI=";
 
   ldflags = [
     "-s" "-w"
diff --git a/nixpkgs/pkgs/tools/admin/kics/default.nix b/nixpkgs/pkgs/tools/admin/kics/default.nix
index 0cb8be3e4da0..41b1cb98c77d 100644
--- a/nixpkgs/pkgs/tools/admin/kics/default.nix
+++ b/nixpkgs/pkgs/tools/admin/kics/default.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "kics";
-  version = "1.7.10";
+  version = "1.7.11";
 
   src = fetchFromGitHub {
     owner = "Checkmarx";
     repo = "kics";
     rev = "v${version}";
-    hash = "sha256-3guudT+PidrgHcJ6/lA/XWHmZXdvjGOhtpoO+9hkYOY=";
+    hash = "sha256-knNPaxd9/ozQ1LU3O1AYeeRWrM4G7f5NdagD1zcwvQo=";
   };
 
-  vendorHash = "sha256-gJu3B30IPp8A/xgtE5fzThQAtnFbbzr8ZwucAsObBxs=";
+  vendorHash = "sha256-psyFivwS9d6+7S+1T7vonhofxHc0y2btXgc5HSu94Dg=";
 
   subPackages = [ "cmd/console" ];
 
diff --git a/nixpkgs/pkgs/tools/admin/lxd/package.json b/nixpkgs/pkgs/tools/admin/lxd/package.json
deleted file mode 100644
index e30b269605ee..000000000000
--- a/nixpkgs/pkgs/tools/admin/lxd/package.json
+++ /dev/null
@@ -1,104 +0,0 @@
-{
-  "name": "lxd-ui",
-  "version": "0.0.1",
-  "author": "Canonical Webteam",
-  "license": "LGPL-3.0-only",
-  "scripts": {
-    "clean": "rm -rf node_modules yarn-error.log *.log build/ .jekyll-metadata .bundle playwright-report test-results haproxy-local.cfg",
-    "build-html": "cp build/ui/index.html build/index.html",
-    "build": "npx vite build && yarn build-html",
-    "format-js-eslint": "eslint 'src/**/*.{json,jsx,tsx,ts}' 'tests/**/*.ts' --fix",
-    "format-js-prettier": "prettier 'src/**/*.{json,jsx,tsx,ts}' 'tests/**/*.ts' --write",
-    "format-js": "yarn format-js-eslint && yarn format-js-prettier",
-    "lint-scss": "stylelint 'src/**/*.scss'",
-    "lint-js-eslint": "eslint 'src/**/*.{json,tsx,ts}' 'tests/**/*.ts' .eslintrc.js babel.config.js",
-    "lint-js-prettier": "prettier 'src/**/*.{json,tsx,ts}' 'tests/**/*.ts' .eslintrc.js babel.config.js --check",
-    "lint-js": "yarn lint-js-eslint && yarn lint-js-prettier",
-    "hooks-add": "husky install",
-    "hooks-remove": "husky uninstall",
-    "start": "concurrently --kill-others --raw 'vite | grep -v localhost' 'yarn serve'",
-    "serve": "./entrypoint",
-    "test-js": "react-scripts test src/ --watchAll=false"},
-  "dependencies": {
-    "@canonical/react-components": "0.47.0",
-    "@monaco-editor/react": "^4.4.6",
-    "@tanstack/react-query": "^4.14.5",
-    "@use-it/event-listener": "^0.1.7",
-    "axios": "1.3.2",
-    "cytoscape": "3.23.0",
-    "cytoscape-popper": "2.0.0",
-    "formik": "2.2.9",
-    "js-yaml": "4.1.0",
-    "lodash.isequal": "4.5.0",
-    "node-forge": "1.3.1",
-    "parse-prometheus-text-format": "1.1.1",
-    "react": "18.2.0",
-    "react-cytoscapejs": "2.0.0",
-    "react-dom": "18.2.0",
-    "react-router-dom": "6.6.1",
-    "react-scripts": "5.0.1",
-    "react-useportal": "^1.0.17",
-    "serve": "14.1.2",
-    "vanilla-framework": "4.3.0",
-    "xterm-addon-fit": "0.6.0",
-    "xterm-for-react": "1.0.4",
-    "yup": "0.32.11"
-  },
-  "devDependencies": {
-    "@babel/core": "7.20.7",
-    "@babel/eslint-parser": "7.19.1",
-    "@babel/preset-env": "7.20.2",
-    "@babel/preset-react": "7.18.6",
-    "@babel/preset-typescript": "7.18.6",
-    "@playwright/test": "^1.29.1",
-    "@types/cytoscape-popper": "2.0.0",
-    "@types/node-forge": "1.3.1",
-    "@types/react": "18.0.26",
-    "@types/react-cytoscapejs": "1.2.2",
-    "@types/react-dom": "18.0.10",
-    "@types/react-router-dom": "5.3.3",
-    "@types/websocket": "1.0.5",
-    "@typescript-eslint/eslint-plugin": "5.48.0",
-    "@typescript-eslint/parser": "5.48.0",
-    "@vitejs/plugin-react": "^3.1.0",
-    "autoprefixer": "10.4.13",
-    "babel-loader": "9.1.0",
-    "babel-plugin-transform-es2015-modules-commonjs": "6.26.2",
-    "concurrently": "7.6.0",
-    "css-loader": "6.7.3",
-    "eslint": "8.31.0",
-    "eslint-config-prettier": "8.6.0",
-    "eslint-plugin-prettier": "4.2.1",
-    "eslint-plugin-react": "7.31.11",
-    "husky": "8.0.0",
-    "lint-staged": "13.1.1",
-    "monaco-editor": "0.36.1",
-    "postcss": "8.4.20",
-    "postcss-cli": "10.1.0",
-    "prettier": "2.8.1",
-    "sass": "1.57.1",
-    "sass-loader": "13.2.0",
-    "style-loader": "3.3.1",
-    "stylelint": "15.10.1",
-    "stylelint-config-prettier": "9.0.4",
-    "stylelint-config-standard-scss": "6.1.0",
-    "stylelint-order": "5.0.0",
-    "stylelint-prettier": "2.0.0",
-    "stylelint-scss": "4.3.0",
-    "ts-loader": "9.4.2",
-    "typescript": "4.9.4",
-    "vite": "^4.1.0",
-    "vite-tsconfig-paths": "4.0.5"
-  },
-  "lint-staged": {
-    "src/**/*.{json,jsx,ts,tsx}": [
-      "eslint",
-      "prettier --check"
-    ],
-    "tests/**/*.{json,jsx,ts,tsx}": [
-      "eslint",
-      "prettier --check"
-    ],
-    "src/**/*.scss": "stylelint"
-  }
-}
diff --git a/nixpkgs/pkgs/tools/admin/lxd/ui.nix b/nixpkgs/pkgs/tools/admin/lxd/ui.nix
index b0582ef99969..c248199b4ad7 100644
--- a/nixpkgs/pkgs/tools/admin/lxd/ui.nix
+++ b/nixpkgs/pkgs/tools/admin/lxd/ui.nix
@@ -1,35 +1,61 @@
-{ mkYarnPackage
+{ lib
+, stdenv
 , fetchFromGitHub
 , fetchYarnDeps
-, lib
+, nodejs
+, prefetch-yarn-deps
+, yarn
 }:
 
-mkYarnPackage rec {
+stdenv.mkDerivation rec {
   pname = "lxd-ui";
-  version = "0.2";
+  version = "0.4";
 
   src = fetchFromGitHub {
     owner = "canonical";
     repo = "lxd-ui";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-DygWNktangFlAqinBm6wWsRLGmX6yjhmRJ2iU0yjcgk=";
+    hash = "sha256-l9Fp/Vm7NxMCp5QcM8+frFyfahhPG7TyF6NhfU1SEaA=";
   };
 
-  packageJSON = ./package.json;
   offlineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
-    sha256 = "sha256-B1SVCViX1LEFoBLMdFk9qaoayku7Y+zU5c4JEJkLmwE=";
+    hash = "sha256-R6OeaBC6xBHa229YGyc2LDjjenwvS805PW8ueU/o99I=";
   };
 
+  nativeBuildInputs = [
+    nodejs
+    prefetch-yarn-deps
+    yarn
+  ];
+
+  configurePhase = ''
+    runHook preConfigure
+
+    export HOME=$(mktemp -d)
+    yarn config --offline set yarn-offline-mirror "$offlineCache"
+    fixup-yarn-lock yarn.lock
+    yarn --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive install
+    patchShebangs node_modules
+
+    runHook postConfigure
+  '';
+
   buildPhase = ''
+    runHook preBuild
+
     yarn --offline build
+
+    runHook postBuild
   '';
 
   installPhase = ''
-    cp -rv deps/lxd-ui/build/ui/ $out
-  '';
+    runHook preInstall
 
-  doDist = false;
+    cp -r build/ui/ $out
+
+    runHook postInstall
+  '';
 
   meta = {
     description = "Web user interface for LXD.";
diff --git a/nixpkgs/pkgs/tools/admin/pgadmin/default.nix b/nixpkgs/pkgs/tools/admin/pgadmin/default.nix
index 117f02a593ba..0deb3d05b906 100644
--- a/nixpkgs/pkgs/tools/admin/pgadmin/default.nix
+++ b/nixpkgs/pkgs/tools/admin/pgadmin/default.nix
@@ -7,7 +7,7 @@
 , postgresqlTestHook
 , postgresql
 , yarn
-, fixup_yarn_lock
+, prefetch-yarn-deps
 , nodejs
 , fetchpatch
 , server-mode ? true
@@ -165,7 +165,7 @@ pythonPackages.buildPythonApplication rec {
     rm yarn.lock
     cp ${./yarn.lock} yarn.lock
     chmod +w yarn.lock
-    fixup_yarn_lock yarn.lock
+    fixup-yarn-lock yarn.lock
     yarn install --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive
     patchShebangs node_modules/
     yarn webpacker
@@ -189,7 +189,7 @@ pythonPackages.buildPythonApplication rec {
     cp -v ../pkg/pip/setup_pip.py setup.py
   '';
 
-  nativeBuildInputs = with pythonPackages; [ cython pip sphinx yarn fixup_yarn_lock nodejs ];
+  nativeBuildInputs = with pythonPackages; [ cython pip sphinx yarn prefetch-yarn-deps nodejs ];
   buildInputs = [
     zlib
     pythonPackages.wheel
diff --git a/nixpkgs/pkgs/tools/admin/procs/default.nix b/nixpkgs/pkgs/tools/admin/procs/default.nix
index c3f78e6083a9..c72c498f7cb2 100644
--- a/nixpkgs/pkgs/tools/admin/procs/default.nix
+++ b/nixpkgs/pkgs/tools/admin/procs/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "procs";
-  version = "0.14.3";
+  version = "0.14.4";
 
   src = fetchFromGitHub {
     owner = "dalance";
     repo = "procs";
     rev = "v${version}";
-    hash = "sha256-uVbYYJgxYATEmNrMuxA7RYDJWip/paWDCf5An1VGVDo=";
+    hash = "sha256-Gx3HRGWi+t/wT1WrbuHXVyX+cP+JvZV8lBun1Qs8Xys=";
   };
 
-  cargoHash = "sha256-eaerc6cUF35XYFTNn0upydkOIC9M1BRweknrixIEvuk=";
+  cargoHash = "sha256-0eLOAZnHbnvT8qgSfWO/RKXIdRr5wwfUQ9YQ77I6okQ=";
 
   nativeBuildInputs = [ installShellFiles ]
     ++ lib.optionals stdenv.isDarwin [ rustPlatform.bindgenHook ];
diff --git a/nixpkgs/pkgs/tools/admin/qovery-cli/default.nix b/nixpkgs/pkgs/tools/admin/qovery-cli/default.nix
index 0c87e74dbafe..67f863198d09 100644
--- a/nixpkgs/pkgs/tools/admin/qovery-cli/default.nix
+++ b/nixpkgs/pkgs/tools/admin/qovery-cli/default.nix
@@ -8,13 +8,13 @@
 
 buildGoModule rec {
   pname = "qovery-cli";
-  version = "0.74.3";
+  version = "0.74.4";
 
   src = fetchFromGitHub {
     owner = "Qovery";
     repo = "qovery-cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-2FgNH8EVIi4ifkURp2Znh8cPpgsW3m9rJGa7bJr86ZI=";
+    hash = "sha256-QWXb4JBT/MgAsUyn4zaeSaauUDjV1b9mb7JYaoS2oqg=";
   };
 
   vendorHash = "sha256-ilEG1relXYEFPR++oq35qcvnIcXkP4HRAjqxYr3U3XM=";
diff --git a/nixpkgs/pkgs/tools/admin/syft/default.nix b/nixpkgs/pkgs/tools/admin/syft/default.nix
index ae3de220263f..32d46c15f332 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.96.0";
+  version = "0.98.0";
 
   src = fetchFromGitHub {
     owner = "anchore";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-jvX7gUQX6yhk9pV2Rh66Gy6XUQN/XY5jxUYs5RfEL7s=";
+    hash = "sha256-9RHh5wMtJ0QUjrKBTp+4IGKmiNkiz3SWp08aT3DWHzA=";
     # 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-79m0KQ8sLodWY2LMKNdZxKZbiBBOAv6f8eLOKhrCSdU=";
+  vendorHash = "sha256-ht768PXHchgR4sxMDtQc1IEYpd0lflIe0aCQhX6ppZ4=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/tools/admin/wander/default.nix b/nixpkgs/pkgs/tools/admin/wander/default.nix
index ae044374874f..fa7ddbd832e0 100644
--- a/nixpkgs/pkgs/tools/admin/wander/default.nix
+++ b/nixpkgs/pkgs/tools/admin/wander/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "wander";
-  version = "0.11.2";
+  version = "0.12.6";
 
   src = fetchFromGitHub {
     owner = "robinovitch61";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-zAvPtTUrSHeIMy9MgJviyMvMJ0Ny5Nkx6oLwWPSc9bE=";
+    sha256 = "sha256-DYlbMdh5vgf3PjHVRU7F31upOe4QX5t2D3YdR3e736I=";
   };
 
   vendorHash = "sha256-SqDGXV8MpvEQFAkcE1NWvWjdzYsvbO5vA6k+hpY0js0=";
diff --git a/nixpkgs/pkgs/tools/archivers/afio/default.nix b/nixpkgs/pkgs/tools/archivers/afio/default.nix
index 7ef374b5bfe6..d321bd44985d 100644
--- a/nixpkgs/pkgs/tools/archivers/afio/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/afio/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
      * a comprehensive discussion.
      */
     license = lib.licenses.free;
+    mainProgram = "afio";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/arc_unpacker/default.nix b/nixpkgs/pkgs/tools/archivers/arc_unpacker/default.nix
index ee40a7a5ab4a..f293ae49626f 100644
--- a/nixpkgs/pkgs/tools/archivers/arc_unpacker/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/arc_unpacker/default.nix
@@ -85,5 +85,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ midchildan ];
     platforms = platforms.all;
+    mainProgram = "arc_unpacker";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/cabextract/default.nix b/nixpkgs/pkgs/tools/archivers/cabextract/default.nix
index 6268a7826e59..6860b5226771 100644
--- a/nixpkgs/pkgs/tools/archivers/cabextract/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/cabextract/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     license = licenses.gpl3;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "cabextract";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/cpio/default.nix b/nixpkgs/pkgs/tools/archivers/cpio/default.nix
index 0fe726f09977..1b766fed1492 100644
--- a/nixpkgs/pkgs/tools/archivers/cpio/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/cpio/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.all;
     priority = 6; # resolves collision with gnutar's "libexec/rmt"
+    mainProgram = "cpio";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/ctrtool/default.nix b/nixpkgs/pkgs/tools/archivers/ctrtool/default.nix
index 2408f3cf6d6a..74b95a116575 100644
--- a/nixpkgs/pkgs/tools/archivers/ctrtool/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/ctrtool/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
     description = "A tool to extract data from a 3ds rom";
     platforms = platforms.linux;
     maintainers = [ maintainers.marius851000 ];
+    mainProgram = "ctrtool";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/archivers/dumpnar/default.nix b/nixpkgs/pkgs/tools/archivers/dumpnar/default.nix
index e2285574a9a6..e63c79938864 100644
--- a/nixpkgs/pkgs/tools/archivers/dumpnar/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/dumpnar/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl2Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.stephank ];
+    mainProgram = "dumpnar";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/fsarchiver/default.nix b/nixpkgs/pkgs/tools/archivers/fsarchiver/default.nix
index e9265108bb95..40a16f21ab59 100644
--- a/nixpkgs/pkgs/tools/archivers/fsarchiver/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/fsarchiver/default.nix
@@ -40,5 +40,6 @@ in stdenv.mkDerivation {
     license = licenses.lgpl2;
     maintainers = with maintainers; [ ];
     platforms = platforms.linux;
+    mainProgram = "fsarchiver";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/gbl/default.nix b/nixpkgs/pkgs/tools/archivers/gbl/default.nix
index 90c66e8ac7c5..02dbfc683edb 100644
--- a/nixpkgs/pkgs/tools/archivers/gbl/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/gbl/default.nix
@@ -52,5 +52,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/jonas-schievink/gbl";
     license = licenses.mit;
     maintainers = [ maintainers.raboof ];
+    mainProgram = "gbl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/innoextract/default.nix b/nixpkgs/pkgs/tools/archivers/innoextract/default.nix
index d2e1bebb3676..7c66dcb84d00 100644
--- a/nixpkgs/pkgs/tools/archivers/innoextract/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/innoextract/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     license = licenses.zlib;
     maintainers = with maintainers; [ abbradar ];
     platforms = platforms.linux;
+    mainProgram = "innoextract";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/lha/default.nix b/nixpkgs/pkgs/tools/archivers/lha/default.nix
index f6b5c2bd1350..b7d0ac930290 100644
--- a/nixpkgs/pkgs/tools/archivers/lha/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/lha/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation {
     # not a free software license (it has additional requirements on commercial
     # use).
     license = licenses.unfree;
+    mainProgram = "lha";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/maxcso/default.nix b/nixpkgs/pkgs/tools/archivers/maxcso/default.nix
index 1e7fe73728de..e16d557965dd 100644
--- a/nixpkgs/pkgs/tools/archivers/maxcso/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/maxcso/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ david-sawatzke ];
     platforms = platforms.linux ++ platforms.darwin;
     license = licenses.isc;
+    mainProgram = "maxcso";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/ndstool/default.nix b/nixpkgs/pkgs/tools/archivers/ndstool/default.nix
index de7f02ce846a..e612d83d066d 100644
--- a/nixpkgs/pkgs/tools/archivers/ndstool/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/ndstool/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     description = "A tool to unpack and repack nds rom";
     maintainers = [ lib.maintainers.marius851000 ];
     license = lib.licenses.gpl3;
+    mainProgram = "ndstool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/payload_dumper/default.nix b/nixpkgs/pkgs/tools/archivers/payload_dumper/default.nix
index 138f62739f41..ebb717a9e4ce 100644
--- a/nixpkgs/pkgs/tools/archivers/payload_dumper/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/payload_dumper/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation (finalAttrs: {
     description = "Android OTA payload dumper";
     license = licenses.gpl3;
     maintainers = with maintainers; [ DamienCassou ];
+    mainProgram = "payload_dumper";
   };
 })
diff --git a/nixpkgs/pkgs/tools/archivers/pxattr/default.nix b/nixpkgs/pkgs/tools/archivers/pxattr/default.nix
index 57eb7e6f87a1..de4fc45b2611 100644
--- a/nixpkgs/pkgs/tools/archivers/pxattr/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/pxattr/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     maintainers = [ lib.maintainers.vrthra ];
     license = [ lib.licenses.mit ];
     platforms = lib.platforms.unix;
+    mainProgram = "pxattr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/quickbms/default.nix b/nixpkgs/pkgs/tools/archivers/quickbms/default.nix
index b8e1e9fc6f1c..8915dda1e27e 100644
--- a/nixpkgs/pkgs/tools/archivers/quickbms/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/quickbms/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ ];
     platforms = platforms.linux;
+    mainProgram = "quickbms";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/rpmextract/default.nix b/nixpkgs/pkgs/tools/archivers/rpmextract/default.nix
index db768a5d14a2..ed81a23ba7e5 100644
--- a/nixpkgs/pkgs/tools/archivers/rpmextract/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/rpmextract/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation {
     platforms = platforms.all;
     license = licenses.gpl2;
     maintainers = with maintainers; [ abbradar ];
+    mainProgram = "rpmextract";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/runzip/default.nix b/nixpkgs/pkgs/tools/archivers/runzip/default.nix
index fddf90a5d23c..02b6bd45d8e1 100644
--- a/nixpkgs/pkgs/tools/archivers/runzip/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/runzip/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.bsd2;
     maintainers = [ lib.maintainers.raskin ];
     platforms = lib.platforms.unix;
+    mainProgram = "runzip";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/tarlz/default.nix b/nixpkgs/pkgs/tools/archivers/tarlz/default.nix
index 250b0e05c6cd..0f031338cf6c 100644
--- a/nixpkgs/pkgs/tools/archivers/tarlz/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/tarlz/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.all;
     maintainers = with maintainers; [ ehmry ];
+    mainProgram = "tarlz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/undmg/default.nix b/nixpkgs/pkgs/tools/archivers/undmg/default.nix
index 0bbf725d191b..9fe61d594416 100644
--- a/nixpkgs/pkgs/tools/archivers/undmg/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/undmg/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.all;
     maintainers = with maintainers; [ matthewbauer lnl7 ];
+    mainProgram = "undmg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/unshield/default.nix b/nixpkgs/pkgs/tools/archivers/unshield/default.nix
index b3d023df59b7..50d93fea99ff 100644
--- a/nixpkgs/pkgs/tools/archivers/unshield/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/unshield/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/twogood/unshield";
     license = licenses.mit;
     platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "unshield";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/unzoo/default.nix b/nixpkgs/pkgs/tools/archivers/unzoo/default.nix
index c8fd4364ea33..b02d010ac0c9 100644
--- a/nixpkgs/pkgs/tools/archivers/unzoo/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/unzoo/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     license = licenses.publicDomain;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.all;
+    mainProgram = "unzoo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/xarchive/default.nix b/nixpkgs/pkgs/tools/archivers/xarchive/default.nix
index d28e9f31b1ab..d26fdabc1d5d 100644
--- a/nixpkgs/pkgs/tools/archivers/xarchive/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/xarchive/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     maintainers = [ lib.maintainers.domenkozar ];
     license = lib.licenses.gpl2;
     platforms = lib.platforms.all;
+    mainProgram = "xarchive";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/xarchiver/default.nix b/nixpkgs/pkgs/tools/archivers/xarchiver/default.nix
index 84052c475e92..1de4e91ead73 100644
--- a/nixpkgs/pkgs/tools/archivers/xarchiver/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/xarchiver/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     maintainers = [ lib.maintainers.domenkozar ];
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.all;
+    mainProgram = "xarchiver";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/zarchive/default.nix b/nixpkgs/pkgs/tools/archivers/zarchive/default.nix
index 442257779c89..3ef68ae8b71e 100644
--- a/nixpkgs/pkgs/tools/archivers/zarchive/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/zarchive/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/Exzap/ZArchive";
     license = licenses.mit0;
     maintainers = with maintainers; [ zhaofengli ];
+    mainProgram = "zarchive";
   };
 }
diff --git a/nixpkgs/pkgs/tools/archivers/zpaq/default.nix b/nixpkgs/pkgs/tools/archivers/zpaq/default.nix
index 6d0f00f51490..7c394e27d178 100644
--- a/nixpkgs/pkgs/tools/archivers/zpaq/default.nix
+++ b/nixpkgs/pkgs/tools/archivers/zpaq/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus ;
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.linux;
+    mainProgram = "zpaq";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/abcm2ps/default.nix b/nixpkgs/pkgs/tools/audio/abcm2ps/default.nix
index 249b4ba1706c..c91457231716 100644
--- a/nixpkgs/pkgs/tools/audio/abcm2ps/default.nix
+++ b/nixpkgs/pkgs/tools/audio/abcm2ps/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     description = "A command line program which converts ABC to music sheet in PostScript or SVG format";
     platforms = platforms.unix;
     maintainers = [ maintainers.dotlambda ];
+    mainProgram = "abcm2ps";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/abcmidi/default.nix b/nixpkgs/pkgs/tools/audio/abcmidi/default.nix
index 3d5474a0984a..b44f53fce10a 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 = "2023.09.13";
+  version = "2023.11.17";
 
   src = fetchzip {
     url = "https://ifdo.ca/~seymour/runabc/${pname}-${version}.zip";
-    hash = "sha256-rpGINfLuWHu6QA/30aI9B8Hmpfx1o6vstiQn+t0blxA=";
+    hash = "sha256-yWCHK7bi1kCZNWBhaLqilm/ZUv5YXUGi7W3PaRKA7ww=";
   };
 
   meta = with lib; {
diff --git a/nixpkgs/pkgs/tools/audio/accuraterip-checksum/default.nix b/nixpkgs/pkgs/tools/audio/accuraterip-checksum/default.nix
index 161e9848bea6..8658dfb5a7aa 100644
--- a/nixpkgs/pkgs/tools/audio/accuraterip-checksum/default.nix
+++ b/nixpkgs/pkgs/tools/audio/accuraterip-checksum/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ ];
     platforms = with platforms; linux;
+    mainProgram = "accuraterip-checksum";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/acousticbrainz-client/default.nix b/nixpkgs/pkgs/tools/audio/acousticbrainz-client/default.nix
index 651605679684..1d4b59ed2c92 100644
--- a/nixpkgs/pkgs/tools/audio/acousticbrainz-client/default.nix
+++ b/nixpkgs/pkgs/tools/audio/acousticbrainz-client/default.nix
@@ -37,5 +37,6 @@ python3Packages.buildPythonApplication rec {
     # essentia-extractor is only available for those platforms
     platforms = [ "x86_64-linux" "i686-linux" ];
     maintainers = with maintainers; [ ];
+    mainProgram = "abzsubmit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/asap/default.nix b/nixpkgs/pkgs/tools/audio/asap/default.nix
index c4a9b03039c5..ccdb5ed93039 100644
--- a/nixpkgs/pkgs/tools/audio/asap/default.nix
+++ b/nixpkgs/pkgs/tools/audio/asap/default.nix
@@ -6,11 +6,11 @@
 
 stdenv.mkDerivation rec {
   pname = "asap";
-  version = "6.0.0";
+  version = "6.0.1";
 
   src = fetchzip {
     url = "mirror://sourceforge/project/asap/asap/${version}/asap-${version}.tar.gz";
-    sha256 = "sha256-j7vznFI/Yg1yuRvYDmRSyHDfDN7iFV+b6MK2jdnaz6Q=";
+    sha256 = "sha256-nTnnRDYOkTmXfXPS1XIHaC2LHFfZz+gVInQ3satuyDM=";
   };
 
   outputs = [ "out" "dev" ];
diff --git a/nixpkgs/pkgs/tools/audio/audiowaveform/default.nix b/nixpkgs/pkgs/tools/audio/audiowaveform/default.nix
index 11dc8541c5b9..a5fff36322e4 100644
--- a/nixpkgs/pkgs/tools/audio/audiowaveform/default.nix
+++ b/nixpkgs/pkgs/tools/audio/audiowaveform/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = with maintainers; [ edbentley ];
+    mainProgram = "audiowaveform";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/bark/default.nix b/nixpkgs/pkgs/tools/audio/bark/default.nix
index f943b555b010..e866b1a18a3b 100644
--- a/nixpkgs/pkgs/tools/audio/bark/default.nix
+++ b/nixpkgs/pkgs/tools/audio/bark/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage {
     license = lib.licenses.agpl3Only;
     maintainers = with lib.maintainers; [ samw ];
     platforms = lib.platforms.linux;
+    mainProgram = "bark";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/audio/beets/builtin-plugins.nix b/nixpkgs/pkgs/tools/audio/beets/builtin-plugins.nix
index 1fef39ef72f5..e3bc10210441 100644
--- a/nixpkgs/pkgs/tools/audio/beets/builtin-plugins.nix
+++ b/nixpkgs/pkgs/tools/audio/beets/builtin-plugins.nix
@@ -17,20 +17,32 @@
   };
   acousticbrainz.propagatedBuildInputs = [ python3Packages.requests ];
   albumtypes = { };
-  aura.propagatedBuildInputs = with python3Packages; [ flask pillow ];
-  badfiles.wrapperBins = [ mp3val flac ];
+  aura = {
+    propagatedBuildInputs = with python3Packages; [ flask pillow ];
+    testPaths = [ ];
+  };
+  badfiles = {
+    testPaths = [ ];
+    wrapperBins = [ mp3val flac ];
+  };
   bareasc = { };
   beatport.propagatedBuildInputs = [ python3Packages.requests-oauthlib ];
-  bench = { };
-  bpd = { };
-  bpm = { };
-  bpsync = { };
+  bench.testPaths = [ ];
+  bpd.testPaths = [ ];
+  bpm.testPaths = [ ];
+  bpsync.testPaths = [ ];
   bucket = { };
-  chroma.propagatedBuildInputs = [ python3Packages.pyacoustid ];
+  chroma = {
+    propagatedBuildInputs = [ python3Packages.pyacoustid ];
+    testPaths = [ ];
+  };
   convert.wrapperBins = [ ffmpeg ];
-  deezer.propagatedBuildInputs = [ python3Packages.requests ];
+  deezer = {
+    propagatedBuildInputs = [ python3Packages.requests ];
+    testPaths = [ ];
+  };
   discogs.propagatedBuildInputs = with python3Packages; [ discogs-client requests ];
-  duplicates = { };
+  duplicates.testPaths = [ ];
   edit = { };
   embedart = {
     propagatedBuildInputs = with python3Packages; [ pillow ];
@@ -43,32 +55,44 @@
     wrapperBins = [ imagemagick ];
   };
   filefilter = { };
-  fish = { };
-  freedesktop = { };
-  fromfilename = { };
+  fish.testPaths = [ ];
+  freedesktop.testPaths = [ ];
+  fromfilename.testPaths = [ ];
   ftintitle = { };
-  fuzzy = { };
-  gmusic = { };
+  fuzzy.testPaths = [ ];
+  gmusic.testPaths = [ ];
   hook = { };
   ihate = { };
   importadded = { };
   importfeeds = { };
   info = { };
-  inline = { };
+  inline.testPaths = [ ];
   ipfs = { };
   keyfinder.wrapperBins = [ keyfinder-cli ];
-  kodiupdate.propagatedBuildInputs = [ python3Packages.requests ];
+  kodiupdate = {
+    propagatedBuildInputs = [ python3Packages.requests ];
+    testPaths = [ ];
+  };
   lastgenre.propagatedBuildInputs = [ python3Packages.pylast ];
-  lastimport.propagatedBuildInputs = [ python3Packages.pylast ];
-  loadext.propagatedBuildInputs = [ python3Packages.requests ];
+  lastimport = {
+    propagatedBuildInputs = [ python3Packages.pylast ];
+    testPaths = [ ];
+  };
+  loadext = {
+    propagatedBuildInputs = [ python3Packages.requests ];
+    testPaths = [ ];
+  };
   lyrics.propagatedBuildInputs = [ python3Packages.beautifulsoup4 ];
-  mbcollection = { };
+  mbcollection.testPaths = [ ];
   mbsubmit = { };
   mbsync = { };
   metasync = { };
-  missing = { };
+  missing.testPaths = [ ];
   mpdstats.propagatedBuildInputs = [ python3Packages.mpd2 ];
-  mpdupdate.propagatedBuildInputs = [ python3Packages.mpd2 ];
+  mpdupdate = {
+    propagatedBuildInputs = [ python3Packages.mpd2 ];
+    testPaths = [ ];
+  };
   parentwork = { };
   permissions = { };
   play = { };
@@ -76,12 +100,18 @@
   plexupdate = { };
   random = { };
   replaygain.wrapperBins = [ aacgain ffmpeg mp3gain ];
-  rewrite = { };
-  scrub = { };
+  rewrite.testPaths= [ ];
+  scrub.testPaths = [ ];
   smartplaylist = { };
-  sonosupdate.propagatedBuildInputs = [ python3Packages.soco ];
+  sonosupdate = {
+    propagatedBuildInputs = [ python3Packages.soco ];
+    testPaths = [ ];
+  };
   spotify = { };
-  subsonicplaylist.propagatedBuildInputs = [ python3Packages.requests ];
+  subsonicplaylist = {
+    propagatedBuildInputs = [ python3Packages.requests ];
+    testPaths = [ ];
+  };
   subsonicupdate.propagatedBuildInputs = [ python3Packages.requests ];
   the = { };
   thumbnails = {
@@ -89,7 +119,7 @@
     wrapperBins = [ imagemagick ];
   };
   types.testPaths = [ "test/test_types_plugin.py" ];
-  unimported = { };
+  unimported.testPaths = [ ];
   web.propagatedBuildInputs = [ python3Packages.flask ];
   zero = { };
 }
diff --git a/nixpkgs/pkgs/tools/audio/beets/common.nix b/nixpkgs/pkgs/tools/audio/beets/common.nix
index 37faff29c728..d4e589f098e4 100644
--- a/nixpkgs/pkgs/tools/audio/beets/common.nix
+++ b/nixpkgs/pkgs/tools/audio/beets/common.nix
@@ -36,12 +36,12 @@
 let
   inherit (lib) attrNames attrValues concatMap;
 
-  mkPlugin = { enable ? !disableAllPlugins, builtin ? false, propagatedBuildInputs ? [ ], testPaths ? [ ], wrapperBins ? [ ] }: {
-    inherit enable builtin propagatedBuildInputs testPaths wrapperBins;
+  mkPlugin = { name, enable ? !disableAllPlugins, builtin ? false, propagatedBuildInputs ? [ ], testPaths ? [ "test/test_${name}.py" ], wrapperBins ? [ ] }: {
+    inherit name enable builtin propagatedBuildInputs testPaths wrapperBins;
   };
 
   basePlugins = lib.mapAttrs (_: a: { builtin = true; } // a) (import ./builtin-plugins.nix inputs);
-  allPlugins = lib.mapAttrs (_: mkPlugin) (lib.recursiveUpdate basePlugins pluginOverrides);
+  allPlugins = lib.mapAttrs (n: a: mkPlugin { name = n; } // a) (lib.recursiveUpdate basePlugins pluginOverrides);
   builtinPlugins = lib.filterAttrs (_: p: p.builtin) allPlugins;
   enabledPlugins = lib.filterAttrs (_: p: p.enable) allPlugins;
   disabledPlugins = lib.filterAttrs (_: p: !p.enable) allPlugins;
@@ -102,7 +102,7 @@ python3Packages.buildPythonApplication {
     responses
   ] ++ pluginWrapperBins;
 
-  disabledTestPaths = lib.flatten (attrValues (lib.mapAttrs (n: v: v.testPaths ++ [ "test/test_${n}.py" ]) disabledPlugins));
+  disabledTestPaths = lib.flatten (attrValues (lib.mapAttrs (_: v: v.testPaths) disabledPlugins));
   inherit disabledTests;
 
   # Perform extra "sanity checks", before running pytest tests.
diff --git a/nixpkgs/pkgs/tools/audio/beets/default.nix b/nixpkgs/pkgs/tools/audio/beets/default.nix
index c78ccced9a80..ba468895cc41 100644
--- a/nixpkgs/pkgs/tools/audio/beets/default.nix
+++ b/nixpkgs/pkgs/tools/audio/beets/default.nix
@@ -46,6 +46,12 @@ lib.makeExtensible (self: {
       # Pillow 10 compatibility fix, a backport of
       # https://github.com/beetbox/beets/pull/4868, which doesn't apply now
       ./patches/fix-pillow10-compat.patch
+
+      # Sphinx 6 compatibility fix.
+      (fetchpatch {
+        url = "https://github.com/beetbox/beets/commit/2106f471affd1dab35b4b26187b9c74d034528c5.patch";
+        hash = "sha256-V/886dYJW/O55VqU8sd+x/URIFcKhP6j5sUhTGMoxL8=";
+      })
     ];
     disabledTests = [
       # This issue is present on this version alone, and can be removed on the
diff --git a/nixpkgs/pkgs/tools/audio/botamusique/default.nix b/nixpkgs/pkgs/tools/audio/botamusique/default.nix
index 02460f61d93b..85c707bda90c 100644
--- a/nixpkgs/pkgs/tools/audio/botamusique/default.nix
+++ b/nixpkgs/pkgs/tools/audio/botamusique/default.nix
@@ -152,5 +152,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ infinisil ];
+    mainProgram = "botamusique";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/catnip-gtk4/default.nix b/nixpkgs/pkgs/tools/audio/catnip-gtk4/default.nix
index 2175edb0c523..da677d71bc03 100644
--- a/nixpkgs/pkgs/tools/audio/catnip-gtk4/default.nix
+++ b/nixpkgs/pkgs/tools/audio/catnip-gtk4/default.nix
@@ -39,5 +39,6 @@ buildGoModule {
     homepage = "https://github.com/diamondburned/catnip-gtk4";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "catnip-gtk4";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/catnip/default.nix b/nixpkgs/pkgs/tools/audio/catnip/default.nix
index de299738242e..de8a609dfd61 100644
--- a/nixpkgs/pkgs/tools/audio/catnip/default.nix
+++ b/nixpkgs/pkgs/tools/audio/catnip/default.nix
@@ -46,5 +46,6 @@ buildGoModule rec {
     changelog = "https://github.com/noriah/catnip/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "catnip";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/dsp/default.nix b/nixpkgs/pkgs/tools/audio/dsp/default.nix
index e17e211d3402..8c218ab70e8e 100644
--- a/nixpkgs/pkgs/tools/audio/dsp/default.nix
+++ b/nixpkgs/pkgs/tools/audio/dsp/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.isc;
     maintainers = with maintainers; [ aaronjheng ];
     platforms = platforms.linux;
+    mainProgram = "dsp";
   };
 })
diff --git a/nixpkgs/pkgs/tools/audio/essentia-extractor/default.nix b/nixpkgs/pkgs/tools/audio/essentia-extractor/default.nix
index 4fbdd02e4404..de3bf45d10c5 100644
--- a/nixpkgs/pkgs/tools/audio/essentia-extractor/default.nix
+++ b/nixpkgs/pkgs/tools/audio/essentia-extractor/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ lovesegfault ];
     platforms = [ "x86_64-linux" "i686-linux" ];
+    mainProgram = "streaming_extractor_music";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/gvolicon/default.nix b/nixpkgs/pkgs/tools/audio/gvolicon/default.nix
index e15a048b991c..1e552d64cfaa 100644
--- a/nixpkgs/pkgs/tools/audio/gvolicon/default.nix
+++ b/nixpkgs/pkgs/tools/audio/gvolicon/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation {
     platforms = lib.platforms.linux;
     license = lib.licenses.gpl3Plus;
     maintainers = [ lib.maintainers.bennofs ];
+    mainProgram = "gvolicon";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/headset-charge-indicator/default.nix b/nixpkgs/pkgs/tools/audio/headset-charge-indicator/default.nix
index bed9c415c83b..40005ea9a6e1 100644
--- a/nixpkgs/pkgs/tools/audio/headset-charge-indicator/default.nix
+++ b/nixpkgs/pkgs/tools/audio/headset-charge-indicator/default.nix
@@ -58,5 +58,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     maintainers = with maintainers; [ zebreus ];
     license = licenses.bsd2;
+    mainProgram = "headset-charge-indicator.py";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/linuxwave/default.nix b/nixpkgs/pkgs/tools/audio/linuxwave/default.nix
index 98860675dafc..4d86b31c854e 100644
--- a/nixpkgs/pkgs/tools/audio/linuxwave/default.nix
+++ b/nixpkgs/pkgs/tools/audio/linuxwave/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ figsoda ];
     inherit (zig_0_10.meta) platforms;
+    mainProgram = "linuxwave";
   };
 })
diff --git a/nixpkgs/pkgs/tools/audio/mictray/default.nix b/nixpkgs/pkgs/tools/audio/mictray/default.nix
index e757bac96682..d93423e66b49 100644
--- a/nixpkgs/pkgs/tools/audio/mictray/default.nix
+++ b/nixpkgs/pkgs/tools/audio/mictray/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.linux;
     maintainers = [ maintainers.anpryl ];
+    mainProgram = "mictray";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/midimonster/default.nix b/nixpkgs/pkgs/tools/audio/midimonster/default.nix
index ec55367474f5..8ff97968b000 100644
--- a/nixpkgs/pkgs/tools/audio/midimonster/default.nix
+++ b/nixpkgs/pkgs/tools/audio/midimonster/default.nix
@@ -52,5 +52,6 @@ stdenv.mkDerivation {
     license = licenses.bsd2;
     platforms = platforms.unix;
     maintainers = with maintainers; [keldu];
+    mainProgram = "midimonster";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/mp3cat/default.nix b/nixpkgs/pkgs/tools/audio/mp3cat/default.nix
index dbcc458164de..5819eb281b2f 100644
--- a/nixpkgs/pkgs/tools/audio/mp3cat/default.nix
+++ b/nixpkgs/pkgs/tools/audio/mp3cat/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.omnipotententity ];
     platforms = platforms.all;
+    mainProgram = "mp3cat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/mpd-discord-rpc/default.nix b/nixpkgs/pkgs/tools/audio/mpd-discord-rpc/default.nix
index 786f5c062daa..17bc6c6e419f 100644
--- a/nixpkgs/pkgs/tools/audio/mpd-discord-rpc/default.nix
+++ b/nixpkgs/pkgs/tools/audio/mpd-discord-rpc/default.nix
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/JakeStanger/mpd-discord-rpc/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ kranzes ];
+    mainProgram = "mpd-discord-rpc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/mpd-mpris/default.nix b/nixpkgs/pkgs/tools/audio/mpd-mpris/default.nix
index f530ffc5d664..dcf1e467300e 100644
--- a/nixpkgs/pkgs/tools/audio/mpd-mpris/default.nix
+++ b/nixpkgs/pkgs/tools/audio/mpd-mpris/default.nix
@@ -39,5 +39,6 @@ buildGoModule rec {
     homepage = "https://github.com/natsukagami/mpd-mpris";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar ];
+    mainProgram = "mpd-mpris";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/mpd-notification/default.nix b/nixpkgs/pkgs/tools/audio/mpd-notification/default.nix
index 03b632ae7e0e..845056c61414 100644
--- a/nixpkgs/pkgs/tools/audio/mpd-notification/default.nix
+++ b/nixpkgs/pkgs/tools/audio/mpd-notification/default.nix
@@ -56,5 +56,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ CaitlinDavitt ];
     platforms = platforms.unix;
+    mainProgram = "mpd-notification";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/mpd-sima/default.nix b/nixpkgs/pkgs/tools/audio/mpd-sima/default.nix
index 0da82ea0b9aa..b123d2828c4c 100644
--- a/nixpkgs/pkgs/tools/audio/mpd-sima/default.nix
+++ b/nixpkgs/pkgs/tools/audio/mpd-sima/default.nix
@@ -34,5 +34,6 @@ buildPythonApplication rec {
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with lib.maintainers; [ apfelkuchen6 ];
+    mainProgram = "mpd-sima";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/mpdas/default.nix b/nixpkgs/pkgs/tools/audio/mpdas/default.nix
index 8b12b6fc16d7..04251854d48d 100644
--- a/nixpkgs/pkgs/tools/audio/mpdas/default.nix
+++ b/nixpkgs/pkgs/tools/audio/mpdas/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     maintainers = [ maintainers.taketwo ];
     platforms = platforms.all;
+    mainProgram = "mpdas";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/mpdris2/default.nix b/nixpkgs/pkgs/tools/audio/mpdris2/default.nix
index fd8618d6243d..fd4b60f13e05 100644
--- a/nixpkgs/pkgs/tools/audio/mpdris2/default.nix
+++ b/nixpkgs/pkgs/tools/audio/mpdris2/default.nix
@@ -50,5 +50,6 @@ python3.pkgs.buildPythonApplication rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ ];
     platforms = platforms.unix;
+    mainProgram = "mpDris2";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/nanotts/default.nix b/nixpkgs/pkgs/tools/audio/nanotts/default.nix
index a68f1593b646..41214ffe9206 100644
--- a/nixpkgs/pkgs/tools/audio/nanotts/default.nix
+++ b/nixpkgs/pkgs/tools/audio/nanotts/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation {
     license = lib.licenses.asl20;
     maintainers = [ lib.maintainers.strikerlulu ];
     platforms = lib.platforms.linux;
+    mainProgram = "nanotts";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/pasystray/default.nix b/nixpkgs/pkgs/tools/audio/pasystray/default.nix
index c01088466599..20708e82729d 100644
--- a/nixpkgs/pkgs/tools/audio/pasystray/default.nix
+++ b/nixpkgs/pkgs/tools/audio/pasystray/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ exlevan kamilchm ];
     platforms = platforms.linux;
+    mainProgram = "pasystray";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/patray/default.nix b/nixpkgs/pkgs/tools/audio/patray/default.nix
index ff7b55689b8f..e6800d943725 100644
--- a/nixpkgs/pkgs/tools/audio/patray/default.nix
+++ b/nixpkgs/pkgs/tools/audio/patray/default.nix
@@ -38,5 +38,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/pohmelie/patray";
     license = licenses.mit;
     maintainers = with maintainers; [ domenkozar ];
+    mainProgram = "patray";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/picotts/default.nix b/nixpkgs/pkgs/tools/audio/picotts/default.nix
index 137fa838c629..0b470aca5f94 100644
--- a/nixpkgs/pkgs/tools/audio/picotts/default.nix
+++ b/nixpkgs/pkgs/tools/audio/picotts/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.asl20;
     maintainers = [ lib.maintainers.canndrew ];
     platforms = lib.platforms.linux;
+    mainProgram = "pico2wave";
   };
 })
diff --git a/nixpkgs/pkgs/tools/audio/piper/default.nix b/nixpkgs/pkgs/tools/audio/piper/default.nix
index ec55b78c4f8b..1f565b747529 100644
--- a/nixpkgs/pkgs/tools/audio/piper/default.nix
+++ b/nixpkgs/pkgs/tools/audio/piper/default.nix
@@ -70,5 +70,6 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://github.com/rhasspy/piper";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
+    mainProgram = "piper";
   };
 })
diff --git a/nixpkgs/pkgs/tools/audio/pnmixer/default.nix b/nixpkgs/pkgs/tools/audio/pnmixer/default.nix
index da4654a3e5fc..a65cad09b47d 100644
--- a/nixpkgs/pkgs/tools/audio/pnmixer/default.nix
+++ b/nixpkgs/pkgs/tools/audio/pnmixer/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ campadrenalin romildo ];
+    mainProgram = "pnmixer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/pw-volume/default.nix b/nixpkgs/pkgs/tools/audio/pw-volume/default.nix
index 1a7b6c21a502..13e39484b577 100644
--- a/nixpkgs/pkgs/tools/audio/pw-volume/default.nix
+++ b/nixpkgs/pkgs/tools/audio/pw-volume/default.nix
@@ -23,5 +23,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ astro figsoda ];
     platforms = platforms.linux;
+    mainProgram = "pw-volume";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/spotdl/default.nix b/nixpkgs/pkgs/tools/audio/spotdl/default.nix
index 6b7a75bfb61e..9bbceae0b688 100644
--- a/nixpkgs/pkgs/tools/audio/spotdl/default.nix
+++ b/nixpkgs/pkgs/tools/audio/spotdl/default.nix
@@ -9,15 +9,14 @@ let
   python = python3;
 in python.pkgs.buildPythonApplication rec {
   pname = "spotdl";
-  version = "4.2.1";
-
-  format = "pyproject";
+  version = "4.2.2";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "spotDL";
     repo = "spotify-downloader";
     rev = "refs/tags/v${version}";
-    hash = "sha256-xKas3WO3uigY1iFfxIN3+d+5U31vM7cLv08oMef8trc=";
+    hash = "sha256-pJr0OGUI3OcFsmvn9eqkvpFeF1EkHDdNoWc91s8h9O8=";
   };
 
   nativeBuildInputs = with python.pkgs; [
@@ -66,6 +65,9 @@ in python.pkgs.buildPythonApplication rec {
     # require networking
     "tests/test_init.py"
     "tests/test_matching.py"
+    "tests/providers/lyrics"
+    "tests/types"
+    "tests/utils/test_github.py"
     "tests/utils/test_m3u.py"
     "tests/utils/test_metadata.py"
     "tests/utils/test_search.py"
@@ -73,7 +75,6 @@ in python.pkgs.buildPythonApplication rec {
 
   disabledTests = [
     # require networking
-    "test_album_from_url"
     "test_convert"
     "test_download_ffmpeg"
     "test_download_song"
diff --git a/nixpkgs/pkgs/tools/audio/stt/default.nix b/nixpkgs/pkgs/tools/audio/stt/default.nix
index 9f3fcf05b5fa..89ed5f983973 100644
--- a/nixpkgs/pkgs/tools/audio/stt/default.nix
+++ b/nixpkgs/pkgs/tools/audio/stt/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.mpl20;
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ rvolosatovs ];
+    mainProgram = "stt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/tidal-dl/default.nix b/nixpkgs/pkgs/tools/audio/tidal-dl/default.nix
index 2e8ba35e8ce4..eb23a4da3ccd 100644
--- a/nixpkgs/pkgs/tools/audio/tidal-dl/default.nix
+++ b/nixpkgs/pkgs/tools/audio/tidal-dl/default.nix
@@ -21,5 +21,6 @@ buildPythonApplication rec {
     license = lib.licenses.asl20;
     maintainers = [ lib.maintainers.misterio77 ];
     platforms = lib.platforms.all;
+    mainProgram = "tidal-dl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/unflac/default.nix b/nixpkgs/pkgs/tools/audio/unflac/default.nix
index 9fc44469fec9..41068d479706 100644
--- a/nixpkgs/pkgs/tools/audio/unflac/default.nix
+++ b/nixpkgs/pkgs/tools/audio/unflac/default.nix
@@ -30,5 +30,6 @@ buildGoModule rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ felipeqq2 ];
+    mainProgram = "unflac";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/video2midi/default.nix b/nixpkgs/pkgs/tools/audio/video2midi/default.nix
index 2c2ea77de6e7..3d8661da3cab 100644
--- a/nixpkgs/pkgs/tools/audio/video2midi/default.nix
+++ b/nixpkgs/pkgs/tools/audio/video2midi/default.nix
@@ -31,5 +31,6 @@ in pythonPackages.buildPythonApplication rec {
     license = licenses.gpl3Only;
     maintainers = [ ];
     platforms = platforms.linux;
+    mainProgram = "v2m.py";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/volctl/default.nix b/nixpkgs/pkgs/tools/audio/volctl/default.nix
index e0a80f90a719..0d33c586ed37 100644
--- a/nixpkgs/pkgs/tools/audio/volctl/default.nix
+++ b/nixpkgs/pkgs/tools/audio/volctl/default.nix
@@ -53,5 +53,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = [ maintainers.romildo ];
+    mainProgram = "volctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/volumeicon/default.nix b/nixpkgs/pkgs/tools/audio/volumeicon/default.nix
index 00690d016329..cabd145cc6e0 100644
--- a/nixpkgs/pkgs/tools/audio/volumeicon/default.nix
+++ b/nixpkgs/pkgs/tools/audio/volumeicon/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     maintainers = with maintainers; [ bobvanderlinden ];
     license = licenses.gpl3;
+    mainProgram = "volumeicon";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/audio/whisper-ctranslate2/default.nix b/nixpkgs/pkgs/tools/audio/whisper-ctranslate2/default.nix
index dd928ab3e418..452af0a18b40 100644
--- a/nixpkgs/pkgs/tools/audio/whisper-ctranslate2/default.nix
+++ b/nixpkgs/pkgs/tools/audio/whisper-ctranslate2/default.nix
@@ -45,5 +45,6 @@ python3.pkgs.buildPythonApplication {
     changelog = "https://github.com/Softcatala/whisper-ctranslate2/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ happysalada ];
+    mainProgram = "whisper-ctranslate2";
   };
 }
diff --git a/nixpkgs/pkgs/tools/audio/yabridgectl/default.nix b/nixpkgs/pkgs/tools/audio/yabridgectl/default.nix
index 06bca00fc5b0..41d32cd282a5 100644
--- a/nixpkgs/pkgs/tools/audio/yabridgectl/default.nix
+++ b/nixpkgs/pkgs/tools/audio/yabridgectl/default.nix
@@ -43,5 +43,6 @@ rustPlatform.buildRustPackage {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ kira-bruneau ];
     platforms = yabridge.meta.platforms;
+    mainProgram = "yabridgectl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/backup/awsbck/default.nix b/nixpkgs/pkgs/tools/backup/awsbck/default.nix
index d8d54dad392d..1ea9ed72fb22 100644
--- a/nixpkgs/pkgs/tools/backup/awsbck/default.nix
+++ b/nixpkgs/pkgs/tools/backup/awsbck/default.nix
@@ -2,27 +2,25 @@
 , stdenv
 , fetchFromGitHub
 , rustPlatform
-, installShellFiles
 , Security
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "awsbck";
-  version = "0.3.5";
+  version = "0.3.6";
 
   src = fetchFromGitHub {
     owner = "beeb";
     repo = "awsbck";
     rev = "v${version}";
-    hash = "sha256-BitR4f1VzYs5L7hT5OCbBbe4JvPIOPDQ9byKEkfBDBY=";
+    hash = "sha256-qW8UY+klNqzDcfVVCW1O7EARFdgLmnf7g/WcYNfT1SI=";
   };
 
-  cargoHash = "sha256-J5BI6Gv20iAe2XCt1riLATCnlOg+pcj7q2Gzo2ZN0ms=";
-
-  nativeBuildInputs = [ installShellFiles ];
+  cargoHash = "sha256-T/xzhE1XXexyT5ktDxny68zaszEhqKfSmibjs6T2B2E=";
 
   buildInputs = lib.optionals stdenv.isDarwin [ Security ];
 
+  # tests run in CI on the source repo
   doCheck = false;
 
   meta = with lib; {
@@ -30,5 +28,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/beeb/awsbck";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ beeb ];
+    mainProgram = "awsbck";
   };
 }
diff --git a/nixpkgs/pkgs/tools/backup/bdsync/default.nix b/nixpkgs/pkgs/tools/backup/bdsync/default.nix
index bf3afacb9496..8018a1b7cfdf 100644
--- a/nixpkgs/pkgs/tools/backup/bdsync/default.nix
+++ b/nixpkgs/pkgs/tools/backup/bdsync/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ jluttine ];
+    mainProgram = "bdsync";
   };
 }
diff --git a/nixpkgs/pkgs/tools/backup/conserve/default.nix b/nixpkgs/pkgs/tools/backup/conserve/default.nix
index 345bd06e23c0..a3f4dc3f734c 100644
--- a/nixpkgs/pkgs/tools/backup/conserve/default.nix
+++ b/nixpkgs/pkgs/tools/backup/conserve/default.nix
@@ -5,21 +5,22 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "conserve";
-  version = "23.9.0";
+  version = "23.11.0";
 
   src = fetchFromGitHub {
     owner = "sourcefrog";
     repo = "conserve";
     rev = "v${version}";
-    hash = "sha256-QBGuLSW4Uek1ag+QwXvoI8IEDM3j1MAOpScb9tIWrfA=";
+    hash = "sha256-Ck2+3etwfZiDMZHzI2hIBuUKn7L0ZTGEe9yJjXjoRIM=";
   };
 
-  cargoHash = "sha256-fKEktRDydmLJdU2KMDn4T637ogdbvT3OwWCzyIVaymc=";
+  cargoHash = "sha256-tMj1icGNTFpouts1TE6BIiABexV3vmOW9r5Y/7ynUMM=";
 
   meta = with lib; {
     description = "Robust portable backup tool in Rust";
     homepage = "https://github.com/sourcefrog/conserve";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ happysalada ];
+    mainProgram = "conserve";
   };
 }
diff --git a/nixpkgs/pkgs/tools/backup/gphotos-sync/default.nix b/nixpkgs/pkgs/tools/backup/gphotos-sync/default.nix
index 27caf6df4db0..53db44bb2e11 100644
--- a/nixpkgs/pkgs/tools/backup/gphotos-sync/default.nix
+++ b/nixpkgs/pkgs/tools/backup/gphotos-sync/default.nix
@@ -32,6 +32,7 @@ python3.pkgs.buildPythonApplication rec {
   nativeBuildInputs = with python3.pkgs; [
     pythonRelaxDepsHook
     setuptools
+    setuptools-scm
     wheel
   ];
 
@@ -61,7 +62,6 @@ python3.pkgs.buildPythonApplication rec {
   nativeCheckInputs = with python3.pkgs; [
     mock
     pytestCheckHook
-    setuptools-scm
   ];
 
   preCheck = ''
diff --git a/nixpkgs/pkgs/tools/backup/rustic-rs/default.nix b/nixpkgs/pkgs/tools/backup/rustic-rs/default.nix
index 27b7c3541933..c6159a899b04 100644
--- a/nixpkgs/pkgs/tools/backup/rustic-rs/default.nix
+++ b/nixpkgs/pkgs/tools/backup/rustic-rs/default.nix
@@ -1,21 +1,29 @@
-{ lib, fetchFromGitHub, rustPlatform, stdenv, Security, installShellFiles, nix-update-script }:
+{ lib
+, fetchFromGitHub
+, rustPlatform
+, stdenv
+, Security
+, SystemConfiguration
+, installShellFiles
+, nix-update-script
+}:
 
 rustPlatform.buildRustPackage rec {
   pname = "rustic-rs";
-  version = "0.5.4";
+  version = "0.6.1";
 
   src = fetchFromGitHub {
     owner = "rustic-rs";
     repo = "rustic";
     rev = "refs/tags/v${version}";
-    hash = "sha256-LAOU2cnKb+TEWNiXJkpgqNxuU16g/Kc3swGIUc8t9x0=";
+    hash = "sha256-rpIEgQYwfManfgTrhCt6/Q4VBY2yyn4edC6/mz5D7nM=";
   };
 
-  cargoHash = "sha256-OTIdl2x5m90rEwNBu3LL3rFQ0FVS3GDYU7gf8P7CTaQ=";
+  cargoHash = "sha256-q+K887jPB9i9iXpFYXjn3zppAPWNlTc2AG7ivOr77J4=";
 
   nativeBuildInputs = [ installShellFiles ];
 
-  buildInputs = lib.optionals stdenv.isDarwin [ Security ];
+  buildInputs = lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
 
   postInstall = ''
     for shell in {ba,fi,z}sh; do
@@ -29,7 +37,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = {
     homepage = "https://github.com/rustic-rs/rustic";
-    changelog = "https://github.com/rustic-rs/rustic/blob/${src.rev}/changelog/${version}.txt";
+    changelog = "https://github.com/rustic-rs/rustic/blob/${src.rev}/CHANGELOG.md";
     description = "fast, encrypted, deduplicated backups powered by pure Rust";
     mainProgram = "rustic";
     platforms = lib.platforms.linux ++ lib.platforms.darwin;
diff --git a/nixpkgs/pkgs/tools/cd-dvd/bchunk/default.nix b/nixpkgs/pkgs/tools/cd-dvd/bchunk/default.nix
index df8ca279107e..a3677b984818 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/bchunk/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/bchunk/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     description = "A program that converts CD images in BIN/CUE format into a set of ISO and CDR tracks";
     platforms = platforms.unix;
     license = licenses.gpl2;
+    mainProgram = "bchunk";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/bootiso/default.nix b/nixpkgs/pkgs/tools/cd-dvd/bootiso/default.nix
index ee5d4fd8456f..243989d04948 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/bootiso/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/bootiso/default.nix
@@ -56,5 +56,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ muscaln ];
     platforms = platforms.all;
+    mainProgram = "bootiso";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/brasero/default.nix b/nixpkgs/pkgs/tools/cd-dvd/brasero/default.nix
index decd4352ad45..fb57e2d7decb 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/brasero/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/brasero/default.nix
@@ -45,5 +45,6 @@ in stdenv.mkDerivation rec {
     maintainers = [ maintainers.bdimcheff ];
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
+    mainProgram = "brasero";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/ccd2iso/default.nix b/nixpkgs/pkgs/tools/cd-dvd/ccd2iso/default.nix
index 1fe606e6acc2..4885b16aa065 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/ccd2iso/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/ccd2iso/default.nix
@@ -15,5 +15,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ yana ];
     platforms = platforms.unix;
+    mainProgram = "ccd2iso";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/cdi2iso/default.nix b/nixpkgs/pkgs/tools/cd-dvd/cdi2iso/default.nix
index 26768747a46c..f6d0b4e1175f 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/cdi2iso/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/cdi2iso/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ hrdinka ];
     platforms = platforms.all;
+    mainProgram = "cdi2iso";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/cue2pops/default.nix b/nixpkgs/pkgs/tools/cd-dvd/cue2pops/default.nix
index 795589a64ec2..6cb93b3e04be 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/cue2pops/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/cue2pops/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation {
     homepage = "https://github.com/makefu/cue2pops-linux";
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.all;
+    mainProgram = "cue2pops";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/dvd-vr/default.nix b/nixpkgs/pkgs/tools/cd-dvd/dvd-vr/default.nix
index 4375aebe2990..88703b28b582 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/dvd-vr/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/dvd-vr/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
     description = "A utility to identify and optionally copy recordings from a DVD-VR format disc";
     license = licenses.gpl2;
     maintainers = with maintainers; [ fgaz ];
+    mainProgram = "dvd-vr";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/cd-dvd/dvdisaster/default.nix b/nixpkgs/pkgs/tools/cd-dvd/dvdisaster/default.nix
index 55e0e51e5f44..abbda3512e5f 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/dvdisaster/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/dvdisaster/default.nix
@@ -93,5 +93,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
+    mainProgram = "dvdisaster";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/iat/default.nix b/nixpkgs/pkgs/tools/cd-dvd/iat/default.nix
index 083ff35acd78..0f7a1ad442a7 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/iat/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/iat/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation (finalAttr: {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ hughobrien ];
     platforms = platforms.linux;
+    mainProgram = "iat";
   };
 })
diff --git a/nixpkgs/pkgs/tools/cd-dvd/isolyzer/default.nix b/nixpkgs/pkgs/tools/cd-dvd/isolyzer/default.nix
index f13a17e01f79..6f231430fa86 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/isolyzer/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/isolyzer/default.nix
@@ -21,5 +21,6 @@ python3.pkgs.buildPythonApplication rec {
     description = "Verify size of ISO 9660 image against Volume Descriptor fields";
     license = licenses.asl20;
     maintainers = with maintainers; [ mkg20001 ];
+    mainProgram = "isolyzer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/lsdvd/default.nix b/nixpkgs/pkgs/tools/cd-dvd/lsdvd/default.nix
index 59e8bf8843a4..3fd116faea5b 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/lsdvd/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/lsdvd/default.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation rec {
     description = "Display information about audio, video, and subtitle tracks on a DVD";
     license = licenses.gpl2;
     platforms = platforms.linux;
+    mainProgram = "lsdvd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/mdf2iso/default.nix b/nixpkgs/pkgs/tools/cd-dvd/mdf2iso/default.nix
index e737e38d1bd6..b5fcc557b4e1 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/mdf2iso/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/mdf2iso/default.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.unix;
     maintainers = [ maintainers.oxij ];
+    mainProgram = "mdf2iso";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/mkcue/default.nix b/nixpkgs/pkgs/tools/cd-dvd/mkcue/default.nix
index 596164f13ffa..575adecbd521 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/mkcue/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/mkcue/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "mkcue";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/nrg2iso/default.nix b/nixpkgs/pkgs/tools/cd-dvd/nrg2iso/default.nix
index fdde54b596f1..8807466d05a6 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/nrg2iso/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/nrg2iso/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     homepage = "http://gregory.kokanosky.free.fr/v4/linux/nrg2iso.en.html";
     license = licenses.gpl2;
     platforms = platforms.all;
+    mainProgram = "nrg2iso";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/sacd/default.nix b/nixpkgs/pkgs/tools/cd-dvd/sacd/default.nix
index 948c51428402..c24a5e7c15c7 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/sacd/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/sacd/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.gpl3;
     maintainers = [ maintainers.doronbehar ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "sacd";
   };
 })
diff --git a/nixpkgs/pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix b/nixpkgs/pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix
index 80e456d072ce..b0868c885edd 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ ericdallo ];
     homepage = "https://github.com/nwoltman/srt-to-vtt-cl";
     platforms = platforms.unix;
+    mainProgram = "srt-vtt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/uif2iso/default.nix b/nixpkgs/pkgs/tools/cd-dvd/uif2iso/default.nix
index 7a8a6569e533..ae1eff26568f 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/uif2iso/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/uif2iso/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     homepage = "http://aluigi.org/mytoolz.htm#uif2iso";
     license = lib.licenses.gpl1Plus;
     platforms = lib.platforms.linux;
+    mainProgram = "uif2iso";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/unetbootin/default.nix b/nixpkgs/pkgs/tools/cd-dvd/unetbootin/default.nix
index 88fab512b0b8..fb12968aa728 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/unetbootin/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/unetbootin/default.nix
@@ -80,5 +80,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ ebzzry ];
     platforms = platforms.linux;
+    mainProgram = "unetbootin";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/vobcopy/default.nix b/nixpkgs/pkgs/tools/cd-dvd/vobcopy/default.nix
index 2ebe9e5e0a35..dbe192e039bd 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/vobcopy/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/vobcopy/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
 
     maintainers = [ lib.maintainers.bluescreen303 ];
     platforms = lib.platforms.all;
+    mainProgram = "vobcopy";
   };
 }
diff --git a/nixpkgs/pkgs/tools/cd-dvd/vobsub2srt/default.nix b/nixpkgs/pkgs/tools/cd-dvd/vobsub2srt/default.nix
index d56cfdf86c8e..2847c68899fe 100644
--- a/nixpkgs/pkgs/tools/cd-dvd/vobsub2srt/default.nix
+++ b/nixpkgs/pkgs/tools/cd-dvd/vobsub2srt/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3Plus;
     platforms = lib.platforms.unix;
     maintainers = [ lib.maintainers.ttuegel ];
+    mainProgram = "vobsub2srt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/brotli/default.nix b/nixpkgs/pkgs/tools/compression/brotli/default.nix
index 263478e4ba3c..60429f435ec6 100644
--- a/nixpkgs/pkgs/tools/compression/brotli/default.nix
+++ b/nixpkgs/pkgs/tools/compression/brotli/default.nix
@@ -73,5 +73,6 @@ stdenv.mkDerivation (finalAttrs: {
       "libbrotlienc"
     ];
     platforms = platforms.all;
+    mainProgram = "brotli";
   };
 })
diff --git a/nixpkgs/pkgs/tools/compression/bsc/default.nix b/nixpkgs/pkgs/tools/compression/bsc/default.nix
index 93b715f853cf..7d2af1c4898f 100644
--- a/nixpkgs/pkgs/tools/compression/bsc/default.nix
+++ b/nixpkgs/pkgs/tools/compression/bsc/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     # Later commits changed the licence to Apache2 (no release yet, though)
     license = with licenses; [ lgpl3Plus ];
     platforms = platforms.unix;
+    mainProgram = "bsc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/crabz/default.nix b/nixpkgs/pkgs/tools/compression/crabz/default.nix
index b68d3af1a844..f8cb155f272e 100644
--- a/nixpkgs/pkgs/tools/compression/crabz/default.nix
+++ b/nixpkgs/pkgs/tools/compression/crabz/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/sstadick/crabz/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ unlicense /* or */ mit ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "crabz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/dejsonlz4/default.nix b/nixpkgs/pkgs/tools/compression/dejsonlz4/default.nix
index 0dd703035fa9..51c5d485cfa9 100644
--- a/nixpkgs/pkgs/tools/compression/dejsonlz4/default.nix
+++ b/nixpkgs/pkgs/tools/compression/dejsonlz4/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ mt-caret ];
     platforms = platforms.all;
+    mainProgram = "dejsonlz4";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/dtrx/default.nix b/nixpkgs/pkgs/tools/compression/dtrx/default.nix
index 2bfe975d033c..9890112171d8 100644
--- a/nixpkgs/pkgs/tools/compression/dtrx/default.nix
+++ b/nixpkgs/pkgs/tools/compression/dtrx/default.nix
@@ -51,5 +51,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/dtrx-py/dtrx";
     license = licenses.gpl3Plus;
     maintainers = [ ];
+    mainProgram = "dtrx";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/efficient-compression-tool/default.nix b/nixpkgs/pkgs/tools/compression/efficient-compression-tool/default.nix
index 6a9615601276..17c1bfcbcf2b 100644
--- a/nixpkgs/pkgs/tools/compression/efficient-compression-tool/default.nix
+++ b/nixpkgs/pkgs/tools/compression/efficient-compression-tool/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     maintainers = [ maintainers.lunik1 ];
     platforms = platforms.linux;
+    mainProgram = "ect";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/flips/default.nix b/nixpkgs/pkgs/tools/compression/flips/default.nix
index 4ba618556a70..6ee1c03cabce 100644
--- a/nixpkgs/pkgs/tools/compression/flips/default.nix
+++ b/nixpkgs/pkgs/tools/compression/flips/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.xfix ];
     platforms = platforms.linux;
+    mainProgram = "flips";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/hacpack/default.nix b/nixpkgs/pkgs/tools/compression/hacpack/default.nix
index 34722d52ccfd..8d44660898cf 100644
--- a/nixpkgs/pkgs/tools/compression/hacpack/default.nix
+++ b/nixpkgs/pkgs/tools/compression/hacpack/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = [ maintainers.ivar ];
     platforms = platforms.linux;
+    mainProgram = "hacpack";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/hactool/default.nix b/nixpkgs/pkgs/tools/compression/hactool/default.nix
index 2e6e7437fff2..11adbe3ced1b 100644
--- a/nixpkgs/pkgs/tools/compression/hactool/default.nix
+++ b/nixpkgs/pkgs/tools/compression/hactool/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ ivar ];
     platforms = platforms.unix;
+    mainProgram = "hactool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/heatshrink/default.nix b/nixpkgs/pkgs/tools/compression/heatshrink/default.nix
index 290e2dc9d8ca..b5cfb92247af 100644
--- a/nixpkgs/pkgs/tools/compression/heatshrink/default.nix
+++ b/nixpkgs/pkgs/tools/compression/heatshrink/default.nix
@@ -1,6 +1,8 @@
 { lib
 , stdenv
 , fetchFromGitHub
+, cmake
+, fetchpatch
 }:
 
 stdenv.mkDerivation rec {
@@ -14,14 +16,17 @@ stdenv.mkDerivation rec {
     hash = "sha256-Nm9/+JFMDXY1N90hmNFGh755V2sXSRQ4VBN9f8TcsGk=";
   };
 
-  makeFlags = [ "PREFIX=$(out)" ];
+  patches = [
+    # Add CMake build script, wanted by prusa-slicer and libbgcode, which are the only users of this library.
+    (fetchpatch {
+      url = "https://github.com/atomicobject/heatshrink/commit/0886e9ca76552b8e325841e2b820b4563e5d5aba.patch";
+      hash = "sha256-13hy4+/RDaaKgQcdaSbACvMfElUIskvJ+owXqm40feY=";
+    })
+  ];
 
-  preInstall = ''
-    mkdir -p $out/{bin,lib,include}
-  '';
-
-  doCheck = true;
-  checkTarget = "test";
+  nativeBuildInputs = [
+    cmake
+  ];
 
   doInstallCheck = true;
   installCheckPhase = ''
@@ -39,5 +44,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ fgaz ];
     platforms = platforms.all;
+    mainProgram = "heatshrink";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/imagelol/default.nix b/nixpkgs/pkgs/tools/compression/imagelol/default.nix
index 857de32ad886..950b12826b33 100644
--- a/nixpkgs/pkgs/tools/compression/imagelol/default.nix
+++ b/nixpkgs/pkgs/tools/compression/imagelol/default.nix
@@ -54,5 +54,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.ivar ];
     platforms = platforms.unix;
+    mainProgram = "ImageLOL";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/lzbench/default.nix b/nixpkgs/pkgs/tools/compression/lzbench/default.nix
index 93ccc67f7d14..c35f738b2bde 100644
--- a/nixpkgs/pkgs/tools/compression/lzbench/default.nix
+++ b/nixpkgs/pkgs/tools/compression/lzbench/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     description = "In-memory benchmark of open-source LZ77/LZSS/LZMA compressors";
     license = licenses.free;
     platforms = platforms.all;
+    mainProgram = "lzbench";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/lzfse/default.nix b/nixpkgs/pkgs/tools/compression/lzfse/default.nix
index 13764971bb51..e5f104a9aef2 100644
--- a/nixpkgs/pkgs/tools/compression/lzfse/default.nix
+++ b/nixpkgs/pkgs/tools/compression/lzfse/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.bsd3;
     maintainers = with maintainers; [ ];
+    mainProgram = "lzfse";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/lzip/default.nix b/nixpkgs/pkgs/tools/compression/lzip/default.nix
index b41b3c843da6..526e3f8c12fc 100644
--- a/nixpkgs/pkgs/tools/compression/lzip/default.nix
+++ b/nixpkgs/pkgs/tools/compression/lzip/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with maintainers; [ vlaci ];
     platforms = lib.platforms.all;
+    mainProgram = "lzip";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/lziprecover/default.nix b/nixpkgs/pkgs/tools/compression/lziprecover/default.nix
index 38840a07092d..38051d8efbad 100644
--- a/nixpkgs/pkgs/tools/compression/lziprecover/default.nix
+++ b/nixpkgs/pkgs/tools/compression/lziprecover/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with maintainers; [ vlaci ];
     platforms = lib.platforms.all;
+    mainProgram = "lziprecover";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/lzop/default.nix b/nixpkgs/pkgs/tools/compression/lzop/default.nix
index 8bf58d9cc356..64061647667a 100644
--- a/nixpkgs/pkgs/tools/compression/lzop/default.nix
+++ b/nixpkgs/pkgs/tools/compression/lzop/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ ];
     license = licenses.gpl2;
     platforms = platforms.unix;
+    mainProgram = "lzop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/mozlz4a/default.nix b/nixpkgs/pkgs/tools/compression/mozlz4a/default.nix
index 834b7698cf85..a9ab74bc7a59 100644
--- a/nixpkgs/pkgs/tools/compression/mozlz4a/default.nix
+++ b/nixpkgs/pkgs/tools/compression/mozlz4a/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ kira-bruneau pshirshov raskin ];
     platforms = python3.meta.platforms;
     homepage = "https://gist.github.com/Tblue/62ff47bef7f894e92ed5";
+    mainProgram = "mozlz4a";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/nx2elf/default.nix b/nixpkgs/pkgs/tools/compression/nx2elf/default.nix
index d4963487ada1..a068788dc1d8 100644
--- a/nixpkgs/pkgs/tools/compression/nx2elf/default.nix
+++ b/nixpkgs/pkgs/tools/compression/nx2elf/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.unfree; # No license specified upstream
     platforms = [ "x86_64-linux" ]; # Should work on Darwin as well, but this is untested. aarch64-linux fails.
     maintainers = [ maintainers.ivar ];
+    mainProgram = "nx2elf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/offzip/default.nix b/nixpkgs/pkgs/tools/compression/offzip/default.nix
index cc79d29a91d9..e756d4257264 100644
--- a/nixpkgs/pkgs/tools/compression/offzip/default.nix
+++ b/nixpkgs/pkgs/tools/compression/offzip/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with maintainers; [ r-burns ];
     platforms = platforms.unix;
+    mainProgram = "offzip";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/orz/default.nix b/nixpkgs/pkgs/tools/compression/orz/default.nix
index a0c9a4653ca5..b760b0132ef7 100644
--- a/nixpkgs/pkgs/tools/compression/orz/default.nix
+++ b/nixpkgs/pkgs/tools/compression/orz/default.nix
@@ -35,5 +35,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/richox/orz";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "orz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/ouch/default.nix b/nixpkgs/pkgs/tools/compression/ouch/default.nix
index 2c645bf56ebf..b2e4bafc3af1 100644
--- a/nixpkgs/pkgs/tools/compression/ouch/default.nix
+++ b/nixpkgs/pkgs/tools/compression/ouch/default.nix
@@ -41,5 +41,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/ouch-org/ouch/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda psibi ];
+    mainProgram = "ouch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/pbzx/default.nix b/nixpkgs/pkgs/tools/compression/pbzx/default.nix
index 03b984bb6435..44555cd6ddbc 100644
--- a/nixpkgs/pkgs/tools/compression/pbzx/default.nix
+++ b/nixpkgs/pkgs/tools/compression/pbzx/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.gpl3;
     maintainers = [ maintainers.matthewbauer ];
+    mainProgram = "pbzx";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/pixz/default.nix b/nixpkgs/pkgs/tools/compression/pixz/default.nix
index a8463f8abc4e..9eb1d6539cdf 100644
--- a/nixpkgs/pkgs/tools/compression/pixz/default.nix
+++ b/nixpkgs/pkgs/tools/compression/pixz/default.nix
@@ -47,5 +47,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = [ maintainers.raskin ];
     platforms = platforms.unix;
+    mainProgram = "pixz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/plzip/default.nix b/nixpkgs/pkgs/tools/compression/plzip/default.nix
index f8af3a26c8e1..310ae2074973 100644
--- a/nixpkgs/pkgs/tools/compression/plzip/default.nix
+++ b/nixpkgs/pkgs/tools/compression/plzip/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.all;
     maintainers = with maintainers; [ _360ied ];
+    mainProgram = "plzip";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/rzip/default.nix b/nixpkgs/pkgs/tools/compression/rzip/default.nix
index 5f878f8c494f..3d744dfa35fd 100644
--- a/nixpkgs/pkgs/tools/compression/rzip/default.nix
+++ b/nixpkgs/pkgs/tools/compression/rzip/default.nix
@@ -18,11 +18,14 @@ stdenv.mkDerivation rec {
     })
   ];
 
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=implicit-int";
+
   meta = with lib; {
     homepage = "https://rzip.samba.org/";
     description = "Compression program";
     maintainers = with maintainers; [ ];
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
+    mainProgram = "rzip";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/unzrip/default.nix b/nixpkgs/pkgs/tools/compression/unzrip/default.nix
index 78b1278d8411..2e92fadd39a9 100644
--- a/nixpkgs/pkgs/tools/compression/unzrip/default.nix
+++ b/nixpkgs/pkgs/tools/compression/unzrip/default.nix
@@ -31,5 +31,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/quininer/unzrip";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "unzrip";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/upx/default.nix b/nixpkgs/pkgs/tools/compression/upx/default.nix
index 09aab8258a81..9af509100e00 100644
--- a/nixpkgs/pkgs/tools/compression/upx/default.nix
+++ b/nixpkgs/pkgs/tools/compression/upx/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
     description = "The Ultimate Packer for eXecutables";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
+    mainProgram = "upx";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/xar/default.nix b/nixpkgs/pkgs/tools/compression/xar/default.nix
index d4baab17b91f..9c03c41054be 100644
--- a/nixpkgs/pkgs/tools/compression/xar/default.nix
+++ b/nixpkgs/pkgs/tools/compression/xar/default.nix
@@ -23,6 +23,8 @@ stdenv.mkDerivation rec {
       --replace 'openssl/evp.h' 'openssl/crypto.h'
   '';
 
+  configureFlags = lib.optional (fts != null) "LDFLAGS=-lfts";
+
   meta = {
     homepage    = "https://mackyle.github.io/xar/";
     description = "Extensible Archiver";
@@ -42,5 +44,6 @@ stdenv.mkDerivation rec {
     license     = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ copumpkin ];
     platforms   = lib.platforms.all;
+    mainProgram = "xar";
   };
 }
diff --git a/nixpkgs/pkgs/tools/compression/zfp/default.nix b/nixpkgs/pkgs/tools/compression/zfp/default.nix
index fdb005007f1e..145f33a1cf8e 100644
--- a/nixpkgs/pkgs/tools/compression/zfp/default.nix
+++ b/nixpkgs/pkgs/tools/compression/zfp/default.nix
@@ -52,5 +52,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.spease ];
     # 64-bit only
     platforms = platforms.aarch64 ++ platforms.x86_64;
+    mainProgram = "zfp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/bindfs/default.nix b/nixpkgs/pkgs/tools/filesystems/bindfs/default.nix
index dfcf6aba9e08..8614c03ed906 100644
--- a/nixpkgs/pkgs/tools/filesystems/bindfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/bindfs/default.nix
@@ -7,12 +7,12 @@
 }:
 
 stdenv.mkDerivation (finalAttrs: {
-  version = "1.17.4";
+  version = "1.17.5";
   pname = "bindfs";
 
   src = fetchurl {
     url = "https://bindfs.org/downloads/bindfs-${finalAttrs.version}.tar.gz";
-    hash = "sha256-b9Svm6LsK9tgPvjuoqnRLbLl/py+UrhkC0FXNKWfPcw=";
+    hash = "sha256-Wj2xu7soSOtDqzapI8mVgx0xmAd/2J6VHbXQt55i2mQ=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/filesystems/blobfuse/default.nix b/nixpkgs/pkgs/tools/filesystems/blobfuse/default.nix
index 6fbd6b805570..2acd137be736 100644
--- a/nixpkgs/pkgs/tools/filesystems/blobfuse/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/blobfuse/default.nix
@@ -1,18 +1,18 @@
 { lib, buildGoModule, fetchFromGitHub, fuse3, testers, blobfuse }:
 
 let
-  version = "2.1.0";
+  version = "2.1.2";
   src = fetchFromGitHub {
     owner = "Azure";
     repo = "azure-storage-fuse";
     rev = "blobfuse2-${version}";
-    sha256 = "sha256-+MnqIwLuR+YBTowgIQokV0kFzfYtMBdhd/+m9MOrF1Y=";
+    sha256 = "sha256-KzpD+6g1WwviydYE0v5pSH35zC41MrPlk5MitwAIgnE=";
   };
 in buildGoModule {
   pname = "blobfuse";
   inherit version src;
 
-  vendorHash = "sha256-WfVFV/6Owx51rHXyfMp7CRW7aQ3R5BFyfHronQ58Gik=";
+  vendorHash = "sha256-+Z+mkTs/8qCtYcWZIMzsW9MQsC08KDJUHNbxyc6Ro5Y=";
 
   buildInputs = [ fuse3 ];
 
diff --git a/nixpkgs/pkgs/tools/filesystems/dupe-krill/default.nix b/nixpkgs/pkgs/tools/filesystems/dupe-krill/default.nix
index d825c1b0fb09..ee81db5c8707 100644
--- a/nixpkgs/pkgs/tools/filesystems/dupe-krill/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/dupe-krill/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/kornelski/dupe-krill";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ urbas ];
+    mainProgram = "dupe-krill";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/duperemove/default.nix b/nixpkgs/pkgs/tools/filesystems/duperemove/default.nix
index fd2be83691a1..c1d860256804 100644
--- a/nixpkgs/pkgs/tools/filesystems/duperemove/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/duperemove/default.nix
@@ -1,7 +1,6 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, fetchpatch2
 , libgcrypt
 , pkg-config
 , glib
@@ -14,31 +13,22 @@
 
 stdenv.mkDerivation rec {
   pname = "duperemove";
-  version = "0.13";
+  version = "0.14.1";
 
   src = fetchFromGitHub {
     owner = "markfasheh";
     repo = "duperemove";
     rev = "v${version}";
-    hash = "sha256-D3+p8XgokKIHEwZnvOkn7cionVH1gsypcURF+PBpugY=";
+    hash = "sha256-iMv80UKktYOhNfVA3mW6kKv8TwLZaP6MQt24t3Rchk4=";
   };
 
-  patches = [
-    # Use variable instead of hardcoding pkg-config
-    # https://github.com/markfasheh/duperemove/pull/315
-    (fetchpatch2 {
-      url = "https://github.com/markfasheh/duperemove/commit/0e1c62d79a9a79d7bb3e80f1bd528dbf7cb75e22.patch";
-      hash = "sha256-YMMu6LCkBlipEJALukQMwIMcjQEAG5pjGEGeTW9OEJk=";
-    })
-  ];
-
   postPatch = ''
     substituteInPlace util.c --replace \
       "lscpu" "${lib.getBin util-linux}/bin/lscpu"
   '';
 
   nativeBuildInputs = [ pkg-config ];
-  buildInputs = [ libgcrypt glib linuxHeaders sqlite ];
+  buildInputs = [ libgcrypt glib linuxHeaders sqlite util-linux ];
 
   makeFlags = [
     "PREFIX=${placeholder "out"}"
diff --git a/nixpkgs/pkgs/tools/filesystems/dysk/default.nix b/nixpkgs/pkgs/tools/filesystems/dysk/default.nix
index 7ab7d544ab08..2dc4698f8172 100644
--- a/nixpkgs/pkgs/tools/filesystems/dysk/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/dysk/default.nix
@@ -32,5 +32,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/Canop/dysk/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda koral ];
+    mainProgram = "dysk";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/eiciel/default.nix b/nixpkgs/pkgs/tools/filesystems/eiciel/default.nix
index dff1700d73fc..a3f7378c205c 100644
--- a/nixpkgs/pkgs/tools/filesystems/eiciel/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/eiciel/default.nix
@@ -52,5 +52,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ sersorrel ];
     platforms = platforms.linux;
+    mainProgram = "eiciel";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/envfs/default.nix b/nixpkgs/pkgs/tools/filesystems/envfs/default.nix
index ceb6c0412e30..ab47aeb550de 100644
--- a/nixpkgs/pkgs/tools/filesystems/envfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/envfs/default.nix
@@ -1,14 +1,14 @@
 { rustPlatform, lib, fetchFromGitHub, nixosTests }:
 rustPlatform.buildRustPackage rec {
   pname = "envfs";
-  version = "1.0.1";
+  version = "1.0.2";
   src = fetchFromGitHub {
     owner = "Mic92";
     repo = "envfs";
     rev = version;
-    hash = "sha256-ttW1NUCtwnjAoiu7QgLGrlAB2PyY4oXm91LpWhbz8qk=";
+    hash = "sha256-MfKOfI21sRNEBX+v0Wto1YhzrPu3JI7Q4AU333utGpk=";
   };
-  cargoHash = "sha256-BgXKwKD6w/GraBQEq61D7S7m2Q9TnkXNFJEIgDYo9L4=";
+  cargoHash = "sha256-vMXmv8p839EPLCwX6So5ebgr5Z68AqdSaLiWqDoBAt4=";
 
   passthru.tests = {
     envfs = nixosTests.envfs;
diff --git a/nixpkgs/pkgs/tools/filesystems/ext4magic/default.nix b/nixpkgs/pkgs/tools/filesystems/ext4magic/default.nix
index ed9fa6df969b..bb23f58c38c6 100644
--- a/nixpkgs/pkgs/tools/filesystems/ext4magic/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/ext4magic/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = [ maintainers.rkoe ];
+    mainProgram = "ext4magic";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/extundelete/default.nix b/nixpkgs/pkgs/tools/filesystems/extundelete/default.nix
index 276f6139b794..0c3062fb11ca 100644
--- a/nixpkgs/pkgs/tools/filesystems/extundelete/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/extundelete/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = [ maintainers.domenkozar ];
+    mainProgram = "extundelete";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/fatresize/default.nix b/nixpkgs/pkgs/tools/filesystems/fatresize/default.nix
index 8f258a79f7de..80f7e5ecd4ae 100644
--- a/nixpkgs/pkgs/tools/filesystems/fatresize/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/fatresize/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/ya-mouse/fatresize";
     platforms = platforms.linux;
     license = licenses.gpl3;
+    mainProgram = "fatresize";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/fatsort/default.nix b/nixpkgs/pkgs/tools/filesystems/fatsort/default.nix
index ef7111dd72ff..d1604e49a32e 100644
--- a/nixpkgs/pkgs/tools/filesystems/fatsort/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/fatsort/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.kovirobi ];
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
+    mainProgram = "fatsort";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/file-rename/default.nix b/nixpkgs/pkgs/tools/filesystems/file-rename/default.nix
index 133f446f8a98..8bc7a899cd3b 100644
--- a/nixpkgs/pkgs/tools/filesystems/file-rename/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/file-rename/default.nix
@@ -26,5 +26,6 @@ perlPackages.buildPerlPackage {
     description = "Perl extension for renaming multiple files";
     license = licenses.artistic1;
     maintainers = with maintainers; [ peterhoeg ];
+    mainProgram = "rename";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/fuse-7z-ng/default.nix b/nixpkgs/pkgs/tools/filesystems/fuse-7z-ng/default.nix
index dad5d2dd9e6c..86db1f4872a4 100644
--- a/nixpkgs/pkgs/tools/filesystems/fuse-7z-ng/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/fuse-7z-ng/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     '';
     platforms = platforms.linux;
     license = licenses.gpl3Plus;
+    mainProgram = "fuse-7z-ng";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/fuse-archive/default.nix b/nixpkgs/pkgs/tools/filesystems/fuse-archive/default.nix
index 031232acbe38..58f48a264498 100644
--- a/nixpkgs/pkgs/tools/filesystems/fuse-archive/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/fuse-archive/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
     changelog = "https://github.com/google/fuse-archive/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ icyrockcom ];
+    mainProgram = "fuse-archive";
   };
 
   inherit (fuse.meta) platforms;
diff --git a/nixpkgs/pkgs/tools/filesystems/fuse-ext2/darwin-no-installer.patch b/nixpkgs/pkgs/tools/filesystems/fuse-ext2/darwin-no-installer.patch
new file mode 100644
index 000000000000..6886bc4fd172
--- /dev/null
+++ b/nixpkgs/pkgs/tools/filesystems/fuse-ext2/darwin-no-installer.patch
@@ -0,0 +1,31 @@
+diff --git a/fuse-ext2/Makefile.am b/fuse-ext2/Makefile.am
+index 9d3a065..c73f337 100644
+--- a/fuse-ext2/Makefile.am
++++ b/fuse-ext2/Makefile.am
+@@ -113,7 +113,7 @@ fuse_ext2_CFLAGS = \
+ 	-DHAVE_CONFIG_H \
+ 	-I/usr/local/include
+ 
+-if DARWIN
++if FALSE
+ bin_PROGRAMS += \
+ 	fuse-ext2.wait \
+ 	fuse-ext2.install \
+@@ -151,9 +151,6 @@ endif
+ if DARWIN
+ install-exec-local:
+ 	$(INSTALL) -d "$(DESTDIR)/$(sbindir)"
+-	$(LN_S) -f "/Library/Filesystems/fuse-ext2.fs/Contents/Resources/mount_fuse-ext2" "$(DESTDIR)/$(sbindir)/mount_fuse-ext2"
+-	$(LN_S) -f "/usr/local/opt/e2fsprogs/sbin/e2label" "$(DESTDIR)/$(sbindir)/e2label"
+-	$(LN_S) -f "/usr/local/opt/e2fsprogs/sbin/mke2fs" "$(DESTDIR)/$(sbindir)/mke2fs"
+ endif
+ if LINUX
+ install-data-hook:
+diff --git a/tools/Makefile.am b/tools/Makefile.am
+index 52f81e1..78c418f 100644
+--- a/tools/Makefile.am
++++ b/tools/Makefile.am
+@@ -1,2 +1,2 @@
+ 
+-SUBDIRS = macosx
++SUBDIRS =
diff --git a/nixpkgs/pkgs/tools/filesystems/fuse-ext2/default.nix b/nixpkgs/pkgs/tools/filesystems/fuse-ext2/default.nix
new file mode 100644
index 000000000000..aaff185a4a1b
--- /dev/null
+++ b/nixpkgs/pkgs/tools/filesystems/fuse-ext2/default.nix
@@ -0,0 +1,46 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, e2fsprogs
+, fuse
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "fuse-ext2";
+  version = "unstable-2020-07-12";
+
+  src = fetchFromGitHub {
+    owner = "alperakcan";
+    repo = "fuse-ext2";
+    rev = "899f17c982dadcea13aa447c3a83c53b9431435a";
+    sha256 = "AE7Z+HePAy/h2TCNI9tsz6GVLdnE2AIOM3GnQzerKn8=";
+  };
+
+  patches = [
+    # Remove references to paths outside the nix store
+    ./remove-impure-paths.patch
+    # Don't build macOS desktop installer
+    ./darwin-no-installer.patch
+  ];
+
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+
+  buildInputs = [
+    e2fsprogs
+    fuse
+  ];
+
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=incompatible-function-pointer-types";
+
+  meta = with lib; {
+    description = "FUSE module to mount ext2, ext3 and ext4 with read write support";
+    homepage = "https://github.com/alperakcan/fuse-ext2";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ emilytrau ];
+    platforms = platforms.unix;
+    mainProgram = "fuse-ext2";
+  };
+})
diff --git a/nixpkgs/pkgs/tools/filesystems/fuse-ext2/remove-impure-paths.patch b/nixpkgs/pkgs/tools/filesystems/fuse-ext2/remove-impure-paths.patch
new file mode 100644
index 000000000000..02a8b1e5a826
--- /dev/null
+++ b/nixpkgs/pkgs/tools/filesystems/fuse-ext2/remove-impure-paths.patch
@@ -0,0 +1,35 @@
+diff --git a/fuse-ext2/Makefile.am b/fuse-ext2/Makefile.am
+index 9d3a065..0bb4341 100644
+--- a/fuse-ext2/Makefile.am
++++ b/fuse-ext2/Makefile.am
+@@ -17,8 +17,7 @@ fuse_ext2_probe_SOURCES = \
+ 
+ fuse_ext2_probe_CFLAGS = \
+ 	-Wall \
+-	-DHAVE_CONFIG_H \
+-	-I/usr/local/include
++	-DHAVE_CONFIG_H
+ 
+ fuse_ext2_SOURCES =	\
+ 	fuse-ext2.h \
+@@ -98,9 +97,7 @@ umfuseext2_la_CFLAGS = \
+ 	-Wall \
+ 	-DHAVE_CONFIG_H \
+ 	-D_GNU_SOURCE \
+-	$(DEVELFLAGS) \
+-	-I$(includedir)/umview \
+-	-I/usr/local/include
++	$(DEVELFLAGS)
+ 
+ umfuseext2_la_LDFLAGS = \
+ 	-module \
+@@ -110,8 +107,7 @@ umfuseext2_la_LDFLAGS = \
+ 
+ fuse_ext2_CFLAGS = \
+ 	-Wall \
+-	-DHAVE_CONFIG_H \
+-	-I/usr/local/include
++	-DHAVE_CONFIG_H
+ 
+ if DARWIN
+ bin_PROGRAMS += \
diff --git a/nixpkgs/pkgs/tools/filesystems/fuse-overlayfs/default.nix b/nixpkgs/pkgs/tools/filesystems/fuse-overlayfs/default.nix
index b417c9654292..6afbda9f27cd 100644
--- a/nixpkgs/pkgs/tools/filesystems/fuse-overlayfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/fuse-overlayfs/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ ma9e ] ++ teams.podman.members;
     platforms = platforms.linux;
     inherit (src.meta) homepage;
+    mainProgram = "fuse-overlayfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/fuseiso/default.nix b/nixpkgs/pkgs/tools/filesystems/fuseiso/default.nix
index 7e44e7c15f9c..b731e9c7cc96 100644
--- a/nixpkgs/pkgs/tools/filesystems/fuseiso/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/fuseiso/default.nix
@@ -51,5 +51,6 @@ stdenv.mkDerivation rec {
     homepage = "https://sourceforge.net/projects/fuseiso";
     license = licenses.gpl2;
     platforms = platforms.linux;
+    mainProgram = "fuseiso";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/fwanalyzer/default.nix b/nixpkgs/pkgs/tools/filesystems/fwanalyzer/default.nix
index a0b1d2df1435..26fd45fa90ea 100644
--- a/nixpkgs/pkgs/tools/filesystems/fwanalyzer/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/fwanalyzer/default.nix
@@ -35,5 +35,6 @@ buildGoModule rec {
     homepage = "https://github.com/cruise-automation/fwanalyzer";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "fwanalyzer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/garage/default.nix b/nixpkgs/pkgs/tools/filesystems/garage/default.nix
index fe72905d0fbe..894840d2dd04 100644
--- a/nixpkgs/pkgs/tools/filesystems/garage/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/garage/default.nix
@@ -73,6 +73,7 @@ let
       maintainers = with lib.maintainers; [ nickcao _0x4A6F teutat3s raitobezarius ];
       knownVulnerabilities = (lib.optional eol "Garage version ${version} is EOL");
       inherit broken;
+      mainProgram = "garage";
     };
   };
 in
diff --git a/nixpkgs/pkgs/tools/filesystems/genext2fs/default.nix b/nixpkgs/pkgs/tools/filesystems/genext2fs/default.nix
index ecd77781d39b..b640c99dc82f 100644
--- a/nixpkgs/pkgs/tools/filesystems/genext2fs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/genext2fs/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.all;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "genext2fs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/genimage/default.nix b/nixpkgs/pkgs/tools/filesystems/genimage/default.nix
index 0961ad904f3f..ab93f4233d8f 100644
--- a/nixpkgs/pkgs/tools/filesystems/genimage/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/genimage/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "genimage";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/genromfs/default.nix b/nixpkgs/pkgs/tools/filesystems/genromfs/default.nix
index 3427ce54a172..6c40c4ad94cd 100644
--- a/nixpkgs/pkgs/tools/filesystems/genromfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/genromfs/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ ];
     platforms = platforms.all;
+    mainProgram = "genromfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/gitfs/default.nix b/nixpkgs/pkgs/tools/filesystems/gitfs/default.nix
index f49f555983f3..c5e388fc5ffb 100644
--- a/nixpkgs/pkgs/tools/filesystems/gitfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/gitfs/default.nix
@@ -39,5 +39,6 @@ python3Packages.buildPythonApplication rec {
     license = lib.licenses.asl20;
     platforms = lib.platforms.unix;
     maintainers = [ lib.maintainers.robbinch ];
+    mainProgram = "gitfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/go-mtpfs/default.nix b/nixpkgs/pkgs/tools/filesystems/go-mtpfs/default.nix
index f82e5b7c362a..f3ed4fb6ab98 100644
--- a/nixpkgs/pkgs/tools/filesystems/go-mtpfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/go-mtpfs/default.nix
@@ -30,5 +30,6 @@ buildGoModule rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ ];
     broken = stdenv.isDarwin;
+    mainProgram = "go-mtpfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/goofys/default.nix b/nixpkgs/pkgs/tools/filesystems/goofys/default.nix
index 0c250eaeb4f4..30c78ad31993 100644
--- a/nixpkgs/pkgs/tools/filesystems/goofys/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/goofys/default.nix
@@ -31,6 +31,7 @@ buildGoModule {
     license = [ lib.licenses.mit ];
     maintainers = [ lib.maintainers.adisbladis ];
     broken = stdenv.isDarwin; # needs to update gopsutil to at least v3.21.3 to include https://github.com/shirou/gopsutil/pull/1042
+    mainProgram = "goofys";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/gpart/default.nix b/nixpkgs/pkgs/tools/filesystems/gpart/default.nix
index eafbe066ac94..a8466d3462e8 100644
--- a/nixpkgs/pkgs/tools/filesystems/gpart/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/gpart/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
+    mainProgram = "gpart";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/grive2/default.nix b/nixpkgs/pkgs/tools/filesystems/grive2/default.nix
index d5a19f42f3f0..41afc98e7f94 100644
--- a/nixpkgs/pkgs/tools/filesystems/grive2/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/grive2/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/vitalif/grive2";
     license = licenses.gpl2;
     platforms = platforms.linux;
+    mainProgram = "grive";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/httm/default.nix b/nixpkgs/pkgs/tools/filesystems/httm/default.nix
index 31ea85532462..3a36af72462e 100644
--- a/nixpkgs/pkgs/tools/filesystems/httm/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/httm/default.nix
@@ -37,5 +37,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/kimono-koans/httm/releases/tag/${version}";
     license = licenses.mpl20;
     maintainers = with maintainers; [ wyndon ];
+    mainProgram = "httm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/httpdirfs/default.nix b/nixpkgs/pkgs/tools/filesystems/httpdirfs/default.nix
index e027d5dd8df5..6163e1a0158a 100644
--- a/nixpkgs/pkgs/tools/filesystems/httpdirfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/httpdirfs/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ sbruder schnusch ];
     platforms = platforms.unix;
+    mainProgram = "httpdirfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/ifuse/default.nix b/nixpkgs/pkgs/tools/filesystems/ifuse/default.nix
index 010aeaefabf3..8f2e1f2a6ffb 100644
--- a/nixpkgs/pkgs/tools/filesystems/ifuse/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/ifuse/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl21Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ infinisil ];
+    mainProgram = "ifuse";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/ioztat/default.nix b/nixpkgs/pkgs/tools/filesystems/ioztat/default.nix
index b28f0a36661b..b5f949ad4f2c 100644
--- a/nixpkgs/pkgs/tools/filesystems/ioztat/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/ioztat/default.nix
@@ -54,5 +54,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     platforms = with platforms; linux ++ freebsd;
     maintainers = with maintainers; [ numinit ];
+    mainProgram = "ioztat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/jefferson/default.nix b/nixpkgs/pkgs/tools/filesystems/jefferson/default.nix
index 762541f8d27a..948de453ec18 100644
--- a/nixpkgs/pkgs/tools/filesystems/jefferson/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/jefferson/default.nix
@@ -37,5 +37,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/onekey-sec/jefferson";
     license = licenses.mit;
     maintainers = with maintainers; [ tnias vlaci ];
+    mainProgram = "jefferson";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/jmtpfs/default.nix b/nixpkgs/pkgs/tools/filesystems/jmtpfs/default.nix
index 2754d223a6ba..6c5dd3d30c70 100644
--- a/nixpkgs/pkgs/tools/filesystems/jmtpfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/jmtpfs/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.unix;
     maintainers = [ maintainers.coconnor ];
+    mainProgram = "jmtpfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/kdiskmark/default.nix b/nixpkgs/pkgs/tools/filesystems/kdiskmark/default.nix
index 6712b96f7fdd..200705098409 100644
--- a/nixpkgs/pkgs/tools/filesystems/kdiskmark/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/kdiskmark/default.nix
@@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.symphorien ];
     license = licenses.gpl3Only;
     platforms = platforms.linux;
+    mainProgram = "kdiskmark";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix b/nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix
index 6ee1d96eaf49..46c62b7ae4b0 100644
--- a/nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/mergerfs/default.nix
@@ -36,6 +36,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/trapexit/mergerfs";
     license = lib.licenses.isc;
     platforms = lib.platforms.linux;
-    maintainers = with lib.maintainers; [ jfrankenau makefu ];
+    maintainers = with lib.maintainers; [ makefu ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/mergerfs/tools.nix b/nixpkgs/pkgs/tools/filesystems/mergerfs/tools.nix
index 6e11c6513dad..f5235239103d 100644
--- a/nixpkgs/pkgs/tools/filesystems/mergerfs/tools.nix
+++ b/nixpkgs/pkgs/tools/filesystems/mergerfs/tools.nix
@@ -3,13 +3,13 @@
 
 stdenv.mkDerivation rec {
   pname = "mergerfs-tools";
-  version = "20190411";
+  version = "20230912";
 
   src = fetchFromGitHub {
     owner = "trapexit";
     repo = pname;
-    rev = "6e41fc5848c7cc4408caea86f3991c8cc2ac85a1";
-    sha256 = "0izswg6bya13scvb37l3gkl7mvi8q7l11p4hp4phdlcwh9jvdzcj";
+    rev = "80d6c9511da554009415d67e7c0ead1256c1fc41";
+    hash = "sha256-9sn2ziIjes2squSGbjjXVch2zDFjQruWB4282p4jWcY=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
@@ -31,6 +31,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/trapexit/mergerfs-tools";
     license = licenses.isc;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ jfrankenau ];
+    maintainers = with maintainers; [ makefu ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/mhddfs/default.nix b/nixpkgs/pkgs/tools/filesystems/mhddfs/default.nix
index 2cc6f69bb0ba..58986c25dbf2 100644
--- a/nixpkgs/pkgs/tools/filesystems/mhddfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/mhddfs/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     description = "Combines a several mount points into the single one";
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.makefu ];
+    mainProgram = "mhddfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/mkspiffs/default.nix b/nixpkgs/pkgs/tools/filesystems/mkspiffs/default.nix
index 30312ec7dc7b..2b0e2cdadb37 100644
--- a/nixpkgs/pkgs/tools/filesystems/mkspiffs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/mkspiffs/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/igrr/mkspiffs";
     maintainers = with maintainers; [ haslersn ];
     platforms = platforms.linux;
+    mainProgram = "mkspiffs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/mount-zip/default.nix b/nixpkgs/pkgs/tools/filesystems/mount-zip/default.nix
index 74d9b1d370b8..c3fea94f42f5 100644
--- a/nixpkgs/pkgs/tools/filesystems/mount-zip/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/mount-zip/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.gpl3;
     maintainers = with maintainers; [ arti5an ];
     platforms = platforms.linux;
+    mainProgram = "mount-zip";
   };
 })
diff --git a/nixpkgs/pkgs/tools/filesystems/mp3fs/default.nix b/nixpkgs/pkgs/tools/filesystems/mp3fs/default.nix
index 6f872500e6b1..0412a99beee0 100644
--- a/nixpkgs/pkgs/tools/filesystems/mp3fs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/mp3fs/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ Luflosi ];
+    mainProgram = "mp3fs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/mtpfs/default.nix b/nixpkgs/pkgs/tools/filesystems/mtpfs/default.nix
index 0a6623bfdc4a..d84f9cc9b9b1 100644
--- a/nixpkgs/pkgs/tools/filesystems/mtpfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/mtpfs/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = [ maintainers.qknight ];
     broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/mtpfs.x86_64-darwin
+    mainProgram = "mtpfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/rdfind/default.nix b/nixpkgs/pkgs/tools/filesystems/rdfind/default.nix
index c363ee561374..59724c0c7c52 100644
--- a/nixpkgs/pkgs/tools/filesystems/rdfind/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/rdfind/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.wmertens ];
     platforms = platforms.all;
+    mainProgram = "rdfind";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/rmfuse/default.nix b/nixpkgs/pkgs/tools/filesystems/rmfuse/default.nix
index ace05d061665..5d3a6a340dbb 100644
--- a/nixpkgs/pkgs/tools/filesystems/rmfuse/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/rmfuse/default.nix
@@ -45,5 +45,6 @@ python3.pkgs.buildPythonApplication rec {
       system.
     '';
     maintainers = with lib.maintainers; [ adisbladis ];
+    mainProgram = "rmfuse";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/rmount/default.nix b/nixpkgs/pkgs/tools/filesystems/rmount/default.nix
index 1d8ced17aae0..ec4bb1392712 100644
--- a/nixpkgs/pkgs/tools/filesystems/rmount/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/rmount/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.luis ];
     platforms = platforms.linux;
+    mainProgram = "rmount";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/rnm/default.nix b/nixpkgs/pkgs/tools/filesystems/rnm/default.nix
index 69ba0270ecc0..479feabb8ebc 100644
--- a/nixpkgs/pkgs/tools/filesystems/rnm/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/rnm/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     changelog = "https://github.com/neurobin/rnm/blob/${version}/ChangeLog";
     platforms = lib.platforms.all;
     license = licenses.gpl3Only;
+    mainProgram = "rnm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/romdirfs/default.nix b/nixpkgs/pkgs/tools/filesystems/romdirfs/default.nix
index 0304508d41eb..cc711e57cdb6 100644
--- a/nixpkgs/pkgs/tools/filesystems/romdirfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/romdirfs/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.unix;
     maintainers = with maintainers; [ ];
+    mainProgram = "romdirfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/s3backer/default.nix b/nixpkgs/pkgs/tools/filesystems/s3backer/default.nix
index bfe9f2274756..3585408a2f7d 100644
--- a/nixpkgs/pkgs/tools/filesystems/s3backer/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/s3backer/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     description = "FUSE-based single file backing store via Amazon S3";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
+    mainProgram = "s3backer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/sandboxfs/default.nix b/nixpkgs/pkgs/tools/filesystems/sandboxfs/default.nix
index bafa39272727..76eb667bceaa 100644
--- a/nixpkgs/pkgs/tools/filesystems/sandboxfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/sandboxfs/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/bazelbuild/sandboxfs";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ jeremyschlatter ];
+    mainProgram = "sandboxfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/sasquatch/default.nix b/nixpkgs/pkgs/tools/filesystems/sasquatch/default.nix
index 258814b8905b..f8d66683fccb 100644
--- a/nixpkgs/pkgs/tools/filesystems/sasquatch/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/sasquatch/default.nix
@@ -71,5 +71,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.pamplemousse ];
     platforms = platforms.linux;
+    mainProgram = "sasquatch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/sdat2img/default.nix b/nixpkgs/pkgs/tools/filesystems/sdat2img/default.nix
index 4176eabad401..93493356eb51 100644
--- a/nixpkgs/pkgs/tools/filesystems/sdat2img/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/sdat2img/default.nix
@@ -22,5 +22,6 @@ python3Packages.buildPythonApplication {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.xaverdh ];
     platforms = lib.platforms.unix;
+    mainProgram = "sdat2img";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/securefs/default.nix b/nixpkgs/pkgs/tools/filesystems/securefs/default.nix
index 791c01d8eed8..fe148e955cb2 100644
--- a/nixpkgs/pkgs/tools/filesystems/securefs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/securefs/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     '';
     license = with licenses; [ bsd2 mit ];
     platforms = platforms.unix;
+    mainProgram = "securefs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/sftpman/default.nix b/nixpkgs/pkgs/tools/filesystems/sftpman/default.nix
index 267b2b649c30..579c03992dde 100644
--- a/nixpkgs/pkgs/tools/filesystems/sftpman/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/sftpman/default.nix
@@ -21,5 +21,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl3;
     platforms = platforms.unix;
     maintainers = with maintainers; [ contrun ];
+    mainProgram = "sftpman";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/simple-mtpfs/default.nix b/nixpkgs/pkgs/tools/filesystems/simple-mtpfs/default.nix
index 3cb2aa97007b..994b785c444e 100644
--- a/nixpkgs/pkgs/tools/filesystems/simple-mtpfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/simple-mtpfs/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ laalsaas ];
+    mainProgram = "simple-mtpfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/smbnetfs/default.nix b/nixpkgs/pkgs/tools/filesystems/smbnetfs/default.nix
index a1831d44ada4..120b30cbb1d1 100644
--- a/nixpkgs/pkgs/tools/filesystems/smbnetfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/smbnetfs/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     downloadPage = "https://sourceforge.net/projects/smbnetfs/files/smbnetfs";
     homepage = "https://sourceforge.net/projects/smbnetfs/";
+    mainProgram = "smbnetfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/snapraid/default.nix b/nixpkgs/pkgs/tools/filesystems/snapraid/default.nix
index d945a4a40094..3afabf8cd643 100644
--- a/nixpkgs/pkgs/tools/filesystems/snapraid/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/snapraid/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.makefu ];
     platforms = lib.platforms.unix;
+    mainProgram = "snapraid";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/stratis-cli/default.nix b/nixpkgs/pkgs/tools/filesystems/stratis-cli/default.nix
index e927f2daf256..3a1838ef303e 100644
--- a/nixpkgs/pkgs/tools/filesystems/stratis-cli/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/stratis-cli/default.nix
@@ -44,5 +44,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://stratis-storage.github.io";
     license = licenses.asl20;
     maintainers = with maintainers; [ nickcao ];
+    mainProgram = "stratis";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/stratisd/Cargo.lock b/nixpkgs/pkgs/tools/filesystems/stratisd/Cargo.lock
index d3554b3ce19f..1406bc0aea3f 100644
--- a/nixpkgs/pkgs/tools/filesystems/stratisd/Cargo.lock
+++ b/nixpkgs/pkgs/tools/filesystems/stratisd/Cargo.lock
@@ -1269,7 +1269,7 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
 
 [[package]]
 name = "stratisd"
-version = "3.6.2"
+version = "3.6.3"
 dependencies = [
  "assert_cmd",
  "assert_matches",
@@ -1305,6 +1305,7 @@ dependencies = [
  "rand",
  "regex",
  "retry",
+ "semver",
  "serde",
  "serde_derive",
  "serde_json",
diff --git a/nixpkgs/pkgs/tools/filesystems/stratisd/default.nix b/nixpkgs/pkgs/tools/filesystems/stratisd/default.nix
index 707b3ac654e4..cd6ee0884637 100644
--- a/nixpkgs/pkgs/tools/filesystems/stratisd/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/stratisd/default.nix
@@ -11,7 +11,6 @@
 , dbus
 , cryptsetup
 , util-linux
-, udev
 , lvm2
 , systemd
 , xfsprogs
@@ -28,13 +27,13 @@
 
 stdenv.mkDerivation rec {
   pname = "stratisd";
-  version = "3.6.2";
+  version = "3.6.3";
 
   src = fetchFromGitHub {
     owner = "stratis-storage";
     repo = pname;
     rev = "refs/tags/stratisd-v${version}";
-    hash = "sha256-R6Bb6ep5T8ePmxwDTxQyeXcSpp2S1C2zqwxmX2Wt1L8=";
+    hash = "sha256-Wu3SkuHyMCBape+pMymQntXRtdMIlF5wz75kKxaZlms=";
   };
 
   cargoDeps = rustPlatform.importCargoLock {
@@ -53,7 +52,7 @@ stdenv.mkDerivation rec {
       --replace stratis-min           "$out/bin/stratis-min" \
       --replace systemd-ask-password  "${systemd}/bin/systemd-ask-password" \
       --replace sleep                 "${coreutils}/bin/sleep" \
-      --replace udevadm               "${udev}/bin/udevadm"
+      --replace udevadm               "${systemd}/bin/udevadm"
   '';
 
   nativeBuildInputs = [
@@ -72,7 +71,7 @@ stdenv.mkDerivation rec {
     dbus
     cryptsetup
     util-linux
-    udev
+    systemd
     lvm2
   ];
 
diff --git a/nixpkgs/pkgs/tools/filesystems/svnfs/default.nix b/nixpkgs/pkgs/tools/filesystems/svnfs/default.nix
index e892d89dc3b3..8aa66de8da3f 100644
--- a/nixpkgs/pkgs/tools/filesystems/svnfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/svnfs/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Only;
     maintainers = [lib.maintainers.marcweber];
     platforms = lib.platforms.unix;
+    mainProgram = "svnfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/tar2ext4/default.nix b/nixpkgs/pkgs/tools/filesystems/tar2ext4/default.nix
index 2168bc1aa312..81df5e64d9f3 100644
--- a/nixpkgs/pkgs/tools/filesystems/tar2ext4/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/tar2ext4/default.nix
@@ -2,13 +2,13 @@
 
 buildGoModule rec {
   pname = "tar2ext4";
-  version = "0.11.1";
+  version = "0.11.4";
 
   src = fetchFromGitHub {
     owner = "microsoft";
     repo = "hcsshim";
     rev = "v${version}";
-    sha256 = "sha256-iz8trRuGyIpGbRX+qYyKKS9gR8daLTRzKmlxE94eDzo=";
+    sha256 = "sha256-bu1uLJmFSetTv1R3qyCtZxba+wxjDDSkEpBwKNZ/meM=";
   };
 
   sourceRoot = "${src.name}/cmd/tar2ext4";
@@ -18,5 +18,6 @@ buildGoModule rec {
     description = "Convert a tar archive to an ext4 image";
     maintainers = with maintainers; [ qyliss ];
     license = licenses.mit;
+    mainProgram = "tar2ext4";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/u3-tool/default.nix b/nixpkgs/pkgs/tools/filesystems/u3-tool/default.nix
index 6abab83b0fd0..e666c893b798 100644
--- a/nixpkgs/pkgs/tools/filesystems/u3-tool/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/u3-tool/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = with platforms; linux;
     maintainers = with maintainers; [ makefu ];
+    mainProgram = "u3-tool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/ubidump/default.nix b/nixpkgs/pkgs/tools/filesystems/ubidump/default.nix
index 623cef884476..c038042b6871 100644
--- a/nixpkgs/pkgs/tools/filesystems/ubidump/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/ubidump/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/nlitsme/ubidump";
     license = licenses.mit;
     maintainers = with maintainers; [ sgo ];
+    mainProgram = "ubidump";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/filesystems/wdfs/default.nix b/nixpkgs/pkgs/tools/filesystems/wdfs/default.nix
index 29d8b4c2887b..3f8897c091bc 100644
--- a/nixpkgs/pkgs/tools/filesystems/wdfs/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/wdfs/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     description = "User-space filesystem that allows to mount a webdav share";
     platforms = platforms.unix;
+    mainProgram = "wdfs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/wipefreespace/default.nix b/nixpkgs/pkgs/tools/filesystems/wipefreespace/default.nix
index f9d586d91d68..bf2ddb391c86 100644
--- a/nixpkgs/pkgs/tools/filesystems/wipefreespace/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/wipefreespace/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ catap ];
+    mainProgram = "wipefreespace";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/yandex-disk/default.nix b/nixpkgs/pkgs/tools/filesystems/yandex-disk/default.nix
index 109781f612a2..94907ee4fd2f 100644
--- a/nixpkgs/pkgs/tools/filesystems/yandex-disk/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/yandex-disk/default.nix
@@ -67,5 +67,6 @@ stdenv.mkDerivation rec {
        * faster syncing with Disk's server;
        * no need to be constantly connected to work with files.
     '';
+    mainProgram = "yandex-disk";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/zerofree/default.nix b/nixpkgs/pkgs/tools/filesystems/zerofree/default.nix
index 1447ca36a136..d44e92a33c46 100644
--- a/nixpkgs/pkgs/tools/filesystems/zerofree/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/zerofree/default.nix
@@ -29,5 +29,6 @@ in stdenv.mkDerivation rec {
     platforms = lib.platforms.linux;
     license = lib.licenses.gpl2;
     maintainers = [ lib.maintainers.theuni ];
+    mainProgram = "zerofree";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/zkfuse/default.nix b/nixpkgs/pkgs/tools/filesystems/zkfuse/default.nix
index 320ccde4cc53..00d78af0146f 100644
--- a/nixpkgs/pkgs/tools/filesystems/zkfuse/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/zkfuse/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     maintainers = with maintainers; [ ztzg ];
     license = licenses.asl20;
+    mainProgram = "zkfuse";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/zpool-auto-expand-partitions/Cargo.lock b/nixpkgs/pkgs/tools/filesystems/zpool-auto-expand-partitions/Cargo.lock
new file mode 100644
index 000000000000..3611e181a0fe
--- /dev/null
+++ b/nixpkgs/pkgs/tools/filesystems/zpool-auto-expand-partitions/Cargo.lock
@@ -0,0 +1,753 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 3
+
+[[package]]
+name = "atty"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+dependencies = [
+ "hermit-abi",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
+name = "bindgen"
+version = "0.65.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5"
+dependencies = [
+ "bitflags 1.3.2",
+ "cexpr",
+ "clang-sys",
+ "lazy_static",
+ "lazycell",
+ "log",
+ "peeking_take_while",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash",
+ "shlex",
+ "syn 2.0.39",
+ "which",
+]
+
+[[package]]
+name = "bindgen"
+version = "0.69.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2"
+dependencies = [
+ "bitflags 2.4.1",
+ "cexpr",
+ "clang-sys",
+ "lazy_static",
+ "lazycell",
+ "log",
+ "peeking_take_while",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "rustc-hash",
+ "shlex",
+ "syn 2.0.39",
+ "which",
+]
+
+[[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 = "blkid"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f68440dfd06d6a97a56f8e67729316f33c7e52c31f59f16f6e9641777702bb7"
+dependencies = [
+ "bitflags 1.3.2",
+ "blkid-sys",
+ "libc",
+ "pkg-config",
+ "strum",
+ "strum_macros",
+ "thiserror",
+]
+
+[[package]]
+name = "blkid-sys"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc9c952498f4ffdf6ec98a7e739ca08cc8af1950efdd9f47db46d9dbdc111565"
+dependencies = [
+ "bindgen 0.65.1",
+]
+
+[[package]]
+name = "cexpr"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+dependencies = [
+ "nom",
+]
+
+[[package]]
+name = "cfg-if"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+
+[[package]]
+name = "clang-sys"
+version = "1.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
+dependencies = [
+ "glob",
+ "libc",
+ "libloading",
+]
+
+[[package]]
+name = "clap"
+version = "3.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5177fac1ab67102d8989464efd043c6ff44191b1557ec1ddd489b4f7e1447e77"
+dependencies = [
+ "atty",
+ "bitflags 1.3.2",
+ "clap_derive",
+ "indexmap",
+ "lazy_static",
+ "os_str_bytes",
+ "strsim",
+ "termcolor",
+ "textwrap",
+]
+
+[[package]]
+name = "clap_derive"
+version = "3.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "01d42c94ce7c2252681b5fed4d3627cc807b13dfc033246bd05d5b252399000e"
+dependencies = [
+ "heck 0.4.0",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.86",
+]
+
+[[package]]
+name = "cstr-argument"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6bd9c8e659a473bce955ae5c35b116af38af11a7acb0b480e01f3ed348aeb40"
+dependencies = [
+ "cfg-if",
+ "memchr",
+]
+
+[[package]]
+name = "either"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+
+[[package]]
+name = "errno"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8"
+dependencies = [
+ "libc",
+ "windows-sys",
+]
+
+[[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 = "glob"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
+
+[[package]]
+name = "hashbrown"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
+
+[[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.1.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "home"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+dependencies = [
+ "windows-sys",
+]
+
+[[package]]
+name = "indexmap"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223"
+dependencies = [
+ "autocfg",
+ "hashbrown",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
+
+[[package]]
+name = "lazy_static"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+
+[[package]]
+name = "lazycell"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+
+[[package]]
+name = "libc"
+version = "0.2.150"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
+
+[[package]]
+name = "libloading"
+version = "0.7.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+dependencies = [
+ "cfg-if",
+ "winapi",
+]
+
+[[package]]
+name = "libzfs"
+version = "0.6.16"
+source = "git+https://github.com/DeterminateSystems/rust-libzfs?branch=fix-build-zpool-auto-expand-partitions#7c14513fb85a147ce91afa02f5a0dc3e3f788c3a"
+dependencies = [
+ "cstr-argument",
+ "foreign-types",
+ "lazy_static",
+ "libzfs-sys",
+ "libzfs-types",
+ "nvpair-sys",
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "libzfs-sys"
+version = "0.5.11"
+source = "git+https://github.com/DeterminateSystems/rust-libzfs?branch=fix-build-zpool-auto-expand-partitions#7c14513fb85a147ce91afa02f5a0dc3e3f788c3a"
+dependencies = [
+ "bindgen 0.69.1",
+ "nvpair-sys",
+ "pkg-config",
+]
+
+[[package]]
+name = "libzfs-types"
+version = "0.1.2"
+source = "git+https://github.com/DeterminateSystems/rust-libzfs?branch=fix-build-zpool-auto-expand-partitions#7c14513fb85a147ce91afa02f5a0dc3e3f788c3a"
+dependencies = [
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829"
+
+[[package]]
+name = "log"
+version = "0.4.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "memchr"
+version = "2.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "nvpair-sys"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5fc4cc751960db1094a7a732dd0706927aeae9194bf66c30fa227b70fc62b6c8"
+
+[[package]]
+name = "once_cell"
+version = "1.18.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+
+[[package]]
+name = "os_str_bytes"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e22443d1643a904602595ba1cd8f7d896afe56d26712531c5ff73a15b2fbf64"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "peeking_take_while"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
+
+[[package]]
+name = "prettyplease"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d"
+dependencies = [
+ "proc-macro2",
+ "syn 2.0.39",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.86",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "regex"
+version = "1.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
+dependencies = [
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.6.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustix"
+version = "0.38.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e"
+dependencies = [
+ "bitflags 2.4.1",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
+
+[[package]]
+name = "ryu"
+version = "1.0.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
+
+[[package]]
+name = "serde"
+version = "1.0.136"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.136"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.86",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.79"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95"
+dependencies = [
+ "itoa",
+ "ryu",
+ "serde",
+]
+
+[[package]]
+name = "shlex"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380"
+
+[[package]]
+name = "strsim"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+
+[[package]]
+name = "strum"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cae14b91c7d11c9a851d3fbc80a963198998c2a64eec840477fa92d8ce9b70bb"
+
+[[package]]
+name = "strum_macros"
+version = "0.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5bb0dc7ee9c15cea6199cde9a127fa16a4c5819af85395457ad72d68edc85a38"
+dependencies = [
+ "heck 0.3.3",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn 1.0.86",
+]
+
+[[package]]
+name = "syn"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-xid",
+]
+
+[[package]]
+name = "syn"
+version = "2.0.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "termcolor"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
+dependencies = [
+ "winapi-util",
+]
+
+[[package]]
+name = "textwrap"
+version = "0.14.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0066c8d12af8b5acd21e00547c3797fde4e8677254a7ee429176ccebbe93dd80"
+
+[[package]]
+name = "thiserror"
+version = "1.0.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 1.0.86",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+
+[[package]]
+name = "version_check"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+
+[[package]]
+name = "which"
+version = "4.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
+dependencies = [
+ "either",
+ "home",
+ "once_cell",
+ "rustix",
+]
+
+[[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 = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm",
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_gnullvm",
+ "windows_x86_64_msvc",
+]
+
+[[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_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[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_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[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_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
+name = "zpool_part_disks"
+version = "0.1.1"
+dependencies = [
+ "blkid",
+ "clap",
+ "libzfs",
+ "serde",
+ "serde_json",
+]
diff --git a/nixpkgs/pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix b/nixpkgs/pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix
index 601baabd87ee..8fced13e93db 100644
--- a/nixpkgs/pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix
@@ -8,16 +8,21 @@
 }:
 rustPlatform.buildRustPackage rec {
   pname = "zpool-auto-expand-partitions";
-  version = "0.1.0";
+  version = "0.1.1";
 
   src = fetchFromGitHub {
     owner = "DeterminateSystems";
     repo = "zpool-auto-expand-partitions";
     rev = "v${version}";
-    hash = "sha256-LA6YO6vv7VCXwFfayQVxVR80niSCo89sG0hqh0wDEh8=";
+    hash = "sha256-N1znZbJULEeNR4ABSrUtHHkmz08N+CZqX6Ni7jFzc4c=";
   };
 
-  cargoHash = "sha256-5v0fqp8aro+QD/f5VudMREc8RvKQapNAoArcCKMN1Sw=";
+  cargoLock.lockFile = ./Cargo.lock;
+  # We rely on a fork of libzfs in order to bump the bindgen version to fix
+  # builds against LLVM 16.
+  cargoLock.outputHashes = {
+    "libzfs-0.6.16" = "sha256-kQunP/xW1Zb1q+TcgAkmZkt1yDnJo9CwF5qldikVN94=";
+  };
 
   preBuild = ''
     substituteInPlace src/grow.rs \
@@ -41,5 +46,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/DeterminateSystems/zpool-auto-expand-partitions";
     license = licenses.asl20;
     maintainers = teams.determinatesystems.members;
+    mainProgram = "zpool_part_disks";
   };
 }
diff --git a/nixpkgs/pkgs/tools/filesystems/zpool-iostat-viz/default.nix b/nixpkgs/pkgs/tools/filesystems/zpool-iostat-viz/default.nix
index a9e4dfe8ab74..4f546e544e66 100644
--- a/nixpkgs/pkgs/tools/filesystems/zpool-iostat-viz/default.nix
+++ b/nixpkgs/pkgs/tools/filesystems/zpool-iostat-viz/default.nix
@@ -37,5 +37,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/chadmiller/zpool-iostat-viz";
     license = licenses.bsd2;
     maintainers = with maintainers; [ julm ];
+    mainProgram = "zpool-iostat-viz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/games/scarab/default.nix b/nixpkgs/pkgs/tools/games/scarab/default.nix
index c96b472e7d91..c71502b7f506 100644
--- a/nixpkgs/pkgs/tools/games/scarab/default.nix
+++ b/nixpkgs/pkgs/tools/games/scarab/default.nix
@@ -16,13 +16,13 @@
 
 buildDotnetModule rec {
   pname = "scarab";
-  version = "2.1.0.0";
+  version = "2.5.0.0";
 
   src = fetchFromGitHub {
     owner = "fifty-six";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-TbsCj30ZlZmm+i/k31eo9X+XE9Zu13uL9QZOGaRm9zs=";
+    sha256 = "sha256-z1hmMrfeoYyjVEPPjWvUfKUKsOS7UsocSWMYrFY+/kI=";
   };
 
   nugetDeps = ./deps.nix;
diff --git a/nixpkgs/pkgs/tools/games/trigger-control/default.nix b/nixpkgs/pkgs/tools/games/trigger-control/default.nix
deleted file mode 100644
index 0d1ef9ef1d47..000000000000
--- a/nixpkgs/pkgs/tools/games/trigger-control/default.nix
+++ /dev/null
@@ -1,69 +0,0 @@
-{ lib
-, stdenv
-, fetchFromGitHub
-, cmake
-, makeWrapper
-, pkg-config
-, SDL2
-, dbus
-, libdecor
-, libnotify
-, dejavu_fonts
-, gnome
-}:
-
-let
-  inherit (gnome) zenity;
-in
-
-stdenv.mkDerivation rec {
-  pname = "trigger-control";
-  version = "unstable-2023-06-18";
-
-  src = fetchFromGitHub {
-    owner = "Etaash-mathamsetty";
-    repo = "trigger-control";
-    rev = "d457ebd9e0844cfc456bfa4fa4bb694bb8ad982a";
-    hash = "sha256-QWhUQ8xqS8oRVF0KUpEthlrOoXmhcfEkIHauDI1/5a8=";
-  };
-
-  nativeBuildInputs = [
-    cmake
-    makeWrapper
-    pkg-config
-  ];
-
-  buildInputs = [
-    SDL2
-    dbus
-    libnotify
-  ] ++ lib.optionals stdenv.isLinux [
-    libdecor
-  ];
-
-  # The app crashes without a changed fontdir and upstream recommends dejavu as font
-  postPatch = ''
-    substituteInPlace trigger-control.cpp --replace "/usr/share/fonts/" "${dejavu_fonts}/share/fonts/"
-  '';
-
-  installPhase = ''
-    runHook preInstall
-
-    install -D trigger-control $out/bin/trigger-control
-
-    runHook postInstall
-  '';
-
-  postInstall = lib.optionalString stdenv.isLinux ''
-    wrapProgram $out/bin/trigger-control \
-      --prefix PATH : ${lib.makeBinPath [ zenity ]}
-  '';
-
-  meta = with lib; {
-    description = "Control the dualsense's triggers on Linux (and Windows) with a gui and C++ api";
-    homepage = "https://github.com/Etaash-mathamsetty/trigger-control";
-    license = licenses.mit;
-    maintainers = with maintainers; [ azuwis ];
-    platforms = platforms.all;
-  };
-}
diff --git a/nixpkgs/pkgs/tools/graphics/aaphoto/default.nix b/nixpkgs/pkgs/tools/graphics/aaphoto/default.nix
index 6df3ed916613..57744eb6b8ec 100644
--- a/nixpkgs/pkgs/tools/graphics/aaphoto/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/aaphoto/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.unix;
+    mainProgram = "aaphoto";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/adriconf/default.nix b/nixpkgs/pkgs/tools/graphics/adriconf/default.nix
index 35de292a36c8..3d516f8ee113 100644
--- a/nixpkgs/pkgs/tools/graphics/adriconf/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/adriconf/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ muscaln ];
     platforms = platforms.linux;
+    mainProgram = "adriconf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/blockhash/default.nix b/nixpkgs/pkgs/tools/graphics/blockhash/default.nix
index 0a08e0cd31ff..a58fcc4e8ec6 100644
--- a/nixpkgs/pkgs/tools/graphics/blockhash/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/blockhash/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.infinisil ];
     platforms = platforms.unix;
+    mainProgram = "blockhash";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/blur-effect/default.nix b/nixpkgs/pkgs/tools/graphics/blur-effect/default.nix
index e393da508323..cc88bb088949 100644
--- a/nixpkgs/pkgs/tools/graphics/blur-effect/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/blur-effect/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     broken = stdenv.hostPlatform.isDarwin; # packages 'libdrm' and 'gbm' not found
     maintainers = with maintainers; [ romildo ];
+    mainProgram = "blur_image";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/briss/default.nix b/nixpkgs/pkgs/tools/graphics/briss/default.nix
index f95c9b527c14..801b8f5a4862 100644
--- a/nixpkgs/pkgs/tools/graphics/briss/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/briss/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
     license = lib.licenses.gpl3;
     platforms = lib.platforms.unix;
+    mainProgram = "briss";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/cfdg/default.nix b/nixpkgs/pkgs/tools/graphics/cfdg/default.nix
index 2f8b506c65bd..496255c57953 100644
--- a/nixpkgs/pkgs/tools/graphics/cfdg/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/cfdg/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     homepage = "https://contextfreeart.org/";
     license = licenses.gpl2Only;
+    mainProgram = "cfdg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/cuneiform/default.nix b/nixpkgs/pkgs/tools/graphics/cuneiform/default.nix
index 1a1b52502f7d..fa4cb75d174b 100644
--- a/nixpkgs/pkgs/tools/graphics/cuneiform/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/cuneiform/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation {
     license = licenses.bsd3;
     platforms = platforms.linux;
     maintainers = [ maintainers.raskin ];
+    mainProgram = "cuneiform";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/didder/default.nix b/nixpkgs/pkgs/tools/graphics/didder/default.nix
index e42a89c72d62..10e97e356daf 100644
--- a/nixpkgs/pkgs/tools/graphics/didder/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/didder/default.nix
@@ -29,5 +29,6 @@ buildGoModule rec {
       "An extensive, fast, and accurate command-line image dithering tool";
     license = lib.licenses.gpl3;
     maintainers = with lib.maintainers; [ ehmry ];
+    mainProgram = "didder";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/dippi/default.nix b/nixpkgs/pkgs/tools/graphics/dippi/default.nix
index 9e3cc25327f8..1a094c2750e2 100644
--- a/nixpkgs/pkgs/tools/graphics/dippi/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/dippi/default.nix
@@ -17,13 +17,13 @@
 
 stdenv.mkDerivation rec {
   pname = "dippi";
-  version = "4.0.2";
+  version = "4.0.6";
 
   src = fetchFromGitHub {
     owner = "cassidyjames";
     repo = "dippi";
     rev = version;
-    hash = "sha256-OYeSPh3m3udmGbIKoithCdsqWSAFnRhnAtQ0nTzFxzs=";
+    hash = "sha256-oZy8WfaAPABZRm8dm4zpI4v9RwT46F6WL6Wj767FcZg=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/graphics/ditaa/default.nix b/nixpkgs/pkgs/tools/graphics/ditaa/default.nix
index ab1c6ff74ec3..c6823fbed369 100644
--- a/nixpkgs/pkgs/tools/graphics/ditaa/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/ditaa/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl3;
     platforms = platforms.unix;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "ditaa";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/dnglab/default.nix b/nixpkgs/pkgs/tools/graphics/dnglab/default.nix
index cb865e51a9c5..9088a1110b7b 100644
--- a/nixpkgs/pkgs/tools/graphics/dnglab/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/dnglab/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/dnglab/dnglab";
     license = licenses.lgpl21Only;
     maintainers = with maintainers; [ dit7ya ];
+    mainProgram = "dnglab";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/dpic/default.nix b/nixpkgs/pkgs/tools/graphics/dpic/default.nix
index 1a4161dd6206..fb3e0c19bf82 100644
--- a/nixpkgs/pkgs/tools/graphics/dpic/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/dpic/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ aespinosa ];
     platforms = platforms.all;
+    mainProgram = "dpic";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/graphics/editres/default.nix b/nixpkgs/pkgs/tools/graphics/editres/default.nix
index ca9be631942a..ce8b2e0a4ff6 100644
--- a/nixpkgs/pkgs/tools/graphics/editres/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/editres/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     description = "A dynamic resource editor for X Toolkit applications";
     license = licenses.mit;
     platforms = platforms.linux;
+    mainProgram = "editres";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/epstool/default.nix b/nixpkgs/pkgs/tools/graphics/epstool/default.nix
index cdb1f75cb2c3..5952734e4582 100644
--- a/nixpkgs/pkgs/tools/graphics/epstool/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/epstool/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.asppsa ];
     platforms = platforms.all;
+    mainProgram = "epstool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/escrotum/default.nix b/nixpkgs/pkgs/tools/graphics/escrotum/default.nix
index 04c245dbd9a6..c2e5a7ec9a71 100644
--- a/nixpkgs/pkgs/tools/graphics/escrotum/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/escrotum/default.nix
@@ -47,5 +47,6 @@ with python3Packages; buildPythonApplication {
     platforms = platforms.linux;
     maintainers = with maintainers; [ rasendubi ];
     license = licenses.gpl3;
+    mainProgram = "escrotum";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/esshader/default.nix b/nixpkgs/pkgs/tools/graphics/esshader/default.nix
index 2e2e9ddbd65e..38bd4d1b7f0a 100644
--- a/nixpkgs/pkgs/tools/graphics/esshader/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/esshader/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation {
     platforms = lib.platforms.unix;
     # never built on aarch64-darwin, x86_64-darwin since first introduction in nixpkgs
     broken = stdenv.isDarwin;
+    mainProgram = "esshader";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/exif/default.nix b/nixpkgs/pkgs/tools/graphics/exif/default.nix
index f07f3d05541e..437ae29a2f50 100644
--- a/nixpkgs/pkgs/tools/graphics/exif/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/exif/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     description = "A utility to read and manipulate EXIF data in digital photographs";
     platforms = platforms.unix;
     license = licenses.lgpl21Plus;
+    mainProgram = "exif";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/facedetect/default.nix b/nixpkgs/pkgs/tools/graphics/facedetect/default.nix
index d62f077e06d7..d83501d26da6 100644
--- a/nixpkgs/pkgs/tools/graphics/facedetect/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/facedetect/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.rycee ];
+    mainProgram = "facedetect";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/fbv/default.nix b/nixpkgs/pkgs/tools/graphics/fbv/default.nix
index 5b46d5d2268d..659a661fded8 100644
--- a/nixpkgs/pkgs/tools/graphics/fbv/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/fbv/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     homepage = "http://s-tech.elsat.net.pl/fbv/";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ peterhoeg ];
+    mainProgram = "fbv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/feedgnuplot/default.nix b/nixpkgs/pkgs/tools/graphics/feedgnuplot/default.nix
index 827481af497c..6503a2887ab2 100644
--- a/nixpkgs/pkgs/tools/graphics/feedgnuplot/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/feedgnuplot/default.nix
@@ -62,5 +62,6 @@ perlPackages.buildPerlPackage rec {
     license = with licenses; [ artistic1 gpl1Plus ];
     platforms = platforms.unix;
     maintainers = with maintainers; [ mnacamura ];
+    mainProgram = "feedgnuplot";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/fgallery/default.nix b/nixpkgs/pkgs/tools/graphics/fgallery/default.nix
index 7af5c6129f25..be8bc4eb6eab 100644
--- a/nixpkgs/pkgs/tools/graphics/fgallery/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/fgallery/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.all;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "fgallery";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/ggobi/default.nix b/nixpkgs/pkgs/tools/graphics/ggobi/default.nix
index 4e1b851735f0..2bd5abf00666 100644
--- a/nixpkgs/pkgs/tools/graphics/ggobi/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/ggobi/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.cpl10;
     platforms = platforms.linux;
     maintainers = [ maintainers.michelk ];
+    mainProgram = "ggobi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/gifski/Cargo.lock b/nixpkgs/pkgs/tools/graphics/gifski/Cargo.lock
index ee579a5e9799..bc840dec7f1f 100644
--- a/nixpkgs/pkgs/tools/graphics/gifski/Cargo.lock
+++ b/nixpkgs/pkgs/tools/graphics/gifski/Cargo.lock
@@ -318,7 +318,7 @@ dependencies = [
 
 [[package]]
 name = "gifski"
-version = "1.13.0"
+version = "1.13.1"
 dependencies = [
  "clap",
  "crossbeam-channel",
diff --git a/nixpkgs/pkgs/tools/graphics/gifski/default.nix b/nixpkgs/pkgs/tools/graphics/gifski/default.nix
index 53180d0094a8..312388a9742f 100644
--- a/nixpkgs/pkgs/tools/graphics/gifski/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/gifski/default.nix
@@ -7,13 +7,14 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "gifski";
-  version = "1.13.0";
+  version = "1.13.1";
 
   src = fetchFromGitHub {
     owner = "ImageOptim";
     repo = "gifski";
-    rev = version;
-    hash = "sha256-Ij+bgL935uLCZeh8GQnTFlPIuUloNCn8LUdvMd+6okM=";
+    # rev = version;
+    rev = "1.31.1"; # upstream tagged incorrectly
+    hash = "sha256-JzQReCX1AfFhbVbSPOIAKAVvNoddrWFHaJ1AxlsIPA0=";
   };
 
   cargoLock = {
@@ -44,6 +45,11 @@ rustPlatform.buildRustPackage rec {
   #
   checkType = "debug";
 
+  # Cargo.lock is outdated
+  postPatch = ''
+    cargo metadata --offline
+  '';
+
   meta = with lib; {
     description = "GIF encoder based on libimagequant (pngquant)";
     homepage = "https://gif.ski/";
diff --git a/nixpkgs/pkgs/tools/graphics/gmic-qt/default.nix b/nixpkgs/pkgs/tools/graphics/gmic-qt/default.nix
index fdff56a446dc..684d6abadfed 100644
--- a/nixpkgs/pkgs/tools/graphics/gmic-qt/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/gmic-qt/default.nix
@@ -54,11 +54,11 @@ assert lib.assertMsg
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "gmic-qt${lib.optionalString (variant != "standalone") "-${variant}"}";
-  version = "3.3.1";
+  version = "3.3.2";
 
   src = fetchzip {
     url = "https://gmic.eu/files/source/gmic_${finalAttrs.version}.tar.gz";
-    hash = "sha256-d9FRNW/MXM9ZJ1xgIZvGTUPDDnHgTJU0DuWyPkzNAmo=";
+    hash = "sha256-VaGYjCp1KVRTxEKzUdMCavZBIGEnEvP5fdFqQeKGa44=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/graphics/gnuplot/default.nix b/nixpkgs/pkgs/tools/graphics/gnuplot/default.nix
index f0fa45e59e4d..fa9635f0cb8a 100644
--- a/nixpkgs/pkgs/tools/graphics/gnuplot/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/gnuplot/default.nix
@@ -21,11 +21,11 @@ let
 in
 (if withQt then mkDerivation else stdenv.mkDerivation) rec {
   pname = "gnuplot";
-  version = "5.4.9";
+  version = "5.4.10";
 
   src = fetchurl {
     url = "mirror://sourceforge/gnuplot/${pname}-${version}.tar.gz";
-    sha256 = "sha256-oyigIfU9wFRZvmBmAg6acejqtiVdM4HiJpYSDUZcapc=";
+    sha256 = "sha256-l12MHMLEHHztxOMjr/A12Xf+ual/ApbdKopm0Zelsnw=";
   };
 
   nativeBuildInputs = [ makeWrapper pkg-config texinfo ] ++ lib.optional withQt qttools;
@@ -88,5 +88,6 @@ in
       url = "https://sourceforge.net/p/gnuplot/gnuplot-main/ci/master/tree/Copyright";
     };
     maintainers = with maintainers; [ lovek323 ];
+    mainProgram = "gnuplot";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/goverlay/default.nix b/nixpkgs/pkgs/tools/graphics/goverlay/default.nix
index d4f88a770a01..b73216a7875c 100644
--- a/nixpkgs/pkgs/tools/graphics/goverlay/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/goverlay/default.nix
@@ -113,5 +113,6 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ kira-bruneau ];
     platforms = platforms.linux;
+    mainProgram = "goverlay";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/graph-cli/default.nix b/nixpkgs/pkgs/tools/graphics/graph-cli/default.nix
index c504d6b27156..be6769d85e9a 100644
--- a/nixpkgs/pkgs/tools/graphics/graph-cli/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/graph-cli/default.nix
@@ -28,5 +28,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/mcastorina/graph-cli/";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ leungbk ];
+    mainProgram = "graph";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/graph-easy/default.nix b/nixpkgs/pkgs/tools/graphics/graph-easy/default.nix
index 4f3b89eea917..668c7527e9e4 100644
--- a/nixpkgs/pkgs/tools/graphics/graph-easy/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/graph-easy/default.nix
@@ -13,5 +13,6 @@ perlPackages.buildPerlPackage {
     license = licenses.gpl1Only;
     platforms = platforms.unix;
     maintainers = [ maintainers.jensbin ];
+    mainProgram = "graph-easy";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/gromit-mpx/default.nix b/nixpkgs/pkgs/tools/graphics/gromit-mpx/default.nix
index d98ee8733a04..0a54626419b5 100644
--- a/nixpkgs/pkgs/tools/graphics/gromit-mpx/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/gromit-mpx/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ pjones ];
     platforms = platforms.linux;
     license = licenses.gpl2Plus;
+    mainProgram = "gromit-mpx";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/guff/default.nix b/nixpkgs/pkgs/tools/graphics/guff/default.nix
index daca6f4344eb..2ca68376baa2 100644
--- a/nixpkgs/pkgs/tools/graphics/guff/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/guff/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = [ maintainers.marsam ];
     platforms = platforms.all;
+    mainProgram = "guff";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/ibniz/default.nix b/nixpkgs/pkgs/tools/graphics/ibniz/default.nix
index a74267846c1d..04aadf911e1e 100644
--- a/nixpkgs/pkgs/tools/graphics/ibniz/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/ibniz/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.zlib;
     platforms = platforms.linux;
     maintainers = [ maintainers.dezgeg ];
+    mainProgram = "ibniz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/imgur-screenshot/default.nix b/nixpkgs/pkgs/tools/graphics/imgur-screenshot/default.nix
index 885638c28b8c..fe23866bda0b 100644
--- a/nixpkgs/pkgs/tools/graphics/imgur-screenshot/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/imgur-screenshot/default.nix
@@ -25,5 +25,6 @@ in stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.mit;
     maintainers = with maintainers; [ lw ];
+    mainProgram = "imgur-screenshot";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/imgurbash2/default.nix b/nixpkgs/pkgs/tools/graphics/imgurbash2/default.nix
index 6c0e827a8488..e577c8be5a3d 100644
--- a/nixpkgs/pkgs/tools/graphics/imgurbash2/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/imgurbash2/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     maintainers = with maintainers; [ abbradar ];
     homepage = "https://github.com/ram-on/imgurbash2";
+    mainProgram = "imgurbash2";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/jhead/default.nix b/nixpkgs/pkgs/tools/graphics/jhead/default.nix
index 35000088fea9..391780a4df35 100644
--- a/nixpkgs/pkgs/tools/graphics/jhead/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/jhead/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = licenses.publicDomain;
     maintainers = with maintainers; [ rycee ];
     platforms = platforms.all;
+    mainProgram = "jhead";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/jpegexiforient/default.nix b/nixpkgs/pkgs/tools/graphics/jpegexiforient/default.nix
index 09d096e7b687..bdf2ce12e837 100644
--- a/nixpkgs/pkgs/tools/graphics/jpegexiforient/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/jpegexiforient/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation {
     license = licenses.free;
     platforms = platforms.all;
     maintainers = with maintainers; [ infinisil ];
+    mainProgram = "jpegexiforient";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/leela/default.nix b/nixpkgs/pkgs/tools/graphics/leela/default.nix
index 6676e47ad492..7ddf02d16369 100644
--- a/nixpkgs/pkgs/tools/graphics/leela/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/leela/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation {
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.puffnfresh ];
     platforms = lib.platforms.linux;
+    mainProgram = "leela";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/logstalgia/default.nix b/nixpkgs/pkgs/tools/graphics/logstalgia/default.nix
index 8edde6e3f428..69084a8b5370 100644
--- a/nixpkgs/pkgs/tools/graphics/logstalgia/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/logstalgia/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
 
     platforms = platforms.gnu ++ platforms.linux;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "logstalgia";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/lsix/default.nix b/nixpkgs/pkgs/tools/graphics/lsix/default.nix
index dcf078654b82..7cbe2ee8626c 100644
--- a/nixpkgs/pkgs/tools/graphics/lsix/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/lsix/default.nix
@@ -32,5 +32,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.all;
     maintainers = with maintainers; [ kidonng ];
+    mainProgram = "lsix";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/mscgen/default.nix b/nixpkgs/pkgs/tools/graphics/mscgen/default.nix
index 7eb1d6cce818..a391a62ccb68 100644
--- a/nixpkgs/pkgs/tools/graphics/mscgen/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/mscgen/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     '';
 
     platforms = lib.platforms.unix;
+    mainProgram = "mscgen";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/nifskope/default.nix b/nixpkgs/pkgs/tools/graphics/nifskope/default.nix
index f74b720ea9ea..056b3ad8d065 100644
--- a/nixpkgs/pkgs/tools/graphics/nifskope/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/nifskope/default.nix
@@ -63,5 +63,6 @@ stdenv.mkDerivation {
     maintainers = with maintainers; [ eelco ];
     platforms = platforms.linux;
     license = licenses.bsd3;
+    mainProgram = "NifSkope";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/nip2/default.nix b/nixpkgs/pkgs/tools/graphics/nip2/default.nix
index 08ec885aed14..651baf547a9e 100644
--- a/nixpkgs/pkgs/tools/graphics/nip2/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/nip2/default.nix
@@ -52,5 +52,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ kovirobi ];
     platforms = platforms.unix;
+    mainProgram = "nip2";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/optipng/default.nix b/nixpkgs/pkgs/tools/graphics/optipng/default.nix
index 3e9127a9a9ae..bbabcaf6b800 100644
--- a/nixpkgs/pkgs/tools/graphics/optipng/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/optipng/default.nix
@@ -6,22 +6,26 @@
 
 stdenv.mkDerivation rec {
   pname = "optipng";
-  version = "0.7.7";
+  version = "0.7.8";
 
   src = fetchurl {
     url = "mirror://sourceforge/optipng/optipng-${version}.tar.gz";
-    sha256 = "0lj4clb851fzpaq446wgj0sfy922zs5l5misbpwv6w7qrqrz4cjg";
+    hash = "sha256-JaO9aEgfIVAsyqD0wT+E3PayAzjkxOjFHyzvvYUTOYw=";
   };
 
   buildInputs = [ libpng ];
 
-  LDFLAGS = lib.optional static "-static";
   # Workaround for crash in cexcept.h. See
   # https://github.com/NixOS/nixpkgs/issues/28106
   preConfigure = ''
     export LD=$CC
   '';
 
+  # OptiPNG does not like --static, --build or --host
+  dontDisableStatic = true;
+  dontAddStaticConfigureFlags = true;
+  configurePlatforms = [ ];
+
   configureFlags = [
     "--with-system-zlib"
     "--with-system-libpng"
@@ -38,5 +42,6 @@ stdenv.mkDerivation rec {
     description = "A PNG optimizer";
     license = licenses.zlib;
     platforms = platforms.unix;
+    mainProgram = "optipng";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/oxipng/default.nix b/nixpkgs/pkgs/tools/graphics/oxipng/default.nix
index 8f4793edb45d..23f9692597a3 100644
--- a/nixpkgs/pkgs/tools/graphics/oxipng/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/oxipng/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     description = "A multithreaded lossless PNG compression optimizer";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dywedir ];
+    mainProgram = "oxipng";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pdf2svg/default.nix b/nixpkgs/pkgs/tools/graphics/pdf2svg/default.nix
index c6d2eab45376..b68ba12ebfe9 100644
--- a/nixpkgs/pkgs/tools/graphics/pdf2svg/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pdf2svg/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.ianwookim ];
     platforms = platforms.unix;
+    mainProgram = "pdf2svg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pdftag/default.nix b/nixpkgs/pkgs/tools/graphics/pdftag/default.nix
index c10412c976ce..90b8dde05f37 100644
--- a/nixpkgs/pkgs/tools/graphics/pdftag/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pdftag/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ leenaars ];
     platforms = platforms.unix;
+    mainProgram = "pdftag";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pdftoipe/default.nix b/nixpkgs/pkgs/tools/graphics/pdftoipe/default.nix
index d7e757e679bf..e969d90f9e05 100644
--- a/nixpkgs/pkgs/tools/graphics/pdftoipe/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pdftoipe/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     changelog = "https://github.com/otfried/ipe-tools/releases";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ yrd ];
+    mainProgram = "pdftoipe";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/perceptualdiff/default.nix b/nixpkgs/pkgs/tools/graphics/perceptualdiff/default.nix
index 919b99327110..aa88b33aa381 100644
--- a/nixpkgs/pkgs/tools/graphics/perceptualdiff/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/perceptualdiff/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ uri-canva ];
     platforms = platforms.unix;
+    mainProgram = "perceptualdiff";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/piglit/default.nix b/nixpkgs/pkgs/tools/graphics/piglit/default.nix
index 561268b3f4b3..aa076d1b84e0 100644
--- a/nixpkgs/pkgs/tools/graphics/piglit/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/piglit/default.nix
@@ -73,5 +73,6 @@ stdenv.mkDerivation rec {
     license = licenses.free; # custom license. See COPYING in the source repo.
     platforms = platforms.mesaPlatforms;
     maintainers = with maintainers; [ Flakebi ];
+    mainProgram = "piglit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pixel2svg/default.nix b/nixpkgs/pkgs/tools/graphics/pixel2svg/default.nix
index 8e5e86624900..1094cad56a33 100644
--- a/nixpkgs/pkgs/tools/graphics/pixel2svg/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pixel2svg/default.nix
@@ -16,5 +16,6 @@ python310Packages.buildPythonPackage rec {
     description = "Converts pixel art to SVG - pixel by pixel";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ annaaurora ];
+    mainProgram = "pixel2svg.py";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pngcheck/default.nix b/nixpkgs/pkgs/tools/graphics/pngcheck/default.nix
index a90881dad224..d6ed7a6960fc 100644
--- a/nixpkgs/pkgs/tools/graphics/pngcheck/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pngcheck/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.free;
     platforms = platforms.unix;
     maintainers = with maintainers; [ starcraft66 ];
+    mainProgram = "pngcheck";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pngcrush/default.nix b/nixpkgs/pkgs/tools/graphics/pngcrush/default.nix
index 16c710ceb79f..8ce9965eae25 100644
--- a/nixpkgs/pkgs/tools/graphics/pngcrush/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pngcrush/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     description = "A PNG optimizer";
     license = lib.licenses.free;
     platforms = with lib.platforms; linux ++ darwin;
+    mainProgram = "pngcrush";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pngloss/default.nix b/nixpkgs/pkgs/tools/graphics/pngloss/default.nix
index eafd77054e40..7eca91f42d7d 100644
--- a/nixpkgs/pkgs/tools/graphics/pngloss/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pngloss/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ _2gn ];
+    mainProgram = "pngloss";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pngout/default.nix b/nixpkgs/pkgs/tools/graphics/pngout/default.nix
index 2b86f5e5e136..c80d4a65adc9 100644
--- a/nixpkgs/pkgs/tools/graphics/pngout/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pngout/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     homepage = "http://advsys.net/ken/utils.htm";
     platforms = lib.attrNames platforms;
     maintainers = [ lib.maintainers.sander ];
+    mainProgram = "pngout";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pngtoico/default.nix b/nixpkgs/pkgs/tools/graphics/pngtoico/default.nix
index 7abf94f0a3e1..c480f99651dc 100644
--- a/nixpkgs/pkgs/tools/graphics/pngtoico/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pngtoico/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     description = "Small utility to convert a set of PNG images to Microsoft ICO format";
     license = lib.licenses.gpl2Plus;
     platforms = with lib.platforms; linux;
+    mainProgram = "pngtoico";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/povray/default.nix b/nixpkgs/pkgs/tools/graphics/povray/default.nix
index f9a08543fb95..5e432a0d13c4 100644
--- a/nixpkgs/pkgs/tools/graphics/povray/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/povray/default.nix
@@ -57,5 +57,6 @@ stdenv.mkDerivation rec {
     description = "Persistence of Vision Raytracer";
     license = licenses.free;
     platforms = platforms.linux;
+    mainProgram = "povray";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/pstoedit/default.nix b/nixpkgs/pkgs/tools/graphics/pstoedit/default.nix
index df3d1c6a6938..3bd4c1a86fbc 100644
--- a/nixpkgs/pkgs/tools/graphics/pstoedit/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/pstoedit/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.marcweber ];
     platforms = platforms.unix;
+    mainProgram = "pstoedit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/qrcode/default.nix b/nixpkgs/pkgs/tools/graphics/qrcode/default.nix
index 3f1404404005..ce623e25db0e 100644
--- a/nixpkgs/pkgs/tools/graphics/qrcode/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/qrcode/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ raskin ];
     platforms = with platforms; unix;
+    mainProgram = "qrcode";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/cmakelists.patch b/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/cmakelists.patch
index 17490b7ce777..faeb65d3b847 100644
--- a/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/cmakelists.patch
+++ b/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/cmakelists.patch
@@ -1,11 +1,11 @@
 diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a234caa..d94388a 100644
+index 1e7b71a..9db85b1 100644
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
 @@ -107,6 +107,8 @@ if(USE_SYSTEM_NCNN)
- 
+
          find_package(Threads)
- 
+
 +        include("${GLSLANG_TARGET_DIR}/SPIRV-Tools/SPIRV-ToolsTarget.cmake")
 +        include("${GLSLANG_TARGET_DIR}/SPIRV-Tools-opt/SPIRV-Tools-optTargets.cmake")
          include("${GLSLANG_TARGET_DIR}/OSDependentTargets.cmake")
diff --git a/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix b/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix
index 05cb130467a7..4bc67f1e6a47 100644
--- a/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix
@@ -12,21 +12,21 @@
 
 stdenv.mkDerivation rec {
   pname = "Real-ESRGAN-ncnn-vulkan";
-  version = "0.1.3.2";
+  version = "0.2.0";
 
   src = fetchFromGitHub {
     owner = "xinntao";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-eLAIlOl1sUxijeVPFG+NscZGxDdtrQqVkMuxhegESHk=";
+    sha256 = "sha256-F+NfkAbk8UtAKzsF42ppPF2UGjK/M6iFfBsRRBbCmcI=";
   };
   sourceRoot = "${src.name}/src";
 
   models = fetchzip {
     # Choose the newst release from https://github.com/xinntao/Real-ESRGAN/releases to update
-    url = "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.3.0/realesrgan-ncnn-vulkan-20211212-ubuntu.zip";
+    url = "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesrgan-ncnn-vulkan-20220424-ubuntu.zip";
     stripRoot = false;
-    sha256 = "sha256-17k6fewVEXxx7hi+vPXjHAOq4IIUHLh7WC80CwTeFKI=";
+    sha256 = "sha256-1YiPzv1eGnHrazJFRvl37+C1F2xnoEbN0UQYkxLT+JQ=";
   };
 
   patches = [
@@ -60,5 +60,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ tilcreator ];
     platforms = platforms.all;
+    mainProgram = "realesrgan-ncnn-vulkan";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/models_path.patch b/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/models_path.patch
index 43b8e4503be2..8cd2d6d1e982 100644
--- a/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/models_path.patch
+++ b/nixpkgs/pkgs/tools/graphics/realesrgan-ncnn-vulkan/models_path.patch
@@ -1,14 +1,14 @@
 diff --git a/main.cpp b/main.cpp
-index eb6f6c8..b230bed 100644
+index ebe0e62..ef3a1ed 100644
 --- a/main.cpp
 +++ b/main.cpp
-@@ -110,7 +110,7 @@ static void print_usage()
+@@ -109,7 +109,7 @@ static void print_usage()
      fprintf(stderr, "  -o output-path       output image path (jpg/png/webp) or directory\n");
-     fprintf(stderr, "  -s scale             upscale ratio (can be 2, 4. default=4)\n");
+     fprintf(stderr, "  -s scale             upscale ratio (can be 2, 3, 4. default=4)\n");
      fprintf(stderr, "  -t tile-size         tile size (>=32/0=auto, default=0) can be 0,0,0 for multi-gpu\n");
--    fprintf(stderr, "  -m model-path        folder path to pre-trained models(default=models)\n");
-+    fprintf(stderr, "  -m model-path        folder path to pre-trained models(default=REPLACE_MODELS)\n");
-     fprintf(stderr, "  -n model-name        model name (default=realesrgan-x4plus, can be realesrgan-x4plus | realesrgan-x4plus-anime | realesrnet-x4plus | RealESRGANv2-animevideo-xsx2 | RealESRGANv2-animevideo-xsx4 | RealESRGANv2-anime-xsx2 | RealESRGANv2-anime-xsx4)\n");
+-    fprintf(stderr, "  -m model-path        folder path to the pre-trained models. default=models\n");
++    fprintf(stderr, "  -m model-path        folder path to the pre-trained models. default=REPLACE_MODELS\n");
+     fprintf(stderr, "  -n model-name        model name (default=realesr-animevideov3, can be realesr-animevideov3 | realesrgan-x4plus | realesrgan-x4plus-anime | realesrnet-x4plus)\n");
      fprintf(stderr, "  -g gpu-id            gpu device to use (default=auto) can be 0,1,2 for multi-gpu\n");
      fprintf(stderr, "  -j load:proc:save    thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu\n");
 @@ -438,7 +438,7 @@ int main(int argc, char** argv)
@@ -17,6 +17,6 @@ index eb6f6c8..b230bed 100644
      std::vector<int> tilesize;
 -    path_t model = PATHSTR("models");
 +    path_t model = PATHSTR("REPLACE_MODELS");
-     path_t modelname = PATHSTR("realesrgan-x4plus");
+     path_t modelname = PATHSTR("realesr-animevideov3");
      std::vector<int> gpuid;
      int jobs_load = 1;
diff --git a/nixpkgs/pkgs/tools/graphics/s2png/default.nix b/nixpkgs/pkgs/tools/graphics/s2png/default.nix
index d3f8b74512a8..940e9db05419 100644
--- a/nixpkgs/pkgs/tools/graphics/s2png/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/s2png/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2;
     maintainers = [ lib.maintainers.dbohdan ];
     platforms = lib.platforms.unix;
+    mainProgram = "s2png";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/sanjuuni/default.nix b/nixpkgs/pkgs/tools/graphics/sanjuuni/default.nix
index 71807b0db019..6b96e6ad5a92 100644
--- a/nixpkgs/pkgs/tools/graphics/sanjuuni/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/sanjuuni/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.tomodachi94 ];
     license = licenses.gpl2Plus;
     broken = stdenv.isDarwin;
+    mainProgram = "sanjuuni";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/shot-scraper/default.nix b/nixpkgs/pkgs/tools/graphics/shot-scraper/default.nix
index e083014f8a98..60aee277b60f 100644
--- a/nixpkgs/pkgs/tools/graphics/shot-scraper/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/shot-scraper/default.nix
@@ -35,5 +35,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/simonw/shot-scraper/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ techknowlogick ];
+    mainProgram = "shot-scraper";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/shotgun/default.nix b/nixpkgs/pkgs/tools/graphics/shotgun/default.nix
index 30d676d4b2ef..d2d3c92982f6 100644
--- a/nixpkgs/pkgs/tools/graphics/shotgun/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/shotgun/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ mpl20 ];
     maintainers = with maintainers; [ figsoda lumi novenary ];
     platforms = platforms.linux;
+    mainProgram = "shotgun";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/smartcrop/default.nix b/nixpkgs/pkgs/tools/graphics/smartcrop/default.nix
index d08c11fd3ebf..7660607a9a47 100644
--- a/nixpkgs/pkgs/tools/graphics/smartcrop/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/smartcrop/default.nix
@@ -23,5 +23,6 @@ buildGoModule {
     homepage = "https://github.com/muesli/smartcrop";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "smartcrop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/sng/default.nix b/nixpkgs/pkgs/tools/graphics/sng/default.nix
index 8ebfd967828b..a8db32128a5e 100644
--- a/nixpkgs/pkgs/tools/graphics/sng/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/sng/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.zlib;
     maintainers = [ maintainers.dezgeg ];
     platforms = platforms.unix;
+    mainProgram = "sng";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/spirv-cross/default.nix b/nixpkgs/pkgs/tools/graphics/spirv-cross/default.nix
index 642a49c39b84..cd7489be9aec 100644
--- a/nixpkgs/pkgs/tools/graphics/spirv-cross/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/spirv-cross/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation (finalAttrs: {
     platforms = platforms.all;
     license = licenses.asl20;
     maintainers = with maintainers; [ Flakebi ];
+    mainProgram = "spirv-cross";
   };
 })
diff --git a/nixpkgs/pkgs/tools/graphics/steghide/default.nix b/nixpkgs/pkgs/tools/graphics/steghide/default.nix
index 74011917d5fb..c62761bb2a21 100644
--- a/nixpkgs/pkgs/tools/graphics/steghide/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/steghide/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = with platforms; unix;
+    mainProgram = "steghide";
   };
 })
diff --git a/nixpkgs/pkgs/tools/graphics/stegsolve/default.nix b/nixpkgs/pkgs/tools/graphics/stegsolve/default.nix
index 3f147ab0deca..a42b3c304b28 100644
--- a/nixpkgs/pkgs/tools/graphics/stegsolve/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/stegsolve/default.nix
@@ -55,5 +55,6 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     };
     maintainers = with maintainers; [ emilytrau ];
     platforms = platforms.all;
+    mainProgram = "stegsolve";
   };
 })
diff --git a/nixpkgs/pkgs/tools/graphics/svg2pdf/default.nix b/nixpkgs/pkgs/tools/graphics/svg2pdf/default.nix
index 27ef2edd0fa8..24065574ddcc 100644
--- a/nixpkgs/pkgs/tools/graphics/svg2pdf/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/svg2pdf/default.nix
@@ -5,16 +5,20 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "svg2pdf";
-  version = "0.9.0";
+  version = "0.9.1";
 
   src = fetchFromGitHub {
     owner = "typst";
     repo = "svg2pdf";
     rev = "v${version}";
-    hash = "sha256-Xy1ID2/M3v9/ZEo8fWEDlJ8+cmgAMdHhs27xDfe8IYQ=";
+    hash = "sha256-mWj9zWxqcJ+5VFYSaeNLxClWdOGd34JboZBwT8E75Ew=";
   };
-  cargoHash = "sha256-l3671zvqSM4CY7lOXOur0Q6PBDVf6jXnhZ/8kADWQz4=";
-  buildFeatures = [ "cli" ];
+
+  cargoHash = "sha256-zP448dFnkoPca/GJA2kT5ht1fVGkWN0XdaKEePJaloQ=";
+
+  cargoBuildFlags = [
+    "-p=svg2pdf-cli"
+  ];
 
   meta = with lib; {
     description = "Convert SVG files to PDFs";
@@ -22,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/typst/svg2pdf/releases/tag/${src.rev}";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ doronbehar figsoda ];
+    mainProgram = "svg2pdf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/svgbob/default.nix b/nixpkgs/pkgs/tools/graphics/svgbob/default.nix
index e5974d04e1ae..b09d8dee1ab0 100644
--- a/nixpkgs/pkgs/tools/graphics/svgbob/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/svgbob/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/ivanceras/svgbob/raw/${version}/Changelog.md";
     license = licenses.asl20;
     maintainers = [ maintainers.marsam ];
+    mainProgram = "svgbob";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/svgcleaner/default.nix b/nixpkgs/pkgs/tools/graphics/svgcleaner/default.nix
index c2938a69b57a..1ec42817456a 100644
--- a/nixpkgs/pkgs/tools/graphics/svgcleaner/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/svgcleaner/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/RazrFalcon/svgcleaner/releases";
     license = licenses.gpl2;
     maintainers = with maintainers; [ yuu ];
+    mainProgram = "svgcleaner";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/textplots/default.nix b/nixpkgs/pkgs/tools/graphics/textplots/default.nix
index a423ca9f30e2..81d9b5de3e36 100644
--- a/nixpkgs/pkgs/tools/graphics/textplots/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/textplots/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/loony-bean/textplots-rs";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "textplots";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/texture-synthesis/default.nix b/nixpkgs/pkgs/tools/graphics/texture-synthesis/default.nix
index d4f66357fadc..7122450587a7 100644
--- a/nixpkgs/pkgs/tools/graphics/texture-synthesis/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/texture-synthesis/default.nix
@@ -26,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/embarkstudios/texture-synthesis";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "texture-synthesis";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/timg/default.nix b/nixpkgs/pkgs/tools/graphics/timg/default.nix
index 43a2ae16ed34..2379e3c8188e 100644
--- a/nixpkgs/pkgs/tools/graphics/timg/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/timg/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "timg";
-  version = "1.5.2";
+  version = "1.5.3";
 
   src = fetchFromGitHub {
     owner = "hzeller";
     repo = "timg";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-e2Uy1jvS0+gdhto4Sgz6YlqEqXJ7KGUAA6iuixfvvJg=";
+    hash = "sha256-u52ipc3I57ldKXjmXqFuIXIYIrs5c9TSvgs1HfIu44U=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/tools/graphics/twilight/default.nix b/nixpkgs/pkgs/tools/graphics/twilight/default.nix
index 58d4d0df9133..52941f7b96d7 100644
--- a/nixpkgs/pkgs/tools/graphics/twilight/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/twilight/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
+    mainProgram = "twilight";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/viu/default.nix b/nixpkgs/pkgs/tools/graphics/viu/default.nix
index ade2dd7331bf..83c97376676a 100644
--- a/nixpkgs/pkgs/tools/graphics/viu/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/viu/default.nix
@@ -29,5 +29,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/atanunq/viu";
     license = licenses.mit;
     maintainers = with maintainers; [ chuangzhu ];
+    mainProgram = "viu";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/vkbasalt-cli/default.nix b/nixpkgs/pkgs/tools/graphics/vkbasalt-cli/default.nix
index 0d54f695e9af..efe704ace293 100644
--- a/nixpkgs/pkgs/tools/graphics/vkbasalt-cli/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/vkbasalt-cli/default.nix
@@ -27,5 +27,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://gitlab.com/TheEvilSkeleton/vkbasalt-cli";
     license = with licenses; [ lgpl3Only gpl3Only ];
     maintainers = with maintainers; [ martfont ];
+    mainProgram = "vkbasalt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/vkdisplayinfo/default.nix b/nixpkgs/pkgs/tools/graphics/vkdisplayinfo/default.nix
index a48c4d1154fe..3a88b2e21147 100644
--- a/nixpkgs/pkgs/tools/graphics/vkdisplayinfo/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/vkdisplayinfo/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.boost;
     maintainers = [ maintainers.LunNova ];
+    mainProgram = "vkdisplayinfo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/vkmark/default.nix b/nixpkgs/pkgs/tools/graphics/vkmark/default.nix
index 2923c786507e..d9c4f8a2024f 100644
--- a/nixpkgs/pkgs/tools/graphics/vkmark/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/vkmark/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = with licenses; [ lgpl21Plus ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ muscaln ];
+    mainProgram = "vkmark";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/vulkan-cts/default.nix b/nixpkgs/pkgs/tools/graphics/vulkan-cts/default.nix
index aba088a1128f..983d96f8d1f3 100644
--- a/nixpkgs/pkgs/tools/graphics/vulkan-cts/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/vulkan-cts/default.nix
@@ -1,6 +1,7 @@
 { lib, stdenv
 , fetchFromGitHub
 , fetchurl
+, runCommand
 , cmake
 , ffmpeg_4
 , libdrm
@@ -12,6 +13,7 @@
 , libXdmcp
 , libxcb
 , makeWrapper
+, mesa
 , ninja
 , pkg-config
 , python3
@@ -37,13 +39,13 @@ let
 in
 stdenv.mkDerivation (finalAttrs: {
   pname = "vulkan-cts";
-  version = "1.3.7.0";
+  version = "1.3.7.2";
 
   src = fetchFromGitHub {
     owner = "KhronosGroup";
     repo = "VK-GL-CTS";
     rev = "${finalAttrs.pname}-${finalAttrs.version}";
-    hash = "sha256-f7i7gytk3cKeFQD0FR+nrUR2o0FWaJWKG7OpDz9u42E=";
+    hash = "sha256-TnHFCEGKgn1U00aUDMX7UEWSeTjzysmX7rOQCZTL8FU=";
   };
 
   prePatch = ''
@@ -104,6 +106,12 @@ stdenv.mkDerivation (finalAttrs: {
   '';
 
   passthru.updateScript = ./update.sh;
+  passthru.tests.lavapipe = runCommand "vulkan-cts-tests-lavapipe" { nativeBuildInputs = [ finalAttrs.finalPackage ]; } ''
+    # Expand the wildcard to pick the existing architecture
+    export VK_ICD_FILENAMES=$(echo ${mesa.drivers}/share/vulkan/icd.d/lvp_icd.*.json)
+    deqp-vk -n dEQP-VK.api.smoke.triangle
+    touch $out
+  '';
 
   meta = with lib; {
     description = "Khronos Vulkan Conformance Tests";
diff --git a/nixpkgs/pkgs/tools/graphics/vulkan-cts/sources.nix b/nixpkgs/pkgs/tools/graphics/vulkan-cts/sources.nix
index 59480657da06..647b5e12c2d9 100644
--- a/nixpkgs/pkgs/tools/graphics/vulkan-cts/sources.nix
+++ b/nixpkgs/pkgs/tools/graphics/vulkan-cts/sources.nix
@@ -32,8 +32,8 @@ rec {
   nvidia-video-samples = fetchFromGitHub {
     owner = "Igalia";
     repo = "vk_video_samples";
-    rev = "cts-integration-0.9.9-1";
-    hash = "sha256-vHUyGAx/n8yTnrFjeefbb8LsHxONxsjH3BG2D/RO99E=";
+    rev = "cts-integration-0.9.9-2";
+    hash = "sha256-ftHhb5u3l7WbgEu6hHynBnvNbVOn5TFne915M17jiAQ=";
   };
 
   spirv-headers = fetchFromGitHub {
diff --git a/nixpkgs/pkgs/tools/graphics/vulkan-helper/default.nix b/nixpkgs/pkgs/tools/graphics/vulkan-helper/default.nix
index 8db735c662e8..404ce734b5b3 100644
--- a/nixpkgs/pkgs/tools/graphics/vulkan-helper/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/vulkan-helper/default.nix
@@ -33,5 +33,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ aidalgol ];
     platforms = platforms.linux;
+    mainProgram = "vulkan-helper";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix b/nixpkgs/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix
index f936ab83fb56..dd2c15c8fda4 100644
--- a/nixpkgs/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.xzfc ];
     platforms = lib.platforms.linux ++ lib.platforms.darwin;
+    mainProgram = "waifu2x-converter-cpp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/xcolor/default.nix b/nixpkgs/pkgs/tools/graphics/xcolor/default.nix
index dabe14d895fa..50aa912522d9 100644
--- a/nixpkgs/pkgs/tools/graphics/xcolor/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/xcolor/default.nix
@@ -43,5 +43,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/Soft/xcolor";
     maintainers = with lib.maintainers; [ moni ];
     license = licenses.mit;
+    mainProgram = "xcolor";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/xcur2png/default.nix b/nixpkgs/pkgs/tools/graphics/xcur2png/default.nix
index e8d761c6d842..5d5396aea273 100644
--- a/nixpkgs/pkgs/tools/graphics/xcur2png/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/xcur2png/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.unix;
     maintainers = with maintainers; [ romildo ];
+    mainProgram = "xcur2png";
   };
 }
diff --git a/nixpkgs/pkgs/tools/graphics/yaxg/default.nix b/nixpkgs/pkgs/tools/graphics/yaxg/default.nix
index 9d83ae71d333..dd428ae0c427 100644
--- a/nixpkgs/pkgs/tools/graphics/yaxg/default.nix
+++ b/nixpkgs/pkgs/tools/graphics/yaxg/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ neonfuz ];
+    mainProgram = "yaxg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/inputmethods/emote/default.nix b/nixpkgs/pkgs/tools/inputmethods/emote/default.nix
index 15e9a4968535..8e3d7227d1bd 100644
--- a/nixpkgs/pkgs/tools/inputmethods/emote/default.nix
+++ b/nixpkgs/pkgs/tools/inputmethods/emote/default.nix
@@ -29,9 +29,9 @@ python3Packages.buildPythonApplication rec {
   ];
 
   propagatedBuildInputs = with python3Packages; [
-    dbus-python
+    dbus-python.out # don't propagate dev output
     manimpango
-    pygobject3 # not listed in setup.py
+    pygobject3.out # not listed in setup.py, don't propagate dev output
     setproctitle
   ];
 
diff --git a/nixpkgs/pkgs/tools/inputmethods/fusuma/default.nix b/nixpkgs/pkgs/tools/inputmethods/fusuma/default.nix
index 58cbe91e3c57..0622ce699f8c 100644
--- a/nixpkgs/pkgs/tools/inputmethods/fusuma/default.nix
+++ b/nixpkgs/pkgs/tools/inputmethods/fusuma/default.nix
@@ -18,7 +18,7 @@ bundlerApp {
     description = "Multitouch gestures with libinput driver on X11, Linux";
     homepage = "https://github.com/iberianpig/fusuma";
     license = licenses.mit;
-    maintainers = with maintainers; [ jfrankenau nicknovitski Br1ght0ne ];
+    maintainers = with maintainers; [ nicknovitski Br1ght0ne ];
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix b/nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix
index cb1902617325..33426862004d 100644
--- a/nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix
+++ b/nixpkgs/pkgs/tools/inputmethods/ibus-engines/ibus-m17n/default.nix
@@ -13,13 +13,13 @@
 
 stdenv.mkDerivation rec {
   pname = "ibus-m17n";
-  version = "1.4.23";
+  version = "1.4.24";
 
   src = fetchFromGitHub {
     owner = "ibus";
     repo = "ibus-m17n";
     rev = version;
-    sha256 = "sha256-7bmWyk7A+dXu1jjD5j9P/w88PVqPnNSxE1Kgj+Xpvyg=";
+    sha256 = "sha256-E5+IA2tH9wes6Soj9DPw1cdfQ9PINUy9zKJHMt9/fjY=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/inputmethods/lisgd/default.nix b/nixpkgs/pkgs/tools/inputmethods/lisgd/default.nix
index f04964fbb839..dd57f61de9d6 100644
--- a/nixpkgs/pkgs/tools/inputmethods/lisgd/default.nix
+++ b/nixpkgs/pkgs/tools/inputmethods/lisgd/default.nix
@@ -11,13 +11,13 @@
 
 stdenv.mkDerivation rec {
   pname = "lisgd";
-  version = "0.3.7";
+  version = "0.4.0";
 
   src = fetchFromSourcehut {
     owner = "~mil";
     repo = "lisgd";
     rev = version;
-    hash = "sha256-3kmGpgZpCH7CkN+d1+5ygXOi8E0Ojcgw6Fbd0T9z7z0=";
+    hash = "sha256-ljRZpBo4lW2cYZYxKKMrXanE0YaHSFwcdyECK0czdWY=";
   };
 
   inherit patches;
diff --git a/nixpkgs/pkgs/tools/inputmethods/triggerhappy/default.nix b/nixpkgs/pkgs/tools/inputmethods/triggerhappy/default.nix
index e7ef0f8accf1..73df87a8262e 100644
--- a/nixpkgs/pkgs/tools/inputmethods/triggerhappy/default.nix
+++ b/nixpkgs/pkgs/tools/inputmethods/triggerhappy/default.nix
@@ -31,6 +31,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/wertarbyte/triggerhappy/";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ jfrankenau taha ];
+    maintainers = with maintainers; [ taha ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/llm/gorilla-cli/default.nix b/nixpkgs/pkgs/tools/llm/gorilla-cli/default.nix
index ff5e3468ef91..276793c2c8bc 100644
--- a/nixpkgs/pkgs/tools/llm/gorilla-cli/default.nix
+++ b/nixpkgs/pkgs/tools/llm/gorilla-cli/default.nix
@@ -34,5 +34,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/gorilla-llm/gorilla-cli";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
+    mainProgram = "gorilla";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/aaa/default.nix b/nixpkgs/pkgs/tools/misc/aaa/default.nix
index 2f5751bd8558..0988bbca7acb 100644
--- a/nixpkgs/pkgs/tools/misc/aaa/default.nix
+++ b/nixpkgs/pkgs/tools/misc/aaa/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/DomesticMoth/aaa";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ asciimoth ];
+    mainProgram = "aaa";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/abduco/default.nix b/nixpkgs/pkgs/tools/misc/abduco/default.nix
index 9493df1c66c4..097cfd9170a9 100644
--- a/nixpkgs/pkgs/tools/misc/abduco/default.nix
+++ b/nixpkgs/pkgs/tools/misc/abduco/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     description = "Allows programs to be run independently from its controlling terminal";
     maintainers = with maintainers; [ pSub ];
     platforms = platforms.unix;
+    mainProgram = "abduco";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/adafruit-ampy/default.nix b/nixpkgs/pkgs/tools/misc/adafruit-ampy/default.nix
index 21f137e1a832..4a87c9692ca9 100644
--- a/nixpkgs/pkgs/tools/misc/adafruit-ampy/default.nix
+++ b/nixpkgs/pkgs/tools/misc/adafruit-ampy/default.nix
@@ -22,5 +22,6 @@ buildPythonApplication rec {
     license = licenses.mit;
     description = "Utility to interact with a MicroPython board over a serial connection";
     maintainers = with maintainers; [ ];
+    mainProgram = "ampy";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/addic7ed-cli/default.nix b/nixpkgs/pkgs/tools/misc/addic7ed-cli/default.nix
index 4648e123c635..d335cfb1d737 100644
--- a/nixpkgs/pkgs/tools/misc/addic7ed-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/addic7ed-cli/default.nix
@@ -27,5 +27,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.mit;
     maintainers = with maintainers; [ aethelz ];
     platforms = platforms.unix;
+    mainProgram = "addic7ed";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/addlicense/default.nix b/nixpkgs/pkgs/tools/misc/addlicense/default.nix
index 0ea6beadea80..9b0dc691054a 100644
--- a/nixpkgs/pkgs/tools/misc/addlicense/default.nix
+++ b/nixpkgs/pkgs/tools/misc/addlicense/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     homepage = "https://github.com/google/addlicense";
     license = licenses.asl20;
     maintainers = with maintainers; [ SuperSandro2000 ];
+    mainProgram = "addlicense";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/adrgen/default.nix b/nixpkgs/pkgs/tools/misc/adrgen/default.nix
index 6f8c50bd19d0..4a367062cafa 100644
--- a/nixpkgs/pkgs/tools/misc/adrgen/default.nix
+++ b/nixpkgs/pkgs/tools/misc/adrgen/default.nix
@@ -39,5 +39,6 @@ buildGoModule rec {
     description = "A command-line tool for generating and managing Architecture Decision Records";
     license = licenses.mit;
     maintainers = [ maintainers.ivar ];
+    mainProgram = "adrgen";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/afetch/default.nix b/nixpkgs/pkgs/tools/misc/afetch/default.nix
index aea2ff1ff2b9..9b8fe7e4e091 100644
--- a/nixpkgs/pkgs/tools/misc/afetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/afetch/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 jk ];
     platforms = platforms.linux;
+    mainProgram = "afetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/agedu/default.nix b/nixpkgs/pkgs/tools/misc/agedu/default.nix
index deee88a7303f..d8b2c1a2c5ca 100644
--- a/nixpkgs/pkgs/tools/misc/agedu/default.nix
+++ b/nixpkgs/pkgs/tools/misc/agedu/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation {
     license = licenses.mit;
     maintainers = with maintainers; [ symphorien ];
     platforms = platforms.unix;
+    mainProgram = "agedu";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/aichat/default.nix b/nixpkgs/pkgs/tools/misc/aichat/default.nix
index 6ec48a78fcf9..2fd1f885bfb3 100644
--- a/nixpkgs/pkgs/tools/misc/aichat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/aichat/default.nix
@@ -33,5 +33,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/sigoden/aichat";
     license = licenses.mit;
     maintainers = with maintainers; [ mwdomino ];
+    mainProgram = "aichat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/alarm-clock-applet/default.nix b/nixpkgs/pkgs/tools/misc/alarm-clock-applet/default.nix
index bcd898862270..525d65dd7e08 100644
--- a/nixpkgs/pkgs/tools/misc/alarm-clock-applet/default.nix
+++ b/nixpkgs/pkgs/tools/misc/alarm-clock-applet/default.nix
@@ -55,5 +55,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ aleksana ];
     platforms = platforms.linux;
+    mainProgram = "alarm-clock-applet";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/antimicrox/default.nix b/nixpkgs/pkgs/tools/misc/antimicrox/default.nix
index f989ae912edd..85e9af7bb67e 100644
--- a/nixpkgs/pkgs/tools/misc/antimicrox/default.nix
+++ b/nixpkgs/pkgs/tools/misc/antimicrox/default.nix
@@ -39,5 +39,6 @@ mkDerivation rec {
     maintainers = with maintainers; [ sbruder ];
     license = licenses.gpl3Plus;
     platforms = with platforms; linux;
+    mainProgram = "antimicrox";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/aoc-cli/default.nix b/nixpkgs/pkgs/tools/misc/aoc-cli/default.nix
index f33ffa073d47..4fec5647e04d 100644
--- a/nixpkgs/pkgs/tools/misc/aoc-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/aoc-cli/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/scarvalhojr/aoc-cli/";
     license = licenses.mit;
     maintainers = with maintainers; [ jordanisaacs ];
+    mainProgram = "aoc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/apkeep/default.nix b/nixpkgs/pkgs/tools/misc/apkeep/default.nix
index 6cce77d1d849..2da292b815b6 100644
--- a/nixpkgs/pkgs/tools/misc/apkeep/default.nix
+++ b/nixpkgs/pkgs/tools/misc/apkeep/default.nix
@@ -38,5 +38,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/EFForg/apkeep/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ joelkoen ];
+    mainProgram = "apkeep";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/apparix/default.nix b/nixpkgs/pkgs/tools/misc/apparix/default.nix
index 1c78a7854256..a75a9f03f300 100644
--- a/nixpkgs/pkgs/tools/misc/apparix/default.nix
+++ b/nixpkgs/pkgs/tools/misc/apparix/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ ];
     license = licenses.gpl2;
     platforms = platforms.all;
+    mainProgram = "apparix";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/apt-offline/default.nix b/nixpkgs/pkgs/tools/misc/apt-offline/default.nix
deleted file mode 100644
index 585033068d17..000000000000
--- a/nixpkgs/pkgs/tools/misc/apt-offline/default.nix
+++ /dev/null
@@ -1,40 +0,0 @@
-{ lib, fetchFromGitHub, python3Packages, nix-update-script, gnupg }:
-
-python3Packages.buildPythonApplication rec {
-  pname = "apt-offline";
-  version = "1.8.4";
-
-  src = fetchFromGitHub {
-    owner = "rickysarraf";
-    repo = pname;
-    rev = "v${version}";
-    sha256 = "RBf/QG0ewLS6gnQTBXi0I18z8QrxoBAqEXZ7dro9z5A=";
-  };
-
-  postPatch = ''
-    substituteInPlace org.debian.apt.aptoffline.policy \
-      --replace /usr/bin/ "$out/bin"
-
-    substituteInPlace apt_offline_core/AptOfflineCoreLib.py \
-      --replace /usr/bin/gpgv "${gnupg}/bin/gpgv"
-  '';
-
-  preFixup = ''
-    rm "$out/bin/apt-offline-gui"
-    rm "$out/bin/apt-offline-gui-pkexec"
-  '';
-
-  doCheck = false;
-
-  pythonImportsCheck = [ "apt_offline_core" ];
-
-  passthru.updateScript = nix-update-script { };
-
-  meta = with lib; {
-    homepage = "https://github.com/rickysarraf/apt-offline";
-    description = "Offline APT package manager";
-    license = licenses.gpl3;
-    maintainers = [ ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/nixpkgs/pkgs/tools/misc/aptly/default.nix b/nixpkgs/pkgs/tools/misc/aptly/default.nix
index f6dcd8e80aa1..6da10fe9b7fc 100644
--- a/nixpkgs/pkgs/tools/misc/aptly/default.nix
+++ b/nixpkgs/pkgs/tools/misc/aptly/default.nix
@@ -38,5 +38,6 @@ buildGoModule rec {
     maintainers = with maintainers; [ montag451 ] ++ teams.bitnomial.members;
     changelog =
       "https://github.com/aptly-dev/aptly/releases/tag/v${version}";
+    mainProgram = "aptly";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/aquosctl/default.nix b/nixpkgs/pkgs/tools/misc/aquosctl/default.nix
index d67005053b15..f8eba27e0fe4 100644
--- a/nixpkgs/pkgs/tools/misc/aquosctl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/aquosctl/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation {
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
     platforms = platforms.linux;
+    mainProgram = "aquosctl";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/misc/archi/default.nix b/nixpkgs/pkgs/tools/misc/archi/default.nix
index 793e06fb3d05..cbd22971dfcc 100644
--- a/nixpkgs/pkgs/tools/misc/archi/default.nix
+++ b/nixpkgs/pkgs/tools/misc/archi/default.nix
@@ -65,6 +65,8 @@ stdenv.mkDerivation rec {
         mv Archi.app "$out/Applications/"
       '';
 
+  passthru.updateScript = ./update.sh;
+
   passthru.tests = { inherit (nixosTests) archi; };
 
   meta = with lib; {
@@ -78,5 +80,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ earldouglas paumr ];
+    mainProgram = "Archi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/archi/update.sh b/nixpkgs/pkgs/tools/misc/archi/update.sh
new file mode 100755
index 000000000000..dbdf876a2a4f
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/archi/update.sh
@@ -0,0 +1,25 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl jq coreutils common-updater-scripts
+
+latestVersion=$(curl "https://api.github.com/repos/archimatetool/archi/tags" | jq -r '.[0].name' | tail -c +9)
+currentVersion=$(nix-instantiate --eval -E "with import ./. {}; archi.version or (lib.getVersion archi)" | tr -d '"')
+
+echo "latest  version: $latestVersion"
+echo "current version: $currentVersion"
+
+if [[ "$latestVersion" == "$currentVersion" ]]; then
+    echo "package is up-to-date"
+    exit 0
+fi
+
+hash_aarch64_darwin=$(nix-prefetch-url https://www.archimatetool.com/downloads/archi_5.php?/$latestVersion/Archi-Mac-Silicon-$latestVersion.dmg)
+hash_x86_64_darwin=$(nix-prefetch-url https://www.archimatetool.com/downloads/archi_5.php?/$latestVersion/Archi-Mac-$latestVersion.dmg)
+hash_x86_64_linux=$(nix-prefetch-url https://www.archimatetool.com/downloads/archi_5.php?/$latestVersion/Archi-Linux64-$latestVersion.tgz)
+
+update-source-version archi 0 "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" --system=aarch64-darwin
+update-source-version archi $latestVersion $hash_aarch64_darwin --system=aarch64-darwin
+update-source-version archi 0 "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" --system=x86_64-darwin
+update-source-version archi $latestVersion $hash_x86_64_darwin --system=x86_64-darwin
+update-source-version archi 0 "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=" --system=x86_64-linux
+update-source-version archi $latestVersion $hash_x86_64_linux --system=x86_64-linux
+
diff --git a/nixpkgs/pkgs/tools/misc/as-tree/default.nix b/nixpkgs/pkgs/tools/misc/as-tree/default.nix
index 3b0c7c270dba..f4c5eb1354de 100644
--- a/nixpkgs/pkgs/tools/misc/as-tree/default.nix
+++ b/nixpkgs/pkgs/tools/misc/as-tree/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/jez/as-tree";
     license = with licenses; [ blueOak100 ];
     maintainers = with maintainers; [ jshholland ];
+    mainProgram = "as-tree";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/asciinema-agg/default.nix b/nixpkgs/pkgs/tools/misc/asciinema-agg/default.nix
index 516051e11920..3b530eb28f6f 100644
--- a/nixpkgs/pkgs/tools/misc/asciinema-agg/default.nix
+++ b/nixpkgs/pkgs/tools/misc/asciinema-agg/default.nix
@@ -28,5 +28,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/asciinema/agg/releases/tag/${src.rev}";
     license = licenses.asl20;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "agg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/asciinema-scenario/default.nix b/nixpkgs/pkgs/tools/misc/asciinema-scenario/default.nix
index 45d1ba4a79ec..91102ab46eae 100644
--- a/nixpkgs/pkgs/tools/misc/asciinema-scenario/default.nix
+++ b/nixpkgs/pkgs/tools/misc/asciinema-scenario/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/garbas/asciinema-scenario/";
     maintainers = with maintainers; [ garbas ];
     license = with licenses; [ mit ];
+    mainProgram = "asciinema-scenario";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/askalono/default.nix b/nixpkgs/pkgs/tools/misc/askalono/default.nix
index 35d0bf5ff22a..3b9a0c9633e9 100644
--- a/nixpkgs/pkgs/tools/misc/askalono/default.nix
+++ b/nixpkgs/pkgs/tools/misc/askalono/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/jpeddicord/askalono/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "askalono";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/atuin/default.nix b/nixpkgs/pkgs/tools/misc/atuin/default.nix
index 61da92e88d84..2722512992d5 100644
--- a/nixpkgs/pkgs/tools/misc/atuin/default.nix
+++ b/nixpkgs/pkgs/tools/misc/atuin/default.nix
@@ -54,5 +54,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/atuinsh/atuin";
     license = licenses.mit;
     maintainers = with maintainers; [ SuperSandro2000 sciencentistguy _0x4A6F ];
+    mainProgram = "atuin";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/automirror/default.nix b/nixpkgs/pkgs/tools/misc/automirror/default.nix
index cc10c93b3f65..457303c6bc26 100644
--- a/nixpkgs/pkgs/tools/misc/automirror/default.nix
+++ b/nixpkgs/pkgs/tools/misc/automirror/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     description = "Automatic Display Mirror";
     license = licenses.gpl3;
     platforms = platforms.all;
+    mainProgram = "automirror";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/autorevision/default.nix b/nixpkgs/pkgs/tools/misc/autorevision/default.nix
index ab7add1261a9..f0d979769380 100644
--- a/nixpkgs/pkgs/tools/misc/autorevision/default.nix
+++ b/nixpkgs/pkgs/tools/misc/autorevision/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "autorevision";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bandwidth/default.nix b/nixpkgs/pkgs/tools/misc/bandwidth/default.nix
index 25a7e0647ef7..9a34442b2210 100644
--- a/nixpkgs/pkgs/tools/misc/bandwidth/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bandwidth/default.nix
@@ -53,5 +53,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.x86 ++ platforms.arm ++ platforms.aarch64;
     maintainers = with maintainers; [ r-burns ];
+    mainProgram = "bandwidth";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bartib/default.nix b/nixpkgs/pkgs/tools/misc/bartib/default.nix
index feea3e21954a..893fbe7b58a3 100644
--- a/nixpkgs/pkgs/tools/misc/bartib/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bartib/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/nikolassv/bartib";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "bartib";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bash_unit/default.nix b/nixpkgs/pkgs/tools/misc/bash_unit/default.nix
index 5857bea6251d..ffedb168f1b4 100644
--- a/nixpkgs/pkgs/tools/misc/bash_unit/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bash_unit/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ pamplemousse ];
     platforms = platforms.all;
     license = licenses.gpl3Plus;
+    mainProgram = "bash_unit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bashcards/default.nix b/nixpkgs/pkgs/tools/misc/bashcards/default.nix
index 30a442ef5623..bce5ab40e2dd 100644
--- a/nixpkgs/pkgs/tools/misc/bashcards/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bashcards/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ rpearce ];
     platforms = platforms.all;
+    mainProgram = "bashcards";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bbe/default.nix b/nixpkgs/pkgs/tools/misc/bbe/default.nix
index 1b734a83d3d3..58d099da4b06 100644
--- a/nixpkgs/pkgs/tools/misc/bbe/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bbe/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.hhm ];
+    mainProgram = "bbe";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bdf2psf/default.nix b/nixpkgs/pkgs/tools/misc/bdf2psf/default.nix
index 516e35a082ce..268b877629d8 100644
--- a/nixpkgs/pkgs/tools/misc/bdf2psf/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bdf2psf/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ rnhmjoj vrthra ];
     platforms = platforms.all;
+    mainProgram = "bdf2psf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bdf2sfd/default.nix b/nixpkgs/pkgs/tools/misc/bdf2sfd/default.nix
index f18e5e2d9627..73a72ffeb61a 100644
--- a/nixpkgs/pkgs/tools/misc/bdf2sfd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bdf2sfd/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     platforms = platforms.all;
     maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "bdf2sfd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bdfresize/default.nix b/nixpkgs/pkgs/tools/misc/bdfresize/default.nix
index ef3ffc873aa9..077b52430275 100644
--- a/nixpkgs/pkgs/tools/misc/bdfresize/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bdfresize/default.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation rec {
     homepage = "http://openlab.ring.gr.jp/efont/dist/tools/bdfresize/";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ malte-v ];
+    mainProgram = "bdfresize";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/beats/default.nix b/nixpkgs/pkgs/tools/misc/beats/default.nix
index 9b387a3939d5..a8ad2436f08c 100644
--- a/nixpkgs/pkgs/tools/misc/beats/default.nix
+++ b/nixpkgs/pkgs/tools/misc/beats/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     description = "Swatch Internet Time implemented as a C program";
     platforms = platforms.all;
     maintainers = [ maintainers.j0hax ];
+    mainProgram = "beats";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/betterdiscord-installer/default.nix b/nixpkgs/pkgs/tools/misc/betterdiscord-installer/default.nix
index 1de5b7c4cf69..f064f5227bf9 100644
--- a/nixpkgs/pkgs/tools/misc/betterdiscord-installer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/betterdiscord-installer/default.nix
@@ -28,5 +28,6 @@ in appimageTools.wrapType2 {
     license = licenses.mit;
     maintainers = [ maintainers.ivar ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "betterdiscord-installer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bfetch/default.nix b/nixpkgs/pkgs/tools/misc/bfetch/default.nix
index 675a8cb11f38..2d678da53233 100644
--- a/nixpkgs/pkgs/tools/misc/bfetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bfetch/default.nix
@@ -25,5 +25,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.all;
     maintainers = with maintainers; [ moni ];
+    mainProgram = "bfetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bibtool/default.nix b/nixpkgs/pkgs/tools/misc/bibtool/default.nix
index df27f244fca8..f9de299c87b2 100644
--- a/nixpkgs/pkgs/tools/misc/bibtool/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bibtool/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.all;
     maintainers = [ maintainers.rycee ];
+    mainProgram = "bibtool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bitwise/default.nix b/nixpkgs/pkgs/tools/misc/bitwise/default.nix
index e9443f25c0a9..a01fa83b3c79 100644
--- a/nixpkgs/pkgs/tools/misc/bitwise/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bitwise/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = [ maintainers.whonore ];
     platforms = platforms.unix;
+    mainProgram = "bitwise";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/blacken-docs/default.nix b/nixpkgs/pkgs/tools/misc/blacken-docs/default.nix
index 186f1d393ac3..434f684b78d2 100644
--- a/nixpkgs/pkgs/tools/misc/blacken-docs/default.nix
+++ b/nixpkgs/pkgs/tools/misc/blacken-docs/default.nix
@@ -34,5 +34,6 @@ python3.pkgs.buildPythonApplication rec {
     description = "Run Black on Python code blocks in documentation files";
     license = licenses.mit;
     maintainers = with maintainers; [ l0b0 ];
+    mainProgram = "blacken-docs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/blahaj/default.nix b/nixpkgs/pkgs/tools/misc/blahaj/default.nix
index 1b0e5ff839ea..01a1de06a870 100644
--- a/nixpkgs/pkgs/tools/misc/blahaj/default.nix
+++ b/nixpkgs/pkgs/tools/misc/blahaj/default.nix
@@ -19,5 +19,6 @@ crystal.buildCrystalPackage rec {
     homepage = "https://blahaj.queer.software";
     license = licenses.bsd2;
     maintainers = with maintainers; [ aleksana cafkafk ];
+    mainProgram = "blahaj";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/blflash/default.nix b/nixpkgs/pkgs/tools/misc/blflash/default.nix
index db243a185f97..36c1712a6e57 100644
--- a/nixpkgs/pkgs/tools/misc/blflash/default.nix
+++ b/nixpkgs/pkgs/tools/misc/blflash/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/spacemeowx2/blflash";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ _0x4A6F ];
+    mainProgram = "blflash";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/blink1-tool/default.nix b/nixpkgs/pkgs/tools/misc/blink1-tool/default.nix
index 44cfa2fbfe72..df994593d99b 100644
--- a/nixpkgs/pkgs/tools/misc/blink1-tool/default.nix
+++ b/nixpkgs/pkgs/tools/misc/blink1-tool/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     license = with licenses; [ cc-by-sa-40 ];
     maintainers = with maintainers; [ cransom ];
     platforms = platforms.linux;
+    mainProgram = "blink1-tool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bmap-tools/default.nix b/nixpkgs/pkgs/tools/misc/bmap-tools/default.nix
index c78c0121ed0c..4bf170ccbc7d 100644
--- a/nixpkgs/pkgs/tools/misc/bmap-tools/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bmap-tools/default.nix
@@ -22,5 +22,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.dezgeg ];
     platforms = platforms.linux;
+    mainProgram = "bmaptool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bmon/default.nix b/nixpkgs/pkgs/tools/misc/bmon/default.nix
index e85c2b96bd34..237eb7476da5 100644
--- a/nixpkgs/pkgs/tools/misc/bmon/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bmon/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     platforms = platforms.unix;
     maintainers = with maintainers; [ bjornfor pSub ];
+    mainProgram = "bmon";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/boltbrowser/default.nix b/nixpkgs/pkgs/tools/misc/boltbrowser/default.nix
index 855d9f21f2b2..f4603ab3b4ad 100644
--- a/nixpkgs/pkgs/tools/misc/boltbrowser/default.nix
+++ b/nixpkgs/pkgs/tools/misc/boltbrowser/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/br0xen/boltbrowser";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "boltbrowser";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/boxxy/default.nix b/nixpkgs/pkgs/tools/misc/boxxy/default.nix
index 4a0a4fe0a99d..52a0b94abeda 100644
--- a/nixpkgs/pkgs/tools/misc/boxxy/default.nix
+++ b/nixpkgs/pkgs/tools/misc/boxxy/default.nix
@@ -38,5 +38,6 @@ rustPlatform.buildRustPackage rec {
     maintainers = with maintainers; [ dit7ya figsoda ];
     platforms = platforms.linux;
     broken = stdenv.isAarch64;
+    mainProgram = "boxxy";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/brltty/default.nix b/nixpkgs/pkgs/tools/misc/brltty/default.nix
index 5838c24172f8..f9b3ec3f73ac 100644
--- a/nixpkgs/pkgs/tools/misc/brltty/default.nix
+++ b/nixpkgs/pkgs/tools/misc/brltty/default.nix
@@ -1,5 +1,5 @@
 { lib, stdenv, fetchurl, pkg-config, python3, bluez
-, tcl, acl, kmod, coreutils, shadow, util-linux, udev
+, tcl, acl, kmod, coreutils, shadow, util-linux
 , alsaSupport ? stdenv.isLinux, alsa-lib
 , systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd, systemd
 }:
@@ -90,6 +90,6 @@ stdenv.mkDerivation rec {
      )
      substituteInPlace $out/libexec/brltty/systemd-wrapper \
        --replace 'logger' "${util-linux}/bin/logger" \
-       --replace 'udevadm' "${udev}/bin/udevadm"
+       --replace 'udevadm' "${systemd}/bin/udevadm"
   '';
 }
diff --git a/nixpkgs/pkgs/tools/misc/broot/default.nix b/nixpkgs/pkgs/tools/misc/broot/default.nix
index de0fd1a11559..afa31e2feaf1 100644
--- a/nixpkgs/pkgs/tools/misc/broot/default.nix
+++ b/nixpkgs/pkgs/tools/misc/broot/default.nix
@@ -12,20 +12,21 @@
 , xorg
 , zlib
 , buildPackages
+, withClipboard ? false
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "broot";
-  version = "1.27.0";
+  version = "1.29.0";
 
   src = fetchFromGitHub {
     owner = "Canop";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-yZsb/G+8XoJS4Fg6WFuEk1v3Ht5i3G3p+sKi+Z3jeGU=";
+    hash = "sha256-Wx+hUm0y7w0+IYtaRE5X/5Ra37mMEMEliYFbl7c03Ww=";
   };
 
-  cargoHash = "sha256-xHmrFIXXkuhYGApgNoJxcL1Kpf8ellwQgiH8AEZvDRU=";
+  cargoHash = "sha256-7B5Uxr1SsAx+mRpvQPSW7pemxp11WngEIK6vF2cbzh4=";
 
   nativeBuildInputs = [
     installShellFiles
@@ -39,6 +40,8 @@ rustPlatform.buildRustPackage rec {
     zlib
   ];
 
+  buildFeatures = lib.optionals withClipboard [ "clipboard" ];
+
   RUSTONIG_SYSTEM_LIBONIG = true;
 
   postPatch = ''
@@ -88,5 +91,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/Canop/broot/releases/tag/v${version}";
     maintainers = with maintainers; [ dywedir ];
     license = with licenses; [ mit ];
+    mainProgram = "broot";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/bsp-layout/default.nix b/nixpkgs/pkgs/tools/misc/bsp-layout/default.nix
index e5a78adcadfc..e0348fb9207e 100644
--- a/nixpkgs/pkgs/tools/misc/bsp-layout/default.nix
+++ b/nixpkgs/pkgs/tools/misc/bsp-layout/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ totoroot ];
     platforms = platforms.linux;
+    mainProgram = "bsp-layout";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/btdu/default.nix b/nixpkgs/pkgs/tools/misc/btdu/default.nix
index 8031b5ea165d..631c542a9f8a 100644
--- a/nixpkgs/pkgs/tools/misc/btdu/default.nix
+++ b/nixpkgs/pkgs/tools/misc/btdu/default.nix
@@ -88,5 +88,6 @@ stdenv.mkDerivation rec {
       license = licenses.gpl2Only;
       platforms = platforms.linux;
       maintainers = with maintainers; [ atila ];
+      mainProgram = "btdu";
     };
 }
diff --git a/nixpkgs/pkgs/tools/misc/buildtorrent/default.nix b/nixpkgs/pkgs/tools/misc/buildtorrent/default.nix
index ce357a1d491e..d9fc90768a98 100644
--- a/nixpkgs/pkgs/tools/misc/buildtorrent/default.nix
+++ b/nixpkgs/pkgs/tools/misc/buildtorrent/default.nix
@@ -14,5 +14,6 @@ stdenv.mkDerivation rec {
     homepage = "https://mathr.co.uk/blog/torrent.html";
     license = licenses.gpl3Plus;
     platforms = platforms.all;
+    mainProgram = "buildtorrent";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/calamares/default.nix b/nixpkgs/pkgs/tools/misc/calamares/default.nix
index a82d62aed0df..6b9b50144708 100644
--- a/nixpkgs/pkgs/tools/misc/calamares/default.nix
+++ b/nixpkgs/pkgs/tools/misc/calamares/default.nix
@@ -93,5 +93,6 @@ mkDerivation rec {
     license = with licenses; [ gpl3Plus bsd2 cc0 ];
     maintainers = with maintainers; [ manveru vlinkz ];
     platforms = platforms.linux;
+    mainProgram = "calamares";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/capture/default.nix b/nixpkgs/pkgs/tools/misc/capture/default.nix
index d8b2fe676518..be08be4f1436 100644
--- a/nixpkgs/pkgs/tools/misc/capture/default.nix
+++ b/nixpkgs/pkgs/tools/misc/capture/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation {
     homepage = "https://github.com/buhman/capture";
     maintainers = [ maintainers.ar1a ];
     license = licenses.gpl3Plus;
+    mainProgram = "capture";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/castty/default.nix b/nixpkgs/pkgs/tools/misc/castty/default.nix
index 075c6d739b3f..86dae729790b 100644
--- a/nixpkgs/pkgs/tools/misc/castty/default.nix
+++ b/nixpkgs/pkgs/tools/misc/castty/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation {
     license = licenses.bsd3;
     maintainers = with maintainers; [ iblech ];
     platforms = platforms.unix;
+    mainProgram = "castty";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cc2538-bsl/default.nix b/nixpkgs/pkgs/tools/misc/cc2538-bsl/default.nix
index c90fc3914d41..602327ab79b1 100644
--- a/nixpkgs/pkgs/tools/misc/cc2538-bsl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cc2538-bsl/default.nix
@@ -51,6 +51,7 @@ python3Packages.buildPythonPackage rec {
     description = "Flash TI SimpleLink chips (CC2538, CC13xx, CC26xx) over serial";
     license = licenses.bsd3;
     maintainers = with maintainers; [ lorenz ];
+    mainProgram = "cc2538-bsl";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/misc/cf-terraforming/default.nix b/nixpkgs/pkgs/tools/misc/cf-terraforming/default.nix
index 8ac51a4821d4..916f349dc508 100644
--- a/nixpkgs/pkgs/tools/misc/cf-terraforming/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cf-terraforming/default.nix
@@ -28,5 +28,6 @@ buildGoModule rec {
     homepage = "https://github.com/cloudflare/cf-terraforming/";
     license = licenses.mpl20;
     maintainers = with maintainers; [ benley ];
+    mainProgram = "cf-terraforming";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cfonts/default.nix b/nixpkgs/pkgs/tools/misc/cfonts/default.nix
index cbee66e68f4a..244360c99d8b 100644
--- a/nixpkgs/pkgs/tools/misc/cfonts/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cfonts/default.nix
@@ -16,5 +16,6 @@ rustPlatform.buildRustPackage rec {
       "A silly little command line tool for sexy ANSI fonts in the console";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ leifhelm ];
+    mainProgram = "cfonts";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/chafa/default.nix b/nixpkgs/pkgs/tools/misc/chafa/default.nix
index a03a55387d6b..828877acbdae 100644
--- a/nixpkgs/pkgs/tools/misc/chafa/default.nix
+++ b/nixpkgs/pkgs/tools/misc/chafa/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl3Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.mog ];
+    mainProgram = "chafa";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/changelogger/default.nix b/nixpkgs/pkgs/tools/misc/changelogger/default.nix
index ce7a37c7cc1a..165f63c468ad 100644
--- a/nixpkgs/pkgs/tools/misc/changelogger/default.nix
+++ b/nixpkgs/pkgs/tools/misc/changelogger/default.nix
@@ -39,5 +39,6 @@ buildGoModule rec {
     changelog = "https://github.com/MarkusFreitag/changelogger/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ tomsiewert ];
+    mainProgram = "changelogger";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/charasay/default.nix b/nixpkgs/pkgs/tools/misc/charasay/default.nix
index c66605cc826c..9051638a8c2c 100644
--- a/nixpkgs/pkgs/tools/misc/charasay/default.nix
+++ b/nixpkgs/pkgs/tools/misc/charasay/default.nix
@@ -35,5 +35,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/latipun7/charasay";
     license = licenses.mit;
     maintainers = with maintainers; [ hmajid2301 ];
+    mainProgram = "chara";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/checkpwn/default.nix b/nixpkgs/pkgs/tools/misc/checkpwn/default.nix
index 413dbef68fbe..994fecc6c4db 100644
--- a/nixpkgs/pkgs/tools/misc/checkpwn/default.nix
+++ b/nixpkgs/pkgs/tools/misc/checkpwn/default.nix
@@ -31,5 +31,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/brycx/checkpwn/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "checkpwn";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/chef-cli/default.nix b/nixpkgs/pkgs/tools/misc/chef-cli/default.nix
index bc43592d4f28..af3a60103ca3 100644
--- a/nixpkgs/pkgs/tools/misc/chef-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/chef-cli/default.nix
@@ -14,5 +14,6 @@ bundlerApp {
     homepage = "https://chef.io/";
     license = licenses.asl20;
     maintainers = with maintainers; [ dylanmtaylor ];
+    mainProgram = "chef-cli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/chelf/default.nix b/nixpkgs/pkgs/tools/misc/chelf/default.nix
index 25344d8658e8..7dd84eba1e44 100644
--- a/nixpkgs/pkgs/tools/misc/chelf/default.nix
+++ b/nixpkgs/pkgs/tools/misc/chelf/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/Gottox/chelf";
     license = licenses.bsd2;
     maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "chelf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/chezmoi/default.nix b/nixpkgs/pkgs/tools/misc/chezmoi/default.nix
index 88812357a9c0..66c94a14c527 100644
--- a/nixpkgs/pkgs/tools/misc/chezmoi/default.nix
+++ b/nixpkgs/pkgs/tools/misc/chezmoi/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "chezmoi";
-  version = "2.40.4";
+  version = "2.41.0";
 
   src = fetchFromGitHub {
     owner = "twpayne";
     repo = "chezmoi";
     rev = "v${version}";
-    hash = "sha256-PtIT2PS88jkX/ERHYKRwhvCnCnlAP0lM0FDv74zi32M=";
+    hash = "sha256-N1KzSpNKwh8OyxtgPdRvhEwO/q9/o9yS6mr3sV7fF6k=";
   };
 
-  vendorHash = "sha256-O9Ywq8LunS/0yBX9p9M2mzm+auvX1ynYaAY4EoBaE94=";
+  vendorHash = "sha256-SoSRSKG7tb09hFu2KZBKtA3/6YY9xbI0dKlCHMwytdI=";
 
   doCheck = false;
 
@@ -39,5 +39,6 @@ buildGoModule rec {
     changelog = "https://github.com/twpayne/chezmoi/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ jhillyerd ];
+    mainProgram = "chezmoi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cicero-tui/default.nix b/nixpkgs/pkgs/tools/misc/cicero-tui/default.nix
index 8578b1a6f139..0ab33112a6e3 100644
--- a/nixpkgs/pkgs/tools/misc/cicero-tui/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cicero-tui/default.nix
@@ -42,5 +42,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ shamilton ];
     platforms = platforms.linux;
+    mainProgram = "cicero";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/citron/default.nix b/nixpkgs/pkgs/tools/misc/citron/default.nix
index 17fa3c5e5a21..d40c8c936928 100644
--- a/nixpkgs/pkgs/tools/misc/citron/default.nix
+++ b/nixpkgs/pkgs/tools/misc/citron/default.nix
@@ -31,5 +31,6 @@ rustPlatform.buildRustPackage rec {
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ vuimuich ];
     platforms = lib.platforms.linux;
+    mainProgram = "citron";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/clac/default.nix b/nixpkgs/pkgs/tools/misc/clac/default.nix
index 0c4676323003..e87fc0bb97ae 100644
--- a/nixpkgs/pkgs/tools/misc/clac/default.nix
+++ b/nixpkgs/pkgs/tools/misc/clac/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.unix;
+    mainProgram = "clac";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/claws/default.nix b/nixpkgs/pkgs/tools/misc/claws/default.nix
index 5690ec74d0a2..05231d2b16e6 100644
--- a/nixpkgs/pkgs/tools/misc/claws/default.nix
+++ b/nixpkgs/pkgs/tools/misc/claws/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     description = "Interactive command line client for testing websocket servers";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
+    mainProgram = "claws";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/clematis/default.nix b/nixpkgs/pkgs/tools/misc/clematis/default.nix
index ea3c209600ad..76851bbd0fd0 100644
--- a/nixpkgs/pkgs/tools/misc/clematis/default.nix
+++ b/nixpkgs/pkgs/tools/misc/clematis/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ misterio77 ];
+    mainProgram = "clematis";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/clickclack/default.nix b/nixpkgs/pkgs/tools/misc/clickclack/default.nix
index da351dbbc69c..884c2ac84bc1 100644
--- a/nixpkgs/pkgs/tools/misc/clickclack/default.nix
+++ b/nixpkgs/pkgs/tools/misc/clickclack/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ dotlambda ];
+    mainProgram = "clickclack";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/clini/default.nix b/nixpkgs/pkgs/tools/misc/clini/default.nix
index 751cb3147026..95d86e6fd46d 100644
--- a/nixpkgs/pkgs/tools/misc/clini/default.nix
+++ b/nixpkgs/pkgs/tools/misc/clini/default.nix
@@ -16,5 +16,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/domgreen/clini";
     license = licenses.mit;
     maintainers = with maintainers; [ Flakebi ];
+    mainProgram = "clini";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/clipbuzz/default.nix b/nixpkgs/pkgs/tools/misc/clipbuzz/default.nix
index 7bece66a786d..9e1e3724b899 100644
--- a/nixpkgs/pkgs/tools/misc/clipbuzz/default.nix
+++ b/nixpkgs/pkgs/tools/misc/clipbuzz/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://trong.loang.net/~cnx/clipbuzz";
     license = lib.licenses.unlicense;
     maintainers = [ lib.maintainers.McSinyx ];
+    mainProgram = "clipbuzz";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/clipnotify/default.nix b/nixpkgs/pkgs/tools/misc/clipnotify/default.nix
index 51a67f6983f8..8f94f974b058 100644
--- a/nixpkgs/pkgs/tools/misc/clipnotify/default.nix
+++ b/nixpkgs/pkgs/tools/misc/clipnotify/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     inherit (src.meta) homepage;
     maintainers = with maintainers; [ jb55 ];
     license = licenses.publicDomain;
+    mainProgram = "clipnotify";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/clipster/default.nix b/nixpkgs/pkgs/tools/misc/clipster/default.nix
index e6efabb5b33a..26170d148943 100644
--- a/nixpkgs/pkgs/tools/misc/clipster/default.nix
+++ b/nixpkgs/pkgs/tools/misc/clipster/default.nix
@@ -47,5 +47,6 @@ stdenv.mkDerivation  rec {
     homepage = "https://github.com/mrichar1/clipster";
     platforms = platforms.linux;
     maintainers = [ maintainers.magnetophon ];
+    mainProgram = "clipster";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cloc/default.nix b/nixpkgs/pkgs/tools/misc/cloc/default.nix
index a8fc4a4f01b8..fdd932634c5e 100644
--- a/nixpkgs/pkgs/tools/misc/cloc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cloc/default.nix
@@ -56,5 +56,6 @@ in stdenv.mkDerivation {
     license = lib.licenses.gpl2;
     platforms = lib.platforms.all;
     maintainers = with lib.maintainers; [ rycee ];
+    mainProgram = "cloc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/clolcat/default.nix b/nixpkgs/pkgs/tools/misc/clolcat/default.nix
index 25c7ade5cd62..5ba22c69b41b 100644
--- a/nixpkgs/pkgs/tools/misc/clolcat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/clolcat/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     maintainers = [ maintainers.felipeqq2 ];
     license = licenses.wtfpl;
+    mainProgram = "clolcat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/clpeak/default.nix b/nixpkgs/pkgs/tools/misc/clpeak/default.nix
index c87729d81ae0..4539602320f3 100644
--- a/nixpkgs/pkgs/tools/misc/clpeak/default.nix
+++ b/nixpkgs/pkgs/tools/misc/clpeak/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/krrishnarraj/clpeak/";
     license = licenses.unlicense;
     maintainers = with maintainers; [ ];
+    mainProgram = "clpeak";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cod/default.nix b/nixpkgs/pkgs/tools/misc/cod/default.nix
index c681930032fc..eba78d6c2263 100644
--- a/nixpkgs/pkgs/tools/misc/cod/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cod/default.nix
@@ -34,5 +34,6 @@ buildGoModule rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ SuperSandro2000 ];
     broken = stdenv.isDarwin;
+    mainProgram = "cod";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/code-minimap/default.nix b/nixpkgs/pkgs/tools/misc/code-minimap/default.nix
index dc264307e7d8..33e6ee825b0b 100644
--- a/nixpkgs/pkgs/tools/misc/code-minimap/default.nix
+++ b/nixpkgs/pkgs/tools/misc/code-minimap/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/wfxr/code-minimap";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ bsima ];
+    mainProgram = "code-minimap";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/codebraid/default.nix b/nixpkgs/pkgs/tools/misc/codebraid/default.nix
index f4d8fa4940f0..516dd66cf01b 100644
--- a/nixpkgs/pkgs/tools/misc/codebraid/default.nix
+++ b/nixpkgs/pkgs/tools/misc/codebraid/default.nix
@@ -37,5 +37,6 @@ python3Packages.buildPythonApplication rec {
     '';
     license = licenses.bsd3;
     maintainers = with maintainers; [ synthetica ];
+    mainProgram = "codebraid";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/codemov/default.nix b/nixpkgs/pkgs/tools/misc/codemov/default.nix
index fe248c24edcd..d8cc40e3d861 100644
--- a/nixpkgs/pkgs/tools/misc/codemov/default.nix
+++ b/nixpkgs/pkgs/tools/misc/codemov/default.nix
@@ -44,5 +44,6 @@ rustPlatform.buildRustPackage {
     homepage = "https://github.com/sloganking/codemov";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "codemov";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/codevis/default.nix b/nixpkgs/pkgs/tools/misc/codevis/default.nix
index 464702432aa6..c41351f95983 100644
--- a/nixpkgs/pkgs/tools/misc/codevis/default.nix
+++ b/nixpkgs/pkgs/tools/misc/codevis/default.nix
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/sloganking/codevis/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "codevis";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/coinlive/default.nix b/nixpkgs/pkgs/tools/misc/coinlive/default.nix
index 2d81a940dd57..2d5faff98a02 100644
--- a/nixpkgs/pkgs/tools/misc/coinlive/default.nix
+++ b/nixpkgs/pkgs/tools/misc/coinlive/default.nix
@@ -40,5 +40,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/mayeranalytics/coinlive";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "coinlive";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/colord-gtk/default.nix b/nixpkgs/pkgs/tools/misc/colord-gtk/default.nix
index 35076a283270..1e66ab3ba00d 100644
--- a/nixpkgs/pkgs/tools/misc/colord-gtk/default.nix
+++ b/nixpkgs/pkgs/tools/misc/colord-gtk/default.nix
@@ -66,5 +66,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl21Plus;
     maintainers = teams.gnome.members;
     platforms = platforms.linux;
+    mainProgram = "cd-convert";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/colorless/default.nix b/nixpkgs/pkgs/tools/misc/colorless/default.nix
index 46e4745172ff..d7613d30d097 100644
--- a/nixpkgs/pkgs/tools/misc/colorless/default.nix
+++ b/nixpkgs/pkgs/tools/misc/colorless/default.nix
@@ -43,5 +43,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ suominen ];
     platforms = platforms.unix;
+    mainProgram = "colorless";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/colorz/default.nix b/nixpkgs/pkgs/tools/misc/colorz/default.nix
index d259f482942d..f60843afcfb0 100644
--- a/nixpkgs/pkgs/tools/misc/colorz/default.nix
+++ b/nixpkgs/pkgs/tools/misc/colorz/default.nix
@@ -20,5 +20,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/metakirby5/colorz";
     license = licenses.mit;
     maintainers = with maintainers; [ skykanin ];
+    mainProgram = "colorz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/compdb/default.nix b/nixpkgs/pkgs/tools/misc/compdb/default.nix
index c6d6d75283d9..0a5e689bb4b8 100644
--- a/nixpkgs/pkgs/tools/misc/compdb/default.nix
+++ b/nixpkgs/pkgs/tools/misc/compdb/default.nix
@@ -19,5 +19,6 @@ python3.pkgs.buildPythonApplication rec {
     license = licenses.mit;
     homepage = "https://github.com/Sarcasm/compdb";
     maintainers = [ maintainers.detegr ];
+    mainProgram = "compdb";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/complete-alias/default.nix b/nixpkgs/pkgs/tools/misc/complete-alias/default.nix
index c23ed9771f23..fdf0c1ae0ab2 100644
--- a/nixpkgs/pkgs/tools/misc/complete-alias/default.nix
+++ b/nixpkgs/pkgs/tools/misc/complete-alias/default.nix
@@ -39,5 +39,6 @@ stdenvNoCC.mkDerivation rec {
     homepage = "https://github.com/cykerway/complete-alias";
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ tuxinaut ];
+    mainProgram = "complete_alias";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/completely/default.nix b/nixpkgs/pkgs/tools/misc/completely/default.nix
index 7e0129f6d1b3..326887299c0c 100644
--- a/nixpkgs/pkgs/tools/misc/completely/default.nix
+++ b/nixpkgs/pkgs/tools/misc/completely/default.nix
@@ -17,5 +17,6 @@ bundlerApp {
     license = licenses.mit;
     platforms = platforms.unix;
     maintainers = with maintainers; [ zendo ];
+    mainProgram = "completely";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/convbin/default.nix b/nixpkgs/pkgs/tools/misc/convbin/default.nix
index 90b403adeb60..96164902dc2c 100644
--- a/nixpkgs/pkgs/tools/misc/convbin/default.nix
+++ b/nixpkgs/pkgs/tools/misc/convbin/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ luc65r ];
     platforms = platforms.all;
+    mainProgram = "convbin";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/convfont/default.nix b/nixpkgs/pkgs/tools/misc/convfont/default.nix
index 501c4e29a416..d58f7ecc2bea 100644
--- a/nixpkgs/pkgs/tools/misc/convfont/default.nix
+++ b/nixpkgs/pkgs/tools/misc/convfont/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.wtfpl;
     maintainers = with maintainers; [ luc65r ];
     platforms = platforms.all;
+    mainProgram = "convfont";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/convimg/default.nix b/nixpkgs/pkgs/tools/misc/convimg/default.nix
index 8492527f3037..93b01723bf62 100644
--- a/nixpkgs/pkgs/tools/misc/convimg/default.nix
+++ b/nixpkgs/pkgs/tools/misc/convimg/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ luc65r ];
     platforms = platforms.linux;
+    mainProgram = "convimg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/convmv/default.nix b/nixpkgs/pkgs/tools/misc/convmv/default.nix
index 6ed8c78361ec..8d392f78f47f 100644
--- a/nixpkgs/pkgs/tools/misc/convmv/default.nix
+++ b/nixpkgs/pkgs/tools/misc/convmv/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux ++ platforms.freebsd ++ platforms.cygwin;
     maintainers = [ ];
     license = licenses.gpl2Plus;
+    mainProgram = "convmv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/copier/default.nix b/nixpkgs/pkgs/tools/misc/copier/default.nix
index ea8417f6da22..c1e8568dfd50 100644
--- a/nixpkgs/pkgs/tools/misc/copier/default.nix
+++ b/nixpkgs/pkgs/tools/misc/copier/default.nix
@@ -53,5 +53,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://copier.readthedocs.io";
     license = licenses.mit;
     maintainers = with maintainers; [ jonringer ];
+    mainProgram = "copier";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/coreboot-configurator/default.nix b/nixpkgs/pkgs/tools/misc/coreboot-configurator/default.nix
index 9d61b795ce54..2c51fd61fc11 100644
--- a/nixpkgs/pkgs/tools/misc/coreboot-configurator/default.nix
+++ b/nixpkgs/pkgs/tools/misc/coreboot-configurator/default.nix
@@ -56,5 +56,6 @@ mkDerivation {
     license = licenses.gpl2Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ danth ];
+    mainProgram = "coreboot-configurator";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cp437/default.nix b/nixpkgs/pkgs/tools/misc/cp437/default.nix
index c08214ff548b..cb4b1b8508cb 100644
--- a/nixpkgs/pkgs/tools/misc/cp437/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cp437/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/keaston/cp437";
     license = licenses.bsd3;
     maintainers = with maintainers; [ jb55 ];
+    mainProgram = "cp437";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cpufetch/default.nix b/nixpkgs/pkgs/tools/misc/cpufetch/default.nix
index 074a76e32e81..ac7384642e81 100644
--- a/nixpkgs/pkgs/tools/misc/cpufetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cpufetch/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/Dr-Noob/cpufetch";
     changelog = "https://github.com/Dr-Noob/cpufetch/releases/tag/v${version}";
     maintainers = with maintainers; [ devhell ];
+    mainProgram = "cpufetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cpuminer/default.nix b/nixpkgs/pkgs/tools/misc/cpuminer/default.nix
index 28335ccb4481..4b7c5fc7f486 100644
--- a/nixpkgs/pkgs/tools/misc/cpuminer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cpuminer/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.all;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "minerd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/crex/default.nix b/nixpkgs/pkgs/tools/misc/crex/default.nix
index 14d462e8e6e4..d173457d7190 100644
--- a/nixpkgs/pkgs/tools/misc/crex/default.nix
+++ b/nixpkgs/pkgs/tools/misc/crex/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ dtzWill ];
     platforms = platforms.all;
+    mainProgram = "crex";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/crypto-tracker/default.nix b/nixpkgs/pkgs/tools/misc/crypto-tracker/default.nix
index cbab28f9cd33..273a0aa63e4c 100644
--- a/nixpkgs/pkgs/tools/misc/crypto-tracker/default.nix
+++ b/nixpkgs/pkgs/tools/misc/crypto-tracker/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/Nox04/crypto-tracker";
     license = licenses.mit;
     maintainers = with maintainers; [ tiredofit ];
+    mainProgram = "crypto-tracker";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/csv2latex/default.nix b/nixpkgs/pkgs/tools/misc/csv2latex/default.nix
index e297bc532dc1..cc286c54e9ad 100644
--- a/nixpkgs/pkgs/tools/misc/csv2latex/default.nix
+++ b/nixpkgs/pkgs/tools/misc/csv2latex/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = "http://brouits.free.fr/csv2latex/";
     license = licenses.gpl2;
     maintainers = [ maintainers.catern ];
+    mainProgram = "csv2latex";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/csv2parquet/default.nix b/nixpkgs/pkgs/tools/misc/csv2parquet/default.nix
index 2be9f1c3c644..0d6050d703a7 100644
--- a/nixpkgs/pkgs/tools/misc/csv2parquet/default.nix
+++ b/nixpkgs/pkgs/tools/misc/csv2parquet/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/domoritz/csv2parquet";
     license = licenses.mit;
     maintainers = with maintainers; [ john-shaffer ];
+    mainProgram = "csv2parquet";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/csvs-to-sqlite/default.nix b/nixpkgs/pkgs/tools/misc/csvs-to-sqlite/default.nix
index dc140c1c0c01..28537e9631ea 100644
--- a/nixpkgs/pkgs/tools/misc/csvs-to-sqlite/default.nix
+++ b/nixpkgs/pkgs/tools/misc/csvs-to-sqlite/default.nix
@@ -57,5 +57,6 @@ with python3.pkgs; buildPythonApplication rec {
     homepage = "https://github.com/simonw/csvs-to-sqlite";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
+    mainProgram = "csvs-to-sqlite";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cutecom/default.nix b/nixpkgs/pkgs/tools/misc/cutecom/default.nix
index 1d264926fd7c..490d33b123d8 100644
--- a/nixpkgs/pkgs/tools/misc/cutecom/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cutecom/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ bennofs ];
     platforms = platforms.unix;
+    mainProgram = "cutecom";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/cyclonedx-python/default.nix b/nixpkgs/pkgs/tools/misc/cyclonedx-python/default.nix
index 03b5ba031112..8284035c99e1 100644
--- a/nixpkgs/pkgs/tools/misc/cyclonedx-python/default.nix
+++ b/nixpkgs/pkgs/tools/misc/cyclonedx-python/default.nix
@@ -43,5 +43,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/CycloneDX/cyclonedx-python";
     license = licenses.asl20;
     maintainers = [ ];
+    mainProgram = "cyclonedx-py";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dabet/default.nix b/nixpkgs/pkgs/tools/misc/dabet/default.nix
index da7cbce191c2..acdc66cbad8f 100644
--- a/nixpkgs/pkgs/tools/misc/dabet/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dabet/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://codeberg.org/annaaurora/dabet";
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ annaaurora ];
+    mainProgram = "dabet";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/misc/dashing/default.nix b/nixpkgs/pkgs/tools/misc/dashing/default.nix
index 7a1541b7e940..c7ec598fe309 100644
--- a/nixpkgs/pkgs/tools/misc/dashing/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dashing/default.nix
@@ -24,5 +24,6 @@ buildGoModule rec {
     homepage = "https://github.com/technosophos/dashing";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
+    mainProgram = "dashing";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/datefmt/default.nix b/nixpkgs/pkgs/tools/misc/datefmt/default.nix
index cffa589e3878..0b2dd7fae270 100644
--- a/nixpkgs/pkgs/tools/misc/datefmt/default.nix
+++ b/nixpkgs/pkgs/tools/misc/datefmt/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ jb55 ];
+    mainProgram = "datefmt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dbus-map/default.nix b/nixpkgs/pkgs/tools/misc/dbus-map/default.nix
index 56f89b2f0531..955a248be7bb 100644
--- a/nixpkgs/pkgs/tools/misc/dbus-map/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dbus-map/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
+    mainProgram = "dbus-map";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ddate/default.nix b/nixpkgs/pkgs/tools/misc/ddate/default.nix
index 4de50693b744..012e00c8f972 100644
--- a/nixpkgs/pkgs/tools/misc/ddate/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ddate/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.publicDomain;
     maintainers = with maintainers; [ kovirobi ];
     platforms = platforms.all;
+    mainProgram = "ddate";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ddcutil/default.nix b/nixpkgs/pkgs/tools/misc/ddcutil/default.nix
index 903f923b5d8a..285fd3799711 100644
--- a/nixpkgs/pkgs/tools/misc/ddcutil/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ddcutil/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     maintainers = with maintainers; [ rnhmjoj ];
     changelog = "https://github.com/rockowitz/ddcutil/blob/v${version}/CHANGELOG.md";
+    mainProgram = "ddcutil";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/misc/debootstrap/default.nix b/nixpkgs/pkgs/tools/misc/debootstrap/default.nix
index 04c19d93af99..96e003fe7204 100644
--- a/nixpkgs/pkgs/tools/misc/debootstrap/default.nix
+++ b/nixpkgs/pkgs/tools/misc/debootstrap/default.nix
@@ -97,5 +97,6 @@ in stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ marcweber ];
     platforms = platforms.linux;
+    mainProgram = "debootstrap";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dgoss/default.nix b/nixpkgs/pkgs/tools/misc/dgoss/default.nix
index 0ca97c9f63f1..8201a8805be1 100644
--- a/nixpkgs/pkgs/tools/misc/dgoss/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dgoss/default.nix
@@ -44,5 +44,6 @@ resholve.mkDerivation rec {
     license = licenses.asl20;
     platforms = platforms.linux;
     maintainers = with maintainers; [ hyzual anthonyroussel ];
+    mainProgram = "dgoss";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dialogbox/default.nix b/nixpkgs/pkgs/tools/misc/dialogbox/default.nix
index 02fb122d4465..7012f9d69ad5 100644
--- a/nixpkgs/pkgs/tools/misc/dialogbox/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dialogbox/default.nix
@@ -43,5 +43,6 @@ mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.unix;
+    mainProgram = "dialogbox";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/didu/default.nix b/nixpkgs/pkgs/tools/misc/didu/default.nix
index 8a29cdb2d346..a5a8a790e4ff 100644
--- a/nixpkgs/pkgs/tools/misc/didu/default.nix
+++ b/nixpkgs/pkgs/tools/misc/didu/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://codeberg.org/annaaurora/didu";
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ annaaurora ];
+    mainProgram = "didu";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/diffoci/default.nix b/nixpkgs/pkgs/tools/misc/diffoci/default.nix
index fe50ac5e5e66..df7cc71140aa 100644
--- a/nixpkgs/pkgs/tools/misc/diffoci/default.nix
+++ b/nixpkgs/pkgs/tools/misc/diffoci/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     homepage = "https://github.com/reproducible-containers/diffoci/";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk ];
+    mainProgram = "diffoci";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/diffoscope/default.nix b/nixpkgs/pkgs/tools/misc/diffoscope/default.nix
index 09a4ef57c69f..61617044792b 100644
--- a/nixpkgs/pkgs/tools/misc/diffoscope/default.nix
+++ b/nixpkgs/pkgs/tools/misc/diffoscope/default.nix
@@ -288,5 +288,6 @@ python3.pkgs.buildPythonApplication rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dezgeg danielfullmer raitobezarius ];
     platforms = platforms.unix;
+    mainProgram = "diffoscope";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dijo/default.nix b/nixpkgs/pkgs/tools/misc/dijo/default.nix
index 606bba0dff92..45da82571bd4 100644
--- a/nixpkgs/pkgs/tools/misc/dijo/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dijo/default.nix
@@ -17,5 +17,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/NerdyPepper/dijo";
     license = licenses.mit;
     maintainers = with maintainers; [ infinisil ];
+    mainProgram = "dijo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/direnv/default.nix b/nixpkgs/pkgs/tools/misc/direnv/default.nix
index 04b9dd5fad88..9395cade650b 100644
--- a/nixpkgs/pkgs/tools/misc/direnv/default.nix
+++ b/nixpkgs/pkgs/tools/misc/direnv/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "direnv";
-  version = "2.32.3";
+  version = "2.33.0";
 
   src = fetchFromGitHub {
     owner = "direnv";
     repo = "direnv";
     rev = "v${version}";
-    sha256 = "sha256-TDr2eL7Jft1r2IMm6CToVCEhiNo+Rj1H/Skoe+wx1MM=";
+    sha256 = "sha256-/xOqJ3dr+3S502rXHVBcHhgBCctoMYnWpfLqgrxIoN8=";
   };
 
-  vendorHash = "sha256-eQaQ77pOYC8q+IA26ArEhHQ0DCU093TbzaYhdV3UydE=";
+  vendorHash = "sha256-QGPcNgA/iiGt0CdFs2kR3zLL5/SWulSyyf/pW212JpU=";
 
   # we have no bash at the moment for windows
   BASH_PATH =
@@ -49,7 +49,7 @@ buildGoModule rec {
     '';
     homepage = "https://direnv.net";
     license = licenses.mit;
-    maintainers = teams.numtide.members;
+    maintainers = [ maintainers.zimbatm ];
     mainProgram = "direnv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/discocss/default.nix b/nixpkgs/pkgs/tools/misc/discocss/default.nix
index a9e3d124c855..b930338c29f4 100644
--- a/nixpkgs/pkgs/tools/misc/discocss/default.nix
+++ b/nixpkgs/pkgs/tools/misc/discocss/default.nix
@@ -38,5 +38,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mpl20;
     platforms = platforms.unix;
     maintainers = with maintainers; [ mlvzk ];
+    mainProgram = "discocss";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/disfetch/default.nix b/nixpkgs/pkgs/tools/misc/disfetch/default.nix
index 90c2c06626cd..6cd7a2683d60 100644
--- a/nixpkgs/pkgs/tools/misc/disfetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/disfetch/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ vel ];
+    mainProgram = "disfetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/diskonaut/default.nix b/nixpkgs/pkgs/tools/misc/diskonaut/default.nix
index 0ea4106ab034..6193e0a5e816 100644
--- a/nixpkgs/pkgs/tools/misc/diskonaut/default.nix
+++ b/nixpkgs/pkgs/tools/misc/diskonaut/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/imsnif/diskonaut";
     license = licenses.mit;
     maintainers = with maintainers; [ evanjs figsoda ];
+    mainProgram = "diskonaut";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/diskscan/default.nix b/nixpkgs/pkgs/tools/misc/diskscan/default.nix
index 265218dfcfd5..141822d22ddb 100644
--- a/nixpkgs/pkgs/tools/misc/diskscan/default.nix
+++ b/nixpkgs/pkgs/tools/misc/diskscan/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     platforms = with platforms; linux;
     maintainers = with maintainers; [ peterhoeg ];
     license = licenses.gpl3;
+    mainProgram = "diskscan";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/diskus/default.nix b/nixpkgs/pkgs/tools/misc/diskus/default.nix
index c664de7c5dc6..cfbcfdcca6eb 100644
--- a/nixpkgs/pkgs/tools/misc/diskus/default.nix
+++ b/nixpkgs/pkgs/tools/misc/diskus/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
       diskus is a very simple program that computes the total size of the
       current directory. It is a parallelized version of du -sh.
     '';
+    mainProgram = "diskus";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/djenrandom/default.nix b/nixpkgs/pkgs/tools/misc/djenrandom/default.nix
index f55329a66180..51f892a5a453 100644
--- a/nixpkgs/pkgs/tools/misc/djenrandom/default.nix
+++ b/nixpkgs/pkgs/tools/misc/djenrandom/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     # djenrandom uses x86 specific instructions, therefore we can only compile for the x86 architechture
     platforms = lib.platforms.x86;
     maintainers = with lib.maintainers; [ orichter thillux ];
+    mainProgram = "djenrandom";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/docbook2mdoc/default.nix b/nixpkgs/pkgs/tools/misc/docbook2mdoc/default.nix
index 9a4352d32679..f64a73a338ba 100644
--- a/nixpkgs/pkgs/tools/misc/docbook2mdoc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/docbook2mdoc/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     platforms = platforms.all;
     maintainers = with maintainers; [ ramkromberg ];
+    mainProgram = "docbook2mdoc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/docker-sync/default.nix b/nixpkgs/pkgs/tools/misc/docker-sync/default.nix
index 48fbaa1e9de0..aa129c0a36db 100644
--- a/nixpkgs/pkgs/tools/misc/docker-sync/default.nix
+++ b/nixpkgs/pkgs/tools/misc/docker-sync/default.nix
@@ -16,5 +16,6 @@ bundlerApp {
     license = licenses.gpl3;
     maintainers = with maintainers; [ manveru nicknovitski ];
     platforms = platforms.unix;
+    mainProgram = "docker-sync";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/docui/default.nix b/nixpkgs/pkgs/tools/misc/docui/default.nix
index 122bc20279ba..d226c2fc8f00 100644
--- a/nixpkgs/pkgs/tools/misc/docui/default.nix
+++ b/nixpkgs/pkgs/tools/misc/docui/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     license = licenses.mit;
     maintainers = with maintainers; [ aethelz ];
     broken = stdenv.isDarwin;
+    mainProgram = "docui";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/doitlive/default.nix b/nixpkgs/pkgs/tools/misc/doitlive/default.nix
index 6eef5fab1d1c..483b36d98d31 100644
--- a/nixpkgs/pkgs/tools/misc/doitlive/default.nix
+++ b/nixpkgs/pkgs/tools/misc/doitlive/default.nix
@@ -19,5 +19,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://pypi.python.org/pypi/doitlive";
     license = licenses.mit;
     maintainers = with maintainers; [ mbode ];
+    mainProgram = "doitlive";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dooit/default.nix b/nixpkgs/pkgs/tools/misc/dooit/default.nix
index b8aa6c8809ff..79e968a5458b 100644
--- a/nixpkgs/pkgs/tools/misc/dooit/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dooit/default.nix
@@ -50,5 +50,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/kraanzu/dooit/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ khaneliman wesleyjrz ];
+    mainProgram = "dooit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dotacat/default.nix b/nixpkgs/pkgs/tools/misc/dotacat/default.nix
index 07dc66b11674..2512ff20d8d5 100644
--- a/nixpkgs/pkgs/tools/misc/dotacat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dotacat/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage {
     homepage = "https://gitlab.scd31.com/stephen/dotacat";
     license = licenses.mit;
     maintainers = with maintainers; [ traxys ];
+    mainProgram = "dotacat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dotter/default.nix b/nixpkgs/pkgs/tools/misc/dotter/default.nix
index 1356a3908d60..2abe844531b5 100644
--- a/nixpkgs/pkgs/tools/misc/dotter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dotter/default.nix
@@ -33,5 +33,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/SuperCuber/dotter";
     license = licenses.unlicense;
     maintainers = with maintainers; [ linsui ];
+    mainProgram = "dotter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dtach/default.nix b/nixpkgs/pkgs/tools/misc/dtach/default.nix
index 0e0d4ddd077c..226c7335f264 100644
--- a/nixpkgs/pkgs/tools/misc/dtach/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dtach/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
 
     platforms = lib.platforms.unix;
     maintainers = [ ];
+    mainProgram = "dtach";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dtool/default.nix b/nixpkgs/pkgs/tools/misc/dtool/default.nix
index 26eb0ab9ed83..9cf22a9da39f 100644
--- a/nixpkgs/pkgs/tools/misc/dtool/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dtool/default.nix
@@ -29,5 +29,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/guoxbin/dtool";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ linuxissuper ];
+    mainProgram = "dtool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dua/default.nix b/nixpkgs/pkgs/tools/misc/dua/default.nix
index 767a1f5eaecf..6ed80c30b740 100644
--- a/nixpkgs/pkgs/tools/misc/dua/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dua/default.nix
@@ -7,13 +7,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "dua";
-  version = "2.20.1";
+  version = "2.20.3";
 
   src = fetchFromGitHub {
     owner = "Byron";
     repo = "dua-cli";
     rev = "v${version}";
-    hash = "sha256-yBPzf0ZpL49CupdtxjEo9QiOC5vwTcqdfAC2Q6WcNhE=";
+    hash = "sha256-9Qt6/LH30nz4oyP+kXhExzKpPcHRRGYkG43Mjl/ZBoc=";
     # Remove unicode file names which leads to different checksums on HFS+
     # vs. other filesystems because of unicode normalisation.
     postFetch = ''
@@ -21,7 +21,7 @@ rustPlatform.buildRustPackage rec {
     '';
   };
 
-  cargoHash = "sha256-jgPOC8xtxYyKhYzsJezefwgopVL+1MED+Wf5h6bCYBg=";
+  cargoHash = "sha256-xBuc+nh3koLn4/wgrvVjWVc9mjX/6ElAN4n9dWxs5fs=";
 
   buildInputs = lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.Foundation
@@ -35,5 +35,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/Byron/dua-cli/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ figsoda killercup ];
+    mainProgram = "dua";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/duc/default.nix b/nixpkgs/pkgs/tools/misc/duc/default.nix
index d630c9412738..0501b681aa3a 100644
--- a/nixpkgs/pkgs/tools/misc/duc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/duc/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
 
     platforms = platforms.all;
     maintainers = [ ];
+    mainProgram = "duc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/duf/default.nix b/nixpkgs/pkgs/tools/misc/duf/default.nix
index dbc50346ca55..5c2ccb5717fc 100644
--- a/nixpkgs/pkgs/tools/misc/duf/default.nix
+++ b/nixpkgs/pkgs/tools/misc/duf/default.nix
@@ -26,5 +26,6 @@ buildGoModule rec {
     description = "Disk Usage/Free Utility";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda penguwin ];
+    mainProgram = "duf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dumptorrent/default.nix b/nixpkgs/pkgs/tools/misc/dumptorrent/default.nix
index 3199bae9987e..194d40e1c1cc 100644
--- a/nixpkgs/pkgs/tools/misc/dumptorrent/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dumptorrent/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
       license = licenses.gpl2;
       maintainers = [ maintainers.zohl ];
       platforms = platforms.all;
+      mainProgram = "dumptorrent";
     };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dupd/default.nix b/nixpkgs/pkgs/tools/misc/dupd/default.nix
index 903a9f9e5fd4..cf5ab77e7d47 100644
--- a/nixpkgs/pkgs/tools/misc/dupd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dupd/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     homepage = "http://www.virkki.com/dupd";
     license = licenses.gpl3;
     maintainers = with maintainers; [ peterhoeg ];
+    mainProgram = "dupd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dutree/default.nix b/nixpkgs/pkgs/tools/misc/dutree/default.nix
index c40385c387ba..fe47997296e8 100644
--- a/nixpkgs/pkgs/tools/misc/dutree/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dutree/default.nix
@@ -23,5 +23,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/nachoparker/dutree";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "dutree";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dwarf2json/default.nix b/nixpkgs/pkgs/tools/misc/dwarf2json/default.nix
index 813c1fb36838..3bd0fa4b94a8 100644
--- a/nixpkgs/pkgs/tools/misc/dwarf2json/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dwarf2json/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     description = "Convert ELF/DWARF symbol and type information into vol3's intermediate JSON";
     license = licenses.vol-sl;
     maintainers = with maintainers; [ arkivm ];
+    mainProgram = "dwarf2json";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/dwt1-shell-color-scripts/default.nix b/nixpkgs/pkgs/tools/misc/dwt1-shell-color-scripts/default.nix
index 39a9187b3bab..e7c7287b5311 100644
--- a/nixpkgs/pkgs/tools/misc/dwt1-shell-color-scripts/default.nix
+++ b/nixpkgs/pkgs/tools/misc/dwt1-shell-color-scripts/default.nix
@@ -48,5 +48,6 @@ stdenvNoCC.mkDerivation {
     license = with lib.licenses; [ mit ];
     maintainers = with lib.maintainers; [ ];
     platforms = lib.platforms.all;
+    mainProgram = "colorscript";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/easeprobe/default.nix b/nixpkgs/pkgs/tools/misc/easeprobe/default.nix
index 9745364fb7ec..70181956339c 100644
--- a/nixpkgs/pkgs/tools/misc/easeprobe/default.nix
+++ b/nixpkgs/pkgs/tools/misc/easeprobe/default.nix
@@ -33,5 +33,6 @@ buildGoModule rec {
     homepage = "https://github.com/megaease/easeprobe";
     license = licenses.asl20;
     maintainers = with maintainers; [ dit7ya ];
+    mainProgram = "easeprobe";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/edid-decode/default.nix b/nixpkgs/pkgs/tools/misc/edid-decode/default.nix
index f12d5a09f236..eb72d0a81570 100644
--- a/nixpkgs/pkgs/tools/misc/edid-decode/default.nix
+++ b/nixpkgs/pkgs/tools/misc/edid-decode/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation {
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ Madouura ];
     platforms = platforms.all;
+    mainProgram = "edid-decode";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/edid-generator/default.nix b/nixpkgs/pkgs/tools/misc/edid-generator/default.nix
index 09402111fb66..fc7f01226972 100644
--- a/nixpkgs/pkgs/tools/misc/edid-generator/default.nix
+++ b/nixpkgs/pkgs/tools/misc/edid-generator/default.nix
@@ -5,43 +5,63 @@
 , edid-decode
 , hexdump
 , zsh
-, modelines ? [ ] # Modeline "1280x800"   83.50  1280 1352 1480 1680  800 803 809 831 -hsync +vsync
-, clean ? false # should it skip all, but explicitly listed modelines?
 }:
 
 # Usage:
-#   (edid-generator.override {
+#   hardware.firmware = [(edid-generator.overrideAttrs {
 #     clean = true;
-#     modelines = [
-#       ''Modeline "PG278Q_2560x1440"       241.50   2560 2608 2640 2720   1440 1443 1448 1481   -hsync +vsync''
-#       ''Modeline "PG278Q_2560x1440@120"   497.75   2560 2608 2640 2720   1440 1443 1448 1525   +hsync -vsync''
-#       ''Modeline "U2711_2560x1440"        241.50   2560 2600 2632 2720   1440 1443 1448 1481   -hsync +vsync''
-#     ];
-#   })
-
-stdenv.mkDerivation rec {
+#     modelines = ''
+#       Modeline "PG278Q_60"      241.50   2560 2608 2640 2720   1440 1443 1448 1481   -hsync +vsync
+#       Modeline "PG278Q_120"     497.75   2560 2608 2640 2720   1440 1443 1448 1525   +hsync -vsync
+#       Modeline "U2711_60"       241.50   2560 2600 2632 2720   1440 1443 1448 1481   -hsync +vsync
+#     '';
+#   })];
+
+stdenv.mkDerivation {
   pname = "edid-generator";
-  version = "unstable-2018-03-15";
+  version = "master-2023-11-20";
+
+  # so `hardware.firmware` doesn't compress it
+  compressFirmware = false;
 
   src = fetchFromGitHub {
     owner = "akatrevorjay";
     repo = "edid-generator";
-    rev = "31a6f80784d289d2faa8c4ca4788409c83b3ea14";
-    sha256 = "0j6wqzx5frca8b5i6812vvr5iwk7440fka70bmqn00k0vfhsc2x3";
+    rev = "476a016d8b488df749bf6d6efbf7b9fbfb2e3cb8";
+    sha256 = "sha256-UGxze273VB5cQDWrv9X/Lam6WbOu9U3bro8GcVbEvws=";
   };
 
   nativeBuildInputs = [ dos2unix edid-decode hexdump zsh ];
 
   postPatch = ''
     patchShebangs modeline2edid
-    # allows makefile to discover prefixes and suffixes in addition to just `[0-9]*x[0-9]*.S`
-    awk -i inplace '/^SOURCES\t/ { print "SOURCES\t:= $(wildcard *[0-9]*x[0-9]**.S)"; next; }; { print; }' Makefile
   '';
 
+  passAsFile = [ "modelines" ];
+  clean = false;
+  modelines = "";
+
   configurePhase = ''
-    test '${toString clean}' != 1 || rm *x*.S
-    ${lib.concatMapStringsSep "\n" (m: "./modeline2edid - <<<'${m}'") modelines}
-    make clean all
+    test "$clean" != 1 || rm *x*.S
+    ./modeline2edid - <"$modelinesPath"
+
+    for file in *.S ; do
+      echo "--- generated file: $file"
+      cat "$file"
+    done
+    make clean
+  '';
+
+  buildPhase = ''
+    make all
+  '';
+
+  doCheck = true;
+  checkPhase = ''
+    for file in *.bin ; do
+      echo "validating $file"
+      edid-decode <"$file"
+    done
   '';
 
   installPhase = ''
@@ -51,7 +71,7 @@ stdenv.mkDerivation rec {
   meta = {
     description = "Hackerswork to generate an EDID blob from given Xorg Modelines";
     homepage = "https://github.com/akatrevorjay/edid-generator";
-    license = lib.licenses.mit;
+    license = lib.licenses.gpl3;
     maintainers = with lib.maintainers; [ flokli nazarewk ];
     platforms = lib.platforms.all;
     broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/edid-generator.x86_64-darwin
diff --git a/nixpkgs/pkgs/tools/misc/edir/default.nix b/nixpkgs/pkgs/tools/misc/edir/default.nix
index f6934bae4995..9fd1c70ba7eb 100644
--- a/nixpkgs/pkgs/tools/misc/edir/default.nix
+++ b/nixpkgs/pkgs/tools/misc/edir/default.nix
@@ -24,5 +24,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ guyonvarch ];
     platforms = platforms.all;
+    mainProgram = "edir";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/elfcat/default.nix b/nixpkgs/pkgs/tools/misc/elfcat/default.nix
index 222470299739..53d2516e4091 100644
--- a/nixpkgs/pkgs/tools/misc/elfcat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/elfcat/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/ruslashev/elfcat";
     license = licenses.zlib;
     maintainers = with maintainers; [ moni ];
+    mainProgram = "elfcat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/empty/default.nix b/nixpkgs/pkgs/tools/misc/empty/default.nix
index 296cd7c52583..29dfa606dd44 100644
--- a/nixpkgs/pkgs/tools/misc/empty/default.nix
+++ b/nixpkgs/pkgs/tools/misc/empty/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
       - can easily be ported to almost all UNIX-like systems
     '';
     maintainers = [ maintainers.djwf ];
+    mainProgram = "empty";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/emv/default.nix b/nixpkgs/pkgs/tools/misc/emv/default.nix
index 3e5a348c5823..a317805e463c 100644
--- a/nixpkgs/pkgs/tools/misc/emv/default.nix
+++ b/nixpkgs/pkgs/tools/misc/emv/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation {
     description = "Editor Move: Rename files with your favourite text editor";
     license = lib.licenses.publicDomain;
     platforms = lib.platforms.unix;
+    mainProgram = "emv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/encpipe/default.nix b/nixpkgs/pkgs/tools/misc/encpipe/default.nix
index d8eea00c3107..f3ab870b0f05 100644
--- a/nixpkgs/pkgs/tools/misc/encpipe/default.nix
+++ b/nixpkgs/pkgs/tools/misc/encpipe/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/jedisct1/encpipe";
     license = licenses.isc;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "encpipe";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/enjarify/default.nix b/nixpkgs/pkgs/tools/misc/enjarify/default.nix
index 1828ddce7aac..0a146dc02f32 100644
--- a/nixpkgs/pkgs/tools/misc/enjarify/default.nix
+++ b/nixpkgs/pkgs/tools/misc/enjarify/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/google/enjarify/";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
+    mainProgram = "enjarify";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ent/default.nix b/nixpkgs/pkgs/tools/misc/ent/default.nix
index bd9dfeafea6b..3152e00503bb 100644
--- a/nixpkgs/pkgs/tools/misc/ent/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ent/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation {
     homepage = "https://www.fourmilab.ch/random/";
     platforms = platforms.all;
     license = licenses.publicDomain;
+    mainProgram = "ent";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/entr/default.nix b/nixpkgs/pkgs/tools/misc/entr/default.nix
index efee9f7043e5..6d00d4128a51 100644
--- a/nixpkgs/pkgs/tools/misc/entr/default.nix
+++ b/nixpkgs/pkgs/tools/misc/entr/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     platforms = platforms.all;
     maintainers = with maintainers; [ pSub synthetica ];
+    mainProgram = "entr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/enumer/default.nix b/nixpkgs/pkgs/tools/misc/enumer/default.nix
index 67b49b299f71..c10cfdccd91f 100644
--- a/nixpkgs/pkgs/tools/misc/enumer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/enumer/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/dmarkham/enumer";
     license = licenses.bsd2;
     maintainers = with maintainers; [ hexa ];
+    mainProgram = "enumer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/envchain/default.nix b/nixpkgs/pkgs/tools/misc/envchain/default.nix
index 4446400c2f75..a204f31a7484 100644
--- a/nixpkgs/pkgs/tools/misc/envchain/default.nix
+++ b/nixpkgs/pkgs/tools/misc/envchain/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.unix;
     maintainers = with maintainers; [ ];
+    mainProgram = "envchain";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/esphome/default.nix b/nixpkgs/pkgs/tools/misc/esphome/default.nix
index 60c81924805f..6ac1f24a2010 100644
--- a/nixpkgs/pkgs/tools/misc/esphome/default.nix
+++ b/nixpkgs/pkgs/tools/misc/esphome/default.nix
@@ -16,14 +16,14 @@ let
 in
 python.pkgs.buildPythonApplication rec {
   pname = "esphome";
-  version = "2023.11.2";
+  version = "2023.11.4";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-7VYGrWoElc/urs+jomJrRt0dzdmJhCenRvb9bHCl6H4=";
+    hash = "sha256-KIDqIf9aJP5IS+qE0Gy5j3F2DGz/WGbN4Wf9SGzgnzA=";
   };
 
   postPatch = ''
@@ -57,6 +57,7 @@ python.pkgs.buildPythonApplication rec {
     protobuf
     pyparsing
     pyserial
+    python-magic
     pyyaml
     requests
     tornado
@@ -106,5 +107,6 @@ python.pkgs.buildPythonApplication rec {
       gpl3Only # The python codebase and all other parts of this codebase
     ];
     maintainers = with maintainers; [ globin hexa ];
+    mainProgram = "esphome";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/esptool-ck/default.nix b/nixpkgs/pkgs/tools/misc/esptool-ck/default.nix
index 0b4e8cecaf64..2dd6415324e4 100644
--- a/nixpkgs/pkgs/tools/misc/esptool-ck/default.nix
+++ b/nixpkgs/pkgs/tools/misc/esptool-ck/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.dezgeg ];
     platforms = platforms.linux;
+    mainProgram = "esptool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ethtool/default.nix b/nixpkgs/pkgs/tools/misc/ethtool/default.nix
index 5850fada2a70..eb1911170beb 100644
--- a/nixpkgs/pkgs/tools/misc/ethtool/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ethtool/default.nix
@@ -56,5 +56,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ bjornfor ];
+    mainProgram = "ethtool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ets/default.nix b/nixpkgs/pkgs/tools/misc/ets/default.nix
index 43d26e269392..7d9103e7b350 100644
--- a/nixpkgs/pkgs/tools/misc/ets/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ets/default.nix
@@ -38,5 +38,6 @@ buildGoModule rec {
     homepage = "https://github.com/zmwangx/ets/";
     license = licenses.mit;
     maintainers = with maintainers; [ cameronfyfe ];
+    mainProgram = "ets";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/eva/default.nix b/nixpkgs/pkgs/tools/misc/eva/default.nix
index 934a19209d0e..b15957a909a8 100644
--- a/nixpkgs/pkgs/tools/misc/eva/default.nix
+++ b/nixpkgs/pkgs/tools/misc/eva/default.nix
@@ -16,5 +16,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/NerdyPepper/eva";
     license = licenses.mit;
     maintainers = with maintainers; [ nrdxp ma27 figsoda ];
+    mainProgram = "eva";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/evhz/default.nix b/nixpkgs/pkgs/tools/misc/evhz/default.nix
index 703dcae083a3..712606c6913a 100644
--- a/nixpkgs/pkgs/tools/misc/evhz/default.nix
+++ b/nixpkgs/pkgs/tools/misc/evhz/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3;
     maintainers = with maintainers; [ Tungsten842 ];
     platforms = platforms.linux;
+    mainProgram = "evhz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/f2/default.nix b/nixpkgs/pkgs/tools/misc/f2/default.nix
index 43c9d52a3dd1..f97c2b8e80c6 100644
--- a/nixpkgs/pkgs/tools/misc/f2/default.nix
+++ b/nixpkgs/pkgs/tools/misc/f2/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     homepage = "https://github.com/ayoisaiah/f2";
     license = licenses.mit;
     maintainers = with maintainers; [ zendo ];
+    mainProgram = "f2";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/faketty/default.nix b/nixpkgs/pkgs/tools/misc/faketty/default.nix
index 6ec144d5d693..4515f83d1f83 100644
--- a/nixpkgs/pkgs/tools/misc/faketty/default.nix
+++ b/nixpkgs/pkgs/tools/misc/faketty/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/dtolnay/faketty/releases/tag/${version}";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "faketty";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fclones/default.nix b/nixpkgs/pkgs/tools/misc/fclones/default.nix
index 01f35bd8c65b..6db73d081a24 100644
--- a/nixpkgs/pkgs/tools/misc/fclones/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fclones/default.nix
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/pkolaczk/fclones/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ cyounkins figsoda msfjarvis ];
+    mainProgram = "fclones";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fcp/default.nix b/nixpkgs/pkgs/tools/misc/fcp/default.nix
index 7124e9078457..61db506bc1ae 100644
--- a/nixpkgs/pkgs/tools/misc/fcp/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fcp/default.nix
@@ -29,5 +29,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.bsd3;
     platforms = platforms.unix;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "fcp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fdupes/default.nix b/nixpkgs/pkgs/tools/misc/fdupes/default.nix
index f92a6a69fe28..e4e52115c356 100644
--- a/nixpkgs/pkgs/tools/misc/fdupes/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fdupes/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = [ maintainers.maggesi ];
+    mainProgram = "fdupes";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fedifetcher/default.nix b/nixpkgs/pkgs/tools/misc/fedifetcher/default.nix
index e3070ab6e5a9..3a1192d698c1 100644
--- a/nixpkgs/pkgs/tools/misc/fedifetcher/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fedifetcher/default.nix
@@ -36,5 +36,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://blog.thms.uk/fedifetcher";
     license = licenses.mit;
     maintainers = with maintainers; [ delroth ];
+    mainProgram = "fedifetcher";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fetch-scm/default.nix b/nixpkgs/pkgs/tools/misc/fetch-scm/default.nix
index 3e8a3e63e80a..a5bc1f65a904 100644
--- a/nixpkgs/pkgs/tools/misc/fetch-scm/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fetch-scm/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ vel ];
+    mainProgram = "fetch-scm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ffsend/default.nix b/nixpkgs/pkgs/tools/misc/ffsend/default.nix
index 309abb973d31..18f5a0ee0a16 100644
--- a/nixpkgs/pkgs/tools/misc/ffsend/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ffsend/default.nix
@@ -88,5 +88,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ lilyball equirosa marsam ];
     platforms = platforms.unix;
+    mainProgram = "ffsend";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/figlet/default.nix b/nixpkgs/pkgs/tools/misc/figlet/default.nix
index b297b03d86ba..746def80c6d9 100644
--- a/nixpkgs/pkgs/tools/misc/figlet/default.nix
+++ b/nixpkgs/pkgs/tools/misc/figlet/default.nix
@@ -21,6 +21,11 @@ stdenv.mkDerivation rec {
       name = "musl-fix-cplusplus-decls.patch";
       sha256 = "1720zgrfk9makznqkbjrnlxm7nnhk6zx7g458fv53337n3g3zn7j";
     })
+    (fetchpatch {
+      url = "https://github.com/cmatsuoka/figlet/commit/9a50c1795bc32e5a698b855131ee87c8d7762c9e.patch";
+      name = "unistd-on-darwin.patch";
+      sha256 = "hyfY87N+yuAwjsBIjpgvcdJ1IbzlR4A2yUJQSzShCRI=";
+    })
   ];
 
   makeFlags = [ "prefix=$(out)" "CC:=$(CC)" "LD:=$(CC)" ];
diff --git a/nixpkgs/pkgs/tools/misc/filebench/default.nix b/nixpkgs/pkgs/tools/misc/filebench/default.nix
index ca62c8c4a1a8..b8d4c6fa7a89 100644
--- a/nixpkgs/pkgs/tools/misc/filebench/default.nix
+++ b/nixpkgs/pkgs/tools/misc/filebench/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.cddl;
     maintainers = [ maintainers.dezgeg ];
     platforms = platforms.linux;
+    mainProgram = "filebench";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fileschanged/default.nix b/nixpkgs/pkgs/tools/misc/fileschanged/default.nix
index f44011a98a71..5644a01fa75a 100644
--- a/nixpkgs/pkgs/tools/misc/fileschanged/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fileschanged/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     '';
 
     platforms = lib.platforms.linux;
+    mainProgram = "fileschanged";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/findup/default.nix b/nixpkgs/pkgs/tools/misc/findup/default.nix
index d196192447d8..9cffd61f2011 100644
--- a/nixpkgs/pkgs/tools/misc/findup/default.nix
+++ b/nixpkgs/pkgs/tools/misc/findup/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation (finalAttrs: {
     description = "Search parent directories for sentinel files";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ booniepepper ];
+    mainProgram = "findup";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/flashrom-stable/default.nix b/nixpkgs/pkgs/tools/misc/flashrom-stable/default.nix
index b943c22d25be..053605b5aaf1 100644
--- a/nixpkgs/pkgs/tools/misc/flashrom-stable/default.nix
+++ b/nixpkgs/pkgs/tools/misc/flashrom-stable/default.nix
@@ -2,7 +2,7 @@
 , installShellFiles
 , lib
 , libftdi1
-, libgpiod
+, libgpiod_1
 , libjaylink
 , libusb1
 , pciutils
@@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
     libjaylink
     libusb1
   ] ++ lib.optionals (!stdenv.isDarwin) [
-    libgpiod
+    libgpiod_1
     pciutils
   ];
 
@@ -43,5 +43,6 @@ stdenv.mkDerivation rec {
     license = with licenses; [ gpl2 gpl2Plus ];
     maintainers = with maintainers; [ felixsinger ];
     platforms = platforms.all;
+    mainProgram = "flashrom";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/flashrom/default.nix b/nixpkgs/pkgs/tools/misc/flashrom/default.nix
index 6463595c28c8..b2b9583db232 100644
--- a/nixpkgs/pkgs/tools/misc/flashrom/default.nix
+++ b/nixpkgs/pkgs/tools/misc/flashrom/default.nix
@@ -43,5 +43,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ fpletz felixsinger ];
     platforms = platforms.all;
+    mainProgram = "flashrom";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/flitter/default.nix b/nixpkgs/pkgs/tools/misc/flitter/default.nix
index 5df3d168a9b0..958c5ebc3209 100644
--- a/nixpkgs/pkgs/tools/misc/flitter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/flitter/default.nix
@@ -56,5 +56,6 @@ ocamlPackages.buildDunePackage {
     maintainers = with maintainers; [ fgaz ];
     homepage = "https://github.com/alexozer/flitter";
     platforms = platforms.unix;
+    mainProgram = "flitter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/flowgger/default.nix b/nixpkgs/pkgs/tools/misc/flowgger/default.nix
index 44908d67bb9e..c9517043adc9 100644
--- a/nixpkgs/pkgs/tools/misc/flowgger/default.nix
+++ b/nixpkgs/pkgs/tools/misc/flowgger/default.nix
@@ -38,5 +38,6 @@ rustPlatform.buildRustPackage rec {
     description = "A fast, simple and lightweight data collector written in Rust";
     license = licenses.bsd2;
     maintainers = with maintainers; [];
+    mainProgram = "flowgger";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fltrdr/default.nix b/nixpkgs/pkgs/tools/misc/fltrdr/default.nix
index 3e51a4c8bbc2..25cbf8059335 100644
--- a/nixpkgs/pkgs/tools/misc/fltrdr/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fltrdr/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     platforms   = platforms.linux; # can only test linux
     license     = licenses.mit;
     maintainers = [ maintainers.matthiasbeyer ];
+    mainProgram = "fltrdr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fluentd/Gemfile.lock b/nixpkgs/pkgs/tools/misc/fluentd/Gemfile.lock
index 4489fba02081..f8d002614fe5 100644
--- a/nixpkgs/pkgs/tools/misc/fluentd/Gemfile.lock
+++ b/nixpkgs/pkgs/tools/misc/fluentd/Gemfile.lock
@@ -13,6 +13,7 @@ GEM
       aws-partitions (~> 1, >= 1.651.0)
       aws-sigv4 (~> 1.5)
       jmespath (~> 1, >= 1.6.1)
+      nokogiri (~> 1.0)
     aws-sdk-firehose (1.50.0)
       aws-sdk-core (~> 3, >= 3.165.0)
       aws-sigv4 (~> 1.1)
@@ -120,12 +121,17 @@ GEM
     http_parser.rb (0.8.0)
     jmespath (1.6.2)
     ltsv (0.1.2)
+    mini_portile2 (2.8.2)
     mongo (2.18.2)
       bson (>= 4.14.1, < 5.0.0)
     msgpack (1.6.0)
     multi_json (1.15.0)
     multipart-post (2.2.3)
+    nokogiri (1.15.2)
+      mini_portile2 (2.8.2)
+      racc (1.6.2)
     public_suffix (5.0.1)
+    racc (1.6.2)
     rake (13.0.6)
     ruby-kafka (1.5.0)
       digest-crc
diff --git a/nixpkgs/pkgs/tools/misc/fluentd/gemset.nix b/nixpkgs/pkgs/tools/misc/fluentd/gemset.nix
index 993045684676..16417bb0e4e9 100644
--- a/nixpkgs/pkgs/tools/misc/fluentd/gemset.nix
+++ b/nixpkgs/pkgs/tools/misc/fluentd/gemset.nix
@@ -1,4 +1,35 @@
 {
+  mini_portile2 = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0z7f38iq37h376n9xbl4gajdrnwzq284c9v1py4imw3gri2d5cj6";
+      type = "gem";
+    };
+    version = "2.8.2";
+  };
+  racc = {
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "09jgz6r0f7v84a7jz9an85q8vvmp743dqcsdm3z9c8rqcqv6pljq";
+      type = "gem";
+    };
+    version = "1.6.2";
+  };
+  nokogiri = {
+    dependencies = ["mini_portile2" "racc"];
+    groups = ["default" "development" "test"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1mr2ibfk874ncv0qbdkynay738w2mfinlkhnbd5lyk5yiw5q1p10";
+      type = "gem";
+    };
+    version = "1.15.2";
+  };
   addressable = {
     dependencies = ["public_suffix"];
     groups = ["default"];
@@ -42,7 +73,7 @@
     version = "1.58.0";
   };
   aws-sdk-core = {
-    dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath"];
+    dependencies = ["aws-eventstream" "aws-partitions" "aws-sigv4" "jmespath" "nokogiri"];
     groups = ["default"];
     platforms = [];
     source = {
diff --git a/nixpkgs/pkgs/tools/misc/font-config-info/default.nix b/nixpkgs/pkgs/tools/misc/font-config-info/default.nix
index 89f0d9060386..20133eb0df77 100644
--- a/nixpkgs/pkgs/tools/misc/font-config-info/default.nix
+++ b/nixpkgs/pkgs/tools/misc/font-config-info/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license = with licenses; [ bsd3 ];
     platforms = platforms.unix;
     maintainers = with maintainers; [ romildo ];
+    mainProgram = "font-config-info";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fontfor/default.nix b/nixpkgs/pkgs/tools/misc/fontfor/default.nix
index 73d1085450e8..f870e0107701 100644
--- a/nixpkgs/pkgs/tools/misc/fontfor/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fontfor/default.nix
@@ -37,5 +37,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ shamilton ];
     platforms = platforms.linux;
+    mainProgram = "fontfor";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fpp/default.nix b/nixpkgs/pkgs/tools/misc/fpp/default.nix
index ff514ceafb20..d8f575b1363b 100644
--- a/nixpkgs/pkgs/tools/misc/fpp/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fpp/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     homepage = "https://facebook.github.io/PathPicker/";
     license = lib.licenses.bsd3;
     platforms = lib.platforms.all;
+    mainProgram = "fpp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fre/default.nix b/nixpkgs/pkgs/tools/misc/fre/default.nix
index 92393eb4fc27..b3bc0eadae0d 100644
--- a/nixpkgs/pkgs/tools/misc/fre/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fre/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/camdencheek/fre/blob/${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ gaykitty ];
+    mainProgram = "fre";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/freshfetch/default.nix b/nixpkgs/pkgs/tools/misc/freshfetch/default.nix
index 89ec74b20258..0723c18048b9 100644
--- a/nixpkgs/pkgs/tools/misc/freshfetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/freshfetch/default.nix
@@ -43,5 +43,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/k4rakara/freshfetch";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "freshfetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fselect/default.nix b/nixpkgs/pkgs/tools/misc/fselect/default.nix
index fbad5f05ad3a..401de87d64fd 100644
--- a/nixpkgs/pkgs/tools/misc/fselect/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fselect/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/jhspetersson/fselect";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ Br1ght0ne ];
+    mainProgram = "fselect";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fsmark/default.nix b/nixpkgs/pkgs/tools/misc/fsmark/default.nix
index 1a21156e6403..2c2aa2c6fef8 100644
--- a/nixpkgs/pkgs/tools/misc/fsmark/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fsmark/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.dezgeg ];
     platforms = platforms.linux;
+    mainProgram = "fs_mark";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fsmon/default.nix b/nixpkgs/pkgs/tools/misc/fsmon/default.nix
index 6cde8a2150be..f704de4f6515 100644
--- a/nixpkgs/pkgs/tools/misc/fsmon/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fsmon/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ dezgeg ];
     platforms = platforms.linux;
+    mainProgram = "fsmon";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fsql/default.nix b/nixpkgs/pkgs/tools/misc/fsql/default.nix
index 4b92e885b696..d9f3b3ae8f90 100644
--- a/nixpkgs/pkgs/tools/misc/fsql/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fsql/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     homepage = "https://github.com/kshvmdn/fsql";
     license = licenses.mit;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "fsql";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fsrx/default.nix b/nixpkgs/pkgs/tools/misc/fsrx/default.nix
index ad1ad389f1be..63f3b9728f1e 100644
--- a/nixpkgs/pkgs/tools/misc/fsrx/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fsrx/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/thatvegandev/fsrx";
     license = licenses.mit;
     maintainers = with maintainers; [ MoritzBoehme ];
+    mainProgram = "fsrx";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fw/default.nix b/nixpkgs/pkgs/tools/misc/fw/default.nix
index dc000a11295a..e43c6ef31be1 100644
--- a/nixpkgs/pkgs/tools/misc/fw/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fw/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "fw";
-  version = "2.18.0";
+  version = "2.19.0";
 
   src = fetchFromGitHub {
     owner = "brocode";
     repo = "fw";
     rev = "v${version}";
-    hash = "sha256-8PcIaSXmk6/p5N6L2/nLrFS6JUZRRJsN2mKQYtevS6s=";
+    hash = "sha256-6+sB/jGkVrpeqfgFdmUdU1/gOapD6fXFG5E3Rsu9rC0=";
   };
 
-  cargoHash = "sha256-l6mRjVk3qNAxfNqcKGo2dceD2Xb+hk+xMvdh/U1jZXw=";
+  cargoHash = "sha256-0/CtJyWr2TbEUOlHLqgPIKwInForcT9x5agw7O/6TYU=";
 
   nativeBuildInputs = [
     pkg-config
@@ -43,5 +43,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/brocode/fw";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "fw";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fx-cast-bridge/default.nix b/nixpkgs/pkgs/tools/misc/fx-cast-bridge/default.nix
index 5f2274101e56..7af4f5dac48d 100644
--- a/nixpkgs/pkgs/tools/misc/fx-cast-bridge/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fx-cast-bridge/default.nix
@@ -50,6 +50,7 @@ buildNpmPackage rec {
     description = "Implementation of the Chrome Sender API (Chromecast) within Firefox";
     homepage = "https://hensm.github.io/fx_cast/";
     license = licenses.mit;
-    maintainers = with maintainers; [ dtzWill pedrohlc ];
+    maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "fx_cast_bridge";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/fzf/default.nix b/nixpkgs/pkgs/tools/misc/fzf/default.nix
index 8e783fc15509..df10755f14c9 100644
--- a/nixpkgs/pkgs/tools/misc/fzf/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fzf/default.nix
@@ -60,6 +60,7 @@ buildGoModule rec {
     # Has a sneaky dependency on perl
     # Include first args to make sure we're patching the right thing
     substituteInPlace shell/key-bindings.bash \
+      --replace "command -v perl" "command -v ${ourPerl}/bin/perl" \
       --replace " perl -n " " ${ourPerl}/bin/perl -n "
     # fzf-tmux depends on bc
    substituteInPlace bin/fzf-tmux \
diff --git a/nixpkgs/pkgs/tools/misc/fzy/default.nix b/nixpkgs/pkgs/tools/misc/fzy/default.nix
index f726adb0d462..b7186e08d3db 100644
--- a/nixpkgs/pkgs/tools/misc/fzy/default.nix
+++ b/nixpkgs/pkgs/tools/misc/fzy/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ dywedir ];
     platforms = platforms.all;
+    mainProgram = "fzy";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/g203-led/default.nix b/nixpkgs/pkgs/tools/misc/g203-led/default.nix
index 7290b57a3236..f2db4f58d591 100644
--- a/nixpkgs/pkgs/tools/misc/g203-led/default.nix
+++ b/nixpkgs/pkgs/tools/misc/g203-led/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ r-burns ];
     homepage = "https://github.com/smasty/g203-led";
     platforms = platforms.linux;
+    mainProgram = "g203-led";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/g933-utils/default.nix b/nixpkgs/pkgs/tools/misc/g933-utils/default.nix
index a2671f946b05..de084fb74bf4 100644
--- a/nixpkgs/pkgs/tools/misc/g933-utils/default.nix
+++ b/nixpkgs/pkgs/tools/misc/g933-utils/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ seqizz ];
     platforms = platforms.linux;
+    mainProgram = "g933-utils";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gay/default.nix b/nixpkgs/pkgs/tools/misc/gay/default.nix
index 42887f85c6c0..d1129702f867 100644
--- a/nixpkgs/pkgs/tools/misc/gay/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gay/default.nix
@@ -17,5 +17,6 @@ python3.pkgs.buildPythonApplication rec {
     description = "Colour your text / terminal to be more gay";
     license = licenses.mit;
     maintainers = with maintainers; [ AndersonTorres CodeLongAndProsper90 ];
+    mainProgram = "gay";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gazelle-origin/default.nix b/nixpkgs/pkgs/tools/misc/gazelle-origin/default.nix
index 19955c56d02c..924c0ba8df7b 100644
--- a/nixpkgs/pkgs/tools/misc/gazelle-origin/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gazelle-origin/default.nix
@@ -33,5 +33,6 @@ buildPythonApplication rec {
     # TODO license is unspecified in the upstream, as well as the fork
     license = licenses.unfree;
     maintainers = with maintainers; [ somasis ];
+    mainProgram = "gazelle-origin";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gbdfed/default.nix b/nixpkgs/pkgs/tools/misc/gbdfed/default.nix
index ded2864dbc64..0d709117b924 100644
--- a/nixpkgs/pkgs/tools/misc/gbdfed/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gbdfed/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.linquize ];
     platforms = lib.platforms.all;
+    mainProgram = "gbdfed";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/geteltorito/default.nix b/nixpkgs/pkgs/tools/misc/geteltorito/default.nix
index be2de1167e3c..5fb2209ee8c1 100644
--- a/nixpkgs/pkgs/tools/misc/geteltorito/default.nix
+++ b/nixpkgs/pkgs/tools/misc/geteltorito/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
     homepage = "https://userpages.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/";
     maintainers = [ maintainers.Profpatsch ];
     license = licenses.gpl2;
+    mainProgram = "geteltorito";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/misc/getopt/default.nix b/nixpkgs/pkgs/tools/misc/getopt/default.nix
index 2090fcbd7aac..6b6cbf66b13f 100644
--- a/nixpkgs/pkgs/tools/misc/getopt/default.nix
+++ b/nixpkgs/pkgs/tools/misc/getopt/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     platforms = lib.platforms.unix;
     homepage = "http://frodo.looijaard.name/project/getopt";
     description = "Parses command-line arguments from shell scripts";
+    mainProgram = "getopt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gh-actions-cache/default.nix b/nixpkgs/pkgs/tools/misc/gh-actions-cache/default.nix
index 46fe8cb704d1..2575beabf82a 100644
--- a/nixpkgs/pkgs/tools/misc/gh-actions-cache/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gh-actions-cache/default.nix
@@ -31,5 +31,6 @@ buildGoModule rec {
     changelog = "https://github.com/actions/gh-actions-cache/releases/tag/${src.rev}";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ amesgen ];
+    mainProgram = "gh-actions-cache";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gh-cal/default.nix b/nixpkgs/pkgs/tools/misc/gh-cal/default.nix
index 3e38cdf9d752..98334e0afd55 100644
--- a/nixpkgs/pkgs/tools/misc/gh-cal/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gh-cal/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/mrshmllow/gh-cal";
     license = licenses.mit;
     maintainers = with maintainers; [ loicreynier ];
+    mainProgram = "gh-cal";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gh-dash/default.nix b/nixpkgs/pkgs/tools/misc/gh-dash/default.nix
index 1fc865feef82..f2d7195bd3c1 100644
--- a/nixpkgs/pkgs/tools/misc/gh-dash/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gh-dash/default.nix
@@ -34,5 +34,6 @@ buildGoModule rec {
     homepage = "https://github.com/dlvhdr/gh-dash";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ amesgen ];
+    mainProgram = "gh-dash";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gh-eco/default.nix b/nixpkgs/pkgs/tools/misc/gh-eco/default.nix
index 98f84659a40e..329ef60c1b4e 100644
--- a/nixpkgs/pkgs/tools/misc/gh-eco/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gh-eco/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
     description = "gh extension to explore the ecosystem";
     license = licenses.mit;
     maintainers = with maintainers; [ helium ];
+    mainProgram = "gh-eco";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/misc/gh-markdown-preview/default.nix b/nixpkgs/pkgs/tools/misc/gh-markdown-preview/default.nix
index e4fe21fc0918..68f041dbbf2d 100644
--- a/nixpkgs/pkgs/tools/misc/gh-markdown-preview/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gh-markdown-preview/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     changelog = "https://github.com/yusukebe/gh-markdown-preview/releases/tag/${src.rev}";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ amesgen ];
+    mainProgram = "gh-markdown-preview";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gh-ost/default.nix b/nixpkgs/pkgs/tools/misc/gh-ost/default.nix
index a43c6bb80f0b..91798cfae8c9 100644
--- a/nixpkgs/pkgs/tools/misc/gh-ost/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gh-ost/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     description = "Triggerless online schema migration solution for MySQL";
     homepage = "https://github.com/github/gh-ost";
     license = licenses.mit;
+    mainProgram = "gh-ost";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ghostie/default.nix b/nixpkgs/pkgs/tools/misc/ghostie/default.nix
index 2bda5af2af30..0a4e1cb695e0 100644
--- a/nixpkgs/pkgs/tools/misc/ghostie/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ghostie/default.nix
@@ -51,5 +51,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ matthiasbeyer ];
     broken = stdenv.isx86_64 && stdenv.isDarwin;
+    mainProgram = "ghostie";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gibo/default.nix b/nixpkgs/pkgs/tools/misc/gibo/default.nix
index 6ee4698d750c..edd166f00f56 100644
--- a/nixpkgs/pkgs/tools/misc/gibo/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gibo/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.publicDomain;
     description = "A shell script for easily accessing gitignore boilerplates";
     platforms = lib.platforms.unix;
+    mainProgram = "gibo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gif-for-cli/default.nix b/nixpkgs/pkgs/tools/misc/gif-for-cli/default.nix
index 61690b5f41a9..3a2ad84a4430 100644
--- a/nixpkgs/pkgs/tools/misc/gif-for-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gif-for-cli/default.nix
@@ -51,5 +51,6 @@ python3Packages.buildPythonApplication {
     homepage = "https://github.com/google/gif-for-cli";
     license = licenses.asl20;
     maintainers = with maintainers; [ Scriptkiddi ];
+    mainProgram = "gif-for-cli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gigalixir/default.nix b/nixpkgs/pkgs/tools/misc/gigalixir/default.nix
index 916193f61ec0..0ba75bbc82b9 100644
--- a/nixpkgs/pkgs/tools/misc/gigalixir/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gigalixir/default.nix
@@ -60,5 +60,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/gigalixir/gigalixir-cli";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
+    mainProgram = "gigalixir";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/github-backup/default.nix b/nixpkgs/pkgs/tools/misc/github-backup/default.nix
index a753eaf93742..ce16e2b788c1 100644
--- a/nixpkgs/pkgs/tools/misc/github-backup/default.nix
+++ b/nixpkgs/pkgs/tools/misc/github-backup/default.nix
@@ -28,5 +28,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/josegonzalez/python-github-backup/blob/${version}/CHANGES.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
+    mainProgram = "github-backup";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/github-copilot-cli/default.nix b/nixpkgs/pkgs/tools/misc/github-copilot-cli/default.nix
index a6c5e7477d49..445b28819058 100644
--- a/nixpkgs/pkgs/tools/misc/github-copilot-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/github-copilot-cli/default.nix
@@ -23,6 +23,7 @@ buildNpmPackage rec {
     license = licenses.unfree; # upstream has no license
     maintainers = [ maintainers.malo ];
     platforms = platforms.all;
+    mainProgram = "github-copilot-cli";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/misc/glasgow/default.nix b/nixpkgs/pkgs/tools/misc/glasgow/default.nix
index 470f4016e5dd..77f3eb01d96a 100644
--- a/nixpkgs/pkgs/tools/misc/glasgow/default.nix
+++ b/nixpkgs/pkgs/tools/misc/glasgow/default.nix
@@ -77,5 +77,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/GlasgowEmbedded/Glasgow";
     license = licenses.bsd0;
     maintainers = with maintainers; [ emily thoughtpolice ];
+    mainProgram = "glasgow";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/go-ios/default.nix b/nixpkgs/pkgs/tools/misc/go-ios/default.nix
index 3c8c3fe65b4a..84b24e75e478 100644
--- a/nixpkgs/pkgs/tools/misc/go-ios/default.nix
+++ b/nixpkgs/pkgs/tools/misc/go-ios/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     homepage = "https://github.com/danielpaulus/go-ios";
     license = licenses.mit;
     maintainers = with maintainers; [ eyjhb ];
+    mainProgram = "ios";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/goaccess/default.nix b/nixpkgs/pkgs/tools/misc/goaccess/default.nix
index b147935c4483..f355d3029067 100644
--- a/nixpkgs/pkgs/tools/misc/goaccess/default.nix
+++ b/nixpkgs/pkgs/tools/misc/goaccess/default.nix
@@ -47,5 +47,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ ederoyd46 ];
     platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "goaccess";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/godu/default.nix b/nixpkgs/pkgs/tools/misc/godu/default.nix
index f4e1fc1c4fbe..7bd29ed43661 100644
--- a/nixpkgs/pkgs/tools/misc/godu/default.nix
+++ b/nixpkgs/pkgs/tools/misc/godu/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     homepage = "https://github.com/viktomas/godu";
     license = licenses.mit;
     maintainers = with maintainers; [ rople380 ];
+    mainProgram = "godu";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gomi/default.nix b/nixpkgs/pkgs/tools/misc/gomi/default.nix
index 4f8a4875b3e5..76ef724332e5 100644
--- a/nixpkgs/pkgs/tools/misc/gomi/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gomi/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     homepage = "https://github.com/b4b4r07/gomi";
     license = licenses.mit;
     maintainers = with maintainers; [ ozkutuk ];
+    mainProgram = "gomi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/goose/default.nix b/nixpkgs/pkgs/tools/misc/goose/default.nix
index 8e163a3fb42b..13de61b48e9d 100644
--- a/nixpkgs/pkgs/tools/misc/goose/default.nix
+++ b/nixpkgs/pkgs/tools/misc/goose/default.nix
@@ -43,5 +43,6 @@ buildGoModule rec {
     homepage = "https://pressly.github.io/goose/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ yuka ];
+    mainProgram = "goose";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/goreleaser/default.nix b/nixpkgs/pkgs/tools/misc/goreleaser/default.nix
index d5ab9a94b84b..a3833e1a4f83 100644
--- a/nixpkgs/pkgs/tools/misc/goreleaser/default.nix
+++ b/nixpkgs/pkgs/tools/misc/goreleaser/default.nix
@@ -57,5 +57,6 @@ buildGoModule rec {
       caarlos0
     ];
     license = licenses.mit;
+    mainProgram = "goreleaser";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/goss/default.nix b/nixpkgs/pkgs/tools/misc/goss/default.nix
index e0a4369eb477..83b6b2466fbf 100644
--- a/nixpkgs/pkgs/tools/misc/goss/default.nix
+++ b/nixpkgs/pkgs/tools/misc/goss/default.nix
@@ -16,16 +16,16 @@ buildGoModule rec {
   pname = "goss";
 
   # Don't forget to update dgoss to the same version.
-  version = "0.4.2";
+  version = "0.4.4";
 
   src = fetchFromGitHub {
     owner = "goss-org";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-FDn1OETkYIpMenk8QAAHvfNZcSzqGl5xrD0fAZPVmRM=";
+    hash = "sha256-dH052t30unWmrFTZK5niXNvbg1nngzWY7mwuZr4ULbM=";
   };
 
-  vendorHash = "sha256-n+k7f9e2iqf4KrcDkzX0CWk+Bq2WE3dyUEid4PTP1FA=";
+  vendorHash = "sha256-4fEEz/c/xIeWxIzyyjwgSn2/2FWLA2tIedK65jGgYhY=";
 
   CGO_ENABLED = 0;
   ldflags = [
diff --git a/nixpkgs/pkgs/tools/misc/gotify-desktop/default.nix b/nixpkgs/pkgs/tools/misc/gotify-desktop/default.nix
index c3c532ca85f7..64d82def48a7 100644
--- a/nixpkgs/pkgs/tools/misc/gotify-desktop/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gotify-desktop/default.nix
@@ -23,5 +23,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ bryanasdev000 genofire ];
     broken = stdenv.isDarwin;
+    mainProgram = "gotify-desktop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gparted/default.nix b/nixpkgs/pkgs/tools/misc/gparted/default.nix
index 278dced6b644..1c16795d40bd 100644
--- a/nixpkgs/pkgs/tools/misc/gparted/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gparted/default.nix
@@ -57,5 +57,6 @@ stdenv.mkDerivation rec {
     homepage = "https://gparted.org";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
+    mainProgram = "gparted";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gpick/default.nix b/nixpkgs/pkgs/tools/misc/gpick/default.nix
index c7579802008b..0d421212a3d4 100644
--- a/nixpkgs/pkgs/tools/misc/gpick/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gpick/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     maintainers = [ maintainers.vanilla ];
     platforms = platforms.linux;
+    mainProgram = "gpick";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/grafterm/default.nix b/nixpkgs/pkgs/tools/misc/grafterm/default.nix
index f21a8ba76fc5..a15ab6e5ed0f 100644
--- a/nixpkgs/pkgs/tools/misc/grafterm/default.nix
+++ b/nixpkgs/pkgs/tools/misc/grafterm/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     homepage = "https://github.com/slok/grafterm";
     license = licenses.asl20;
     maintainers = with maintainers; [ arikgrahl ];
+    mainProgram = "grafterm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/grass-sass/default.nix b/nixpkgs/pkgs/tools/misc/grass-sass/default.nix
index 5a9193873f1d..83cb03f90c1c 100644
--- a/nixpkgs/pkgs/tools/misc/grass-sass/default.nix
+++ b/nixpkgs/pkgs/tools/misc/grass-sass/default.nix
@@ -23,5 +23,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/connorskees/grass/blob/master/CHANGELOG.md#${replaceStrings [ "." ] [ "" ] version}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "grass";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/grit/default.nix b/nixpkgs/pkgs/tools/misc/grit/default.nix
index 0b31627ece27..448224c9e9ad 100644
--- a/nixpkgs/pkgs/tools/misc/grit/default.nix
+++ b/nixpkgs/pkgs/tools/misc/grit/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     homepage = "https://github.com/climech/grit";
     license = licenses.mit;
     maintainers = [ maintainers.ivar ];
+    mainProgram = "grit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/grizzly/default.nix b/nixpkgs/pkgs/tools/misc/grizzly/default.nix
index a9b7bde2e7bd..fa96cf1b1c05 100644
--- a/nixpkgs/pkgs/tools/misc/grizzly/default.nix
+++ b/nixpkgs/pkgs/tools/misc/grizzly/default.nix
@@ -24,5 +24,6 @@ buildGoModule rec {
     license = licenses.asl20;
     maintainers = with lib.maintainers; [ nrhtr ];
     platforms = platforms.unix;
+    mainProgram = "grr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gti/default.nix b/nixpkgs/pkgs/tools/misc/gti/default.nix
index 0246421e7fdc..b60abc97e92c 100644
--- a/nixpkgs/pkgs/tools/misc/gti/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gti/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation rec {
     description = "Humorous typo-based git runner; drives a car over the terminal";
     maintainers = with maintainers; [ fadenb ];
     platforms = platforms.unix;
+    mainProgram = "gti";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/gwe/default.nix b/nixpkgs/pkgs/tools/misc/gwe/default.nix
index 4a4b02b53706..e1576c3f9dc5 100644
--- a/nixpkgs/pkgs/tools/misc/gwe/default.nix
+++ b/nixpkgs/pkgs/tools/misc/gwe/default.nix
@@ -84,5 +84,6 @@ in stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.gpl3Only;
     maintainers = [ maintainers.ivar ];
+    mainProgram = "gwe";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hackertyper/default.nix b/nixpkgs/pkgs/tools/misc/hackertyper/default.nix
index d72dd1798d5a..da9af1eca922 100644
--- a/nixpkgs/pkgs/tools/misc/hackertyper/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hackertyper/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation {
     homepage = "https://github.com/Hurricane996/Hackertyper";
     license = licenses.gpl3;
     maintainers = [ maintainers.marius851000 ];
+    mainProgram = "hackertyper";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hacksaw/default.nix b/nixpkgs/pkgs/tools/misc/hacksaw/default.nix
index 6eecee46a380..5532fa181f64 100644
--- a/nixpkgs/pkgs/tools/misc/hacksaw/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hacksaw/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ mpl20 ];
     maintainers = with maintainers; [ TethysSvensson ];
     platforms = platforms.linux;
+    mainProgram = "hacksaw";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hakuneko/default.nix b/nixpkgs/pkgs/tools/misc/hakuneko/default.nix
index bb7bf24cb659..0ad8c5907a70 100644
--- a/nixpkgs/pkgs/tools/misc/hakuneko/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hakuneko/default.nix
@@ -93,5 +93,6 @@ stdenv.mkDerivation rec {
       "x86_64-linux"
       "i686-linux"
     ];
+    mainProgram = "hakuneko";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/halp/default.nix b/nixpkgs/pkgs/tools/misc/halp/default.nix
index 89867fe7a941..e88e23f7cfe7 100644
--- a/nixpkgs/pkgs/tools/misc/halp/default.nix
+++ b/nixpkgs/pkgs/tools/misc/halp/default.nix
@@ -75,5 +75,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/orhun/halp/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "halp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/handlr-regex/default.nix b/nixpkgs/pkgs/tools/misc/handlr-regex/default.nix
index 15b993564ee4..7b6b886524cf 100644
--- a/nixpkgs/pkgs/tools/misc/handlr-regex/default.nix
+++ b/nixpkgs/pkgs/tools/misc/handlr-regex/default.nix
@@ -34,5 +34,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/Anomalocaridid/handlr-regex";
     license = licenses.mit;
     maintainers = with maintainers; [ anomalocaris ];
+    mainProgram = "handlr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/handlr/default.nix b/nixpkgs/pkgs/tools/misc/handlr/default.nix
index 19f02cdd1b19..1022763b7540 100644
--- a/nixpkgs/pkgs/tools/misc/handlr/default.nix
+++ b/nixpkgs/pkgs/tools/misc/handlr/default.nix
@@ -32,5 +32,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/chmln/handlr";
     license = licenses.mit;
     maintainers = with maintainers; [ mredaelli artturin ];
+    mainProgram = "handlr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hashpump/default.nix b/nixpkgs/pkgs/tools/misc/hashpump/default.nix
index bc1f019ab72c..11b0650d849d 100644
--- a/nixpkgs/pkgs/tools/misc/hashpump/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hashpump/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ t4ccer ];
     platforms = lib.platforms.linux;
+    mainProgram = "hashpump";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/haste-client/default.nix b/nixpkgs/pkgs/tools/misc/haste-client/default.nix
index 905d4bedf546..eb4b6f868294 100644
--- a/nixpkgs/pkgs/tools/misc/haste-client/default.nix
+++ b/nixpkgs/pkgs/tools/misc/haste-client/default.nix
@@ -13,5 +13,6 @@ bundlerApp {
     license     = licenses.mit;
     maintainers = with maintainers; [ shamilton ];
     platforms   = platforms.unix;
+    mainProgram = "haste";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hdaps-gl/default.nix b/nixpkgs/pkgs/tools/misc/hdaps-gl/default.nix
index 8ea863f46417..1999d9ad0d56 100644
--- a/nixpkgs/pkgs/tools/misc/hdaps-gl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hdaps-gl/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = [ maintainers.symphorien ];
+    mainProgram = "hdaps-gl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hddtemp/default.nix b/nixpkgs/pkgs/tools/misc/hddtemp/default.nix
index 3939d60144d9..3bdd7e84f3ab 100644
--- a/nixpkgs/pkgs/tools/misc/hddtemp/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hddtemp/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ peterhoeg ];
     platforms = platforms.linux;
+    mainProgram = "hddtemp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hdf5/1.10.nix b/nixpkgs/pkgs/tools/misc/hdf5/1.10.nix
index dcfcf4a6a544..dda8fd3a8fa4 100644
--- a/nixpkgs/pkgs/tools/misc/hdf5/1.10.nix
+++ b/nixpkgs/pkgs/tools/misc/hdf5/1.10.nix
@@ -12,11 +12,11 @@
 let inherit (lib) optional; in
 
 stdenv.mkDerivation rec {
-  version = "1.10.9";
+  version = "1.10.11";
   pname = "hdf5";
   src = fetchurl {
     url = "https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${lib.versions.majorMinor version}/${pname}-${version}/src/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-AMS+cJbzb9yvpPl04SbGwUEkKOOOvHsYHZB0WeeB8ZE=";
+    sha256 = "sha256-Cvx32lxGIXcJR1u++8qRwMtvHqYozNjDYZbPbFpN4wQ=";
   };
 
   outputs = [ "out" "dev" ];
@@ -51,11 +51,5 @@ stdenv.mkDerivation rec {
     license = lib.licenses.bsd3; # Lawrence Berkeley National Labs BSD 3-Clause variant
     homepage = "https://www.hdfgroup.org/HDF5/";
     platforms = lib.platforms.unix;
-    knownVulnerabilities = [
-      "CVE-2020-10809"
-      "CVE-2020-10810"
-      "CVE-2020-10811"
-      "CVE-2020-10812"
-    ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hdfview/default.nix b/nixpkgs/pkgs/tools/misc/hdfview/default.nix
index 127d76ad560f..b74e64386eb0 100644
--- a/nixpkgs/pkgs/tools/misc/hdfview/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hdfview/default.nix
@@ -70,5 +70,6 @@ stdenv.mkDerivation rec {
     homepage = "https://portal.hdfgroup.org/display/HDFVIEW/HDFView";
     platforms = lib.platforms.linux ++ lib.platforms.darwin;
     maintainers = with lib.maintainers; [ jiegec ];
+    mainProgram = "HDFView";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hebcal/default.nix b/nixpkgs/pkgs/tools/misc/hebcal/default.nix
index 050cc63f6a5d..80d52592c742 100644
--- a/nixpkgs/pkgs/tools/misc/hebcal/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hebcal/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.hhm ];
     platforms = platforms.all;
+    mainProgram = "hebcal";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/heimdall/default.nix b/nixpkgs/pkgs/tools/misc/heimdall/default.nix
index 810413a7b09a..422363ef418a 100644
--- a/nixpkgs/pkgs/tools/misc/heimdall/default.nix
+++ b/nixpkgs/pkgs/tools/misc/heimdall/default.nix
@@ -50,5 +50,6 @@ mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ peterhoeg ];
     platforms = platforms.unix;
+    mainProgram = "heimdall";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hex/default.nix b/nixpkgs/pkgs/tools/misc/hex/default.nix
index 618fbe1dda60..c903404d0bf1 100644
--- a/nixpkgs/pkgs/tools/misc/hex/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hex/default.nix
@@ -7,16 +7,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "hex";
-  version = "0.4.2";
+  version = "0.5.0";
 
   src = fetchFromGitHub {
     owner = "sitkevij";
     repo = "hex";
     rev = "v${version}";
-    hash = "sha256-mxKjiciejnOTbSkCzOWdAtysRAnEv4JgntPS1qM9og8=";
+    hash = "sha256-0LUT86mtqkscTfWNj2WHdMUizq0UQMCqXqTE0HRUItc=";
   };
 
-  cargoHash = "sha256-kGe6XN03V+ILnlAcT0E8BvrYMa7ub05STFsFY6X5Gkk=";
+  cargoHash = "sha256-BDDAKr6F9KtZGKX6FjasnO8oneZp0cy0M9r0tyqxL+o=";
 
   passthru.tests.version = testers.testVersion {
     package = hex;
diff --git a/nixpkgs/pkgs/tools/misc/hexd/default.nix b/nixpkgs/pkgs/tools/misc/hexd/default.nix
index 510de6a8ee36..140db3435083 100644
--- a/nixpkgs/pkgs/tools/misc/hexd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hexd/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.FireyFly ];
     license = licenses.mit;
     platforms = platforms.unix;
+    mainProgram = "hexd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hexdiff/default.nix b/nixpkgs/pkgs/tools/misc/hexdiff/default.nix
index 8205cfdd0ab4..937a07bee78b 100644
--- a/nixpkgs/pkgs/tools/misc/hexdiff/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hexdiff/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation {
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ rogarb ];
     platforms = lib.platforms.linux;
+    mainProgram = "hexdiff";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hexyl/default.nix b/nixpkgs/pkgs/tools/misc/hexyl/default.nix
index 29a7b32ce336..d502e84e5607 100644
--- a/nixpkgs/pkgs/tools/misc/hexyl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hexyl/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/sharkdp/hexyl/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ dywedir figsoda SuperSandro2000 ];
+    mainProgram = "hexyl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hhpc/default.nix b/nixpkgs/pkgs/tools/misc/hhpc/default.nix
index 5f02121e59f5..71c39c68acce 100644
--- a/nixpkgs/pkgs/tools/misc/hhpc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hhpc/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ nico202 ];
     platforms = platforms.unix;
     license = lib.licenses.bsd3;
+    mainProgram = "hhpc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hid-listen/default.nix b/nixpkgs/pkgs/tools/misc/hid-listen/default.nix
index 1f69a3fe749b..62c2d7beb2ff 100644
--- a/nixpkgs/pkgs/tools/misc/hid-listen/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hid-listen/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ tomsmeets ];
     platforms = platforms.linux;
+    mainProgram = "hid_listen";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hidrd/default.nix b/nixpkgs/pkgs/tools/misc/hidrd/default.nix
index 0c58a5e42f98..5ce3e969f276 100644
--- a/nixpkgs/pkgs/tools/misc/hidrd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hidrd/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation {
     maintainers = with maintainers; [ pacien ];
     platforms = platforms.all;
     broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/hidrd.x86_64-darwin
+    mainProgram = "hidrd-convert";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/homesick/default.nix b/nixpkgs/pkgs/tools/misc/homesick/default.nix
index 5cd11bc48d1f..663990ffac80 100644
--- a/nixpkgs/pkgs/tools/misc/homesick/default.nix
+++ b/nixpkgs/pkgs/tools/misc/homesick/default.nix
@@ -24,5 +24,6 @@ bundlerEnv {
     license = licenses.mit;
     maintainers = with maintainers; [ aaronschif nicknovitski ];
     platforms = platforms.unix;
+    mainProgram = "homesick";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hpcg/default.nix b/nixpkgs/pkgs/tools/misc/hpcg/default.nix
index d6896527ad2a..77621bd6f158 100644
--- a/nixpkgs/pkgs/tools/misc/hpcg/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hpcg/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.bsd3;
     maintainers = [ maintainers.markuskowa ];
+    mainProgram = "xhpcg";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/misc/hpl/default.nix b/nixpkgs/pkgs/tools/misc/hpl/default.nix
index c9a81ebb8a1b..0521afc4ef26 100644
--- a/nixpkgs/pkgs/tools/misc/hpl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hpl/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.bsdOriginal;
     maintainers = [ maintainers.markuskowa ];
+    mainProgram = "xhpl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/html-proofer/default.nix b/nixpkgs/pkgs/tools/misc/html-proofer/default.nix
index 73025a212b2a..cc4f6f69f263 100644
--- a/nixpkgs/pkgs/tools/misc/html-proofer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/html-proofer/default.nix
@@ -16,5 +16,6 @@ bundlerEnv rec {
     license     = licenses.mit;
     maintainers = with maintainers; [ ];
     platforms   = platforms.unix;
+    mainProgram = "htmlproofer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hueadm/default.nix b/nixpkgs/pkgs/tools/misc/hueadm/default.nix
index 393f4baa955b..7eeb7b2eb790 100644
--- a/nixpkgs/pkgs/tools/misc/hueadm/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hueadm/default.nix
@@ -23,5 +23,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/bahamas10/hueadm";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ infinisil ];
+    mainProgram = "hueadm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hunt/default.nix b/nixpkgs/pkgs/tools/misc/hunt/default.nix
index da466e7b98a7..38fbf9bc828d 100644
--- a/nixpkgs/pkgs/tools/misc/hunt/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hunt/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/LyonSyonII/hunt";
     license = licenses.mit;
     maintainers = with maintainers; [ dit7ya ];
+    mainProgram = "hunt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hwatch/default.nix b/nixpkgs/pkgs/tools/misc/hwatch/default.nix
index 6e3ad36af163..2eb8be5d2f93 100644
--- a/nixpkgs/pkgs/tools/misc/hwatch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hwatch/default.nix
@@ -35,5 +35,6 @@ rustPlatform.buildRustPackage rec {
     '';
     license = licenses.mit;
     maintainers = with maintainers; [ hamburger1984 ];
+    mainProgram = "hwatch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/hyperfine/default.nix b/nixpkgs/pkgs/tools/misc/hyperfine/default.nix
index 420d1ae04eda..16de5fa76f3d 100644
--- a/nixpkgs/pkgs/tools/misc/hyperfine/default.nix
+++ b/nixpkgs/pkgs/tools/misc/hyperfine/default.nix
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/sharkdp/hyperfine/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ figsoda thoughtpolice ];
+    mainProgram = "hyperfine";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/i3nator/default.nix b/nixpkgs/pkgs/tools/misc/i3nator/default.nix
index 99f0edeeafd7..4c62e4ca8050 100644
--- a/nixpkgs/pkgs/tools/misc/i3nator/default.nix
+++ b/nixpkgs/pkgs/tools/misc/i3nator/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/pitkley/i3nator";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ mpoquet ];
+    mainProgram = "i3nator";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/iay/default.nix b/nixpkgs/pkgs/tools/misc/iay/default.nix
index d48e48cc83b5..1ef3d332e75d 100644
--- a/nixpkgs/pkgs/tools/misc/iay/default.nix
+++ b/nixpkgs/pkgs/tools/misc/iay/default.nix
@@ -42,5 +42,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/aaqaishtyaq/iay";
     license = licenses.mit;
     maintainers = with maintainers; [ aaqaishtyaq omasanori ];
+    mainProgram = "iay";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ibus-theme-tools/default.nix b/nixpkgs/pkgs/tools/misc/ibus-theme-tools/default.nix
index ee8a8719d139..05c56edd3697 100644
--- a/nixpkgs/pkgs/tools/misc/ibus-theme-tools/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ibus-theme-tools/default.nix
@@ -25,5 +25,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ hollowman6 ];
     homepage = "https://github.com/openSUSE/IBus-Theme-Tools";
+    mainProgram = "ibus-theme-tools";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ical2orgpy/default.nix b/nixpkgs/pkgs/tools/misc/ical2orgpy/default.nix
index e9397e14430f..ac5607b4a819 100644
--- a/nixpkgs/pkgs/tools/misc/ical2orgpy/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ical2orgpy/default.nix
@@ -37,6 +37,7 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/ical2org-py/ical2org.py";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ StillerHarpo ];
+    mainProgram = "ical2orgpy";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/misc/ictree/default.nix b/nixpkgs/pkgs/tools/misc/ictree/default.nix
index 16093dbc4d55..c8ffdc090c20 100644
--- a/nixpkgs/pkgs/tools/misc/ictree/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ictree/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/NikitaIvanovV/ictree";
     platforms = platforms.unix;
     maintainers = with maintainers; [ foo-dogsquared ];
+    mainProgram = "ictree";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ideviceinstaller/default.nix b/nixpkgs/pkgs/tools/misc/ideviceinstaller/default.nix
index 84f1d440c586..63bb1e7cb0fc 100644
--- a/nixpkgs/pkgs/tools/misc/ideviceinstaller/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ideviceinstaller/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ aristid infinisil ];
+    mainProgram = "ideviceinstaller";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/idevicerestore/default.nix b/nixpkgs/pkgs/tools/misc/idevicerestore/default.nix
index 55b2918aa9ba..55fa9fcda8ba 100644
--- a/nixpkgs/pkgs/tools/misc/idevicerestore/default.nix
+++ b/nixpkgs/pkgs/tools/misc/idevicerestore/default.nix
@@ -61,5 +61,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl21Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ nh2 ];
+    mainProgram = "idevicerestore";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ikill/default.nix b/nixpkgs/pkgs/tools/misc/ikill/default.nix
index 8ca69f8b4410..b5c18e5dfd97 100644
--- a/nixpkgs/pkgs/tools/misc/ikill/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ikill/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     maintainers = with maintainers; [ zendo ];
     license = [ licenses.mit ];
     platforms = platforms.linux;
+    mainProgram = "ikill";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ili2c/default.nix b/nixpkgs/pkgs/tools/misc/ili2c/default.nix
index 8e748efe7b4e..f34c73d3b0f7 100644
--- a/nixpkgs/pkgs/tools/misc/ili2c/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ili2c/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl21Plus;
     maintainers = [ maintainers.das-g ];
     platforms = platforms.linux;
+    mainProgram = "ili2c";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/infracost/default.nix b/nixpkgs/pkgs/tools/misc/infracost/default.nix
index 7fc02624db6a..6b0f4edd5a77 100644
--- a/nixpkgs/pkgs/tools/misc/infracost/default.nix
+++ b/nixpkgs/pkgs/tools/misc/infracost/default.nix
@@ -63,5 +63,6 @@ buildGoModule rec {
     '';
     license = licenses.asl20;
     maintainers = with maintainers; [ davegallant jk kashw2 ];
+    mainProgram = "infracost";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ink/default.nix b/nixpkgs/pkgs/tools/misc/ink/default.nix
index 87173c953791..30df6e9691fa 100644
--- a/nixpkgs/pkgs/tools/misc/ink/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ink/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux ++ platforms.freebsd;
     maintainers = with maintainers; [ samb96 ];
+    mainProgram = "ink";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/inklingreader/default.nix b/nixpkgs/pkgs/tools/misc/inklingreader/default.nix
index 8710da482a65..efe1eeb34aeb 100644
--- a/nixpkgs/pkgs/tools/misc/inklingreader/default.nix
+++ b/nixpkgs/pkgs/tools/misc/inklingreader/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3;
     maintainers = with lib.maintainers; [ totoroot ];
     platforms = lib.platforms.linux;
+    mainProgram = "inklingreader";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/inspec/default.nix b/nixpkgs/pkgs/tools/misc/inspec/default.nix
index f9108c7af6bd..759b1fcaed87 100644
--- a/nixpkgs/pkgs/tools/misc/inspec/default.nix
+++ b/nixpkgs/pkgs/tools/misc/inspec/default.nix
@@ -15,5 +15,6 @@ bundlerApp {
     homepage = "https://inspec.io/";
     license = licenses.asl20;
     maintainers = with maintainers; [ dylanmtaylor ];
+    mainProgram = "inspec";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/instaloader/default.nix b/nixpkgs/pkgs/tools/misc/instaloader/default.nix
index 7f9a33927db9..634693f6144b 100644
--- a/nixpkgs/pkgs/tools/misc/instaloader/default.nix
+++ b/nixpkgs/pkgs/tools/misc/instaloader/default.nix
@@ -32,5 +32,6 @@ buildPythonPackage rec {
     description = "Download pictures (or videos) along with their captions and other metadata from Instagram";
     maintainers = with maintainers; [ creator54 ];
     license = licenses.mit;
+    mainProgram = "instaloader";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/invoice/default.nix b/nixpkgs/pkgs/tools/misc/invoice/default.nix
index cffdec4063e3..ea7ce5c2205a 100644
--- a/nixpkgs/pkgs/tools/misc/invoice/default.nix
+++ b/nixpkgs/pkgs/tools/misc/invoice/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     homepage = "https://github.com/maaslalani/invoice";
     license = licenses.mit;
     maintainers = with maintainers; [ dit7ya ];
+    mainProgram = "invoice";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/iotools/default.nix b/nixpkgs/pkgs/tools/misc/iotools/default.nix
index 12411aac6c6f..17330d9c19cb 100644
--- a/nixpkgs/pkgs/tools/misc/iotools/default.nix
+++ b/nixpkgs/pkgs/tools/misc/iotools/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ felixsinger ];
     platforms = [ "x86_64-linux" "i686-linux" ];
+    mainProgram = "iotools";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ipad_charge/default.nix b/nixpkgs/pkgs/tools/misc/ipad_charge/default.nix
index d92961be9c5a..fdbab82aabcd 100644
--- a/nixpkgs/pkgs/tools/misc/ipad_charge/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ipad_charge/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
+    mainProgram = "ipad_charge";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ipbt/default.nix b/nixpkgs/pkgs/tools/misc/ipbt/default.nix
index 25dad59c9fef..3b9b6d1496ee 100644
--- a/nixpkgs/pkgs/tools/misc/ipbt/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ipbt/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.tckmn ];
     platforms = platforms.unix;
+    mainProgram = "ipbt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ised/default.nix b/nixpkgs/pkgs/tools/misc/ised/default.nix
index 9032a2d24514..9f6b716b4293 100644
--- a/nixpkgs/pkgs/tools/misc/ised/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ised/default.nix
@@ -13,5 +13,6 @@ stdenv.mkDerivation rec {
     maintainers = with lib.maintainers; [ raskin ];
     platforms = with lib.platforms; linux;
     license = lib.licenses.gpl3Plus;
+    mainProgram = "ised";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/isoimagewriter/default.nix b/nixpkgs/pkgs/tools/misc/isoimagewriter/default.nix
index e7ce4fd79ace..28c0ddd5f889 100644
--- a/nixpkgs/pkgs/tools/misc/isoimagewriter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/isoimagewriter/default.nix
@@ -26,5 +26,6 @@ mkDerivation rec {
     platforms = lib.platforms.linux;
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ k900 ];
+    mainProgram = "isoimagewriter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ix/default.nix b/nixpkgs/pkgs/tools/misc/ix/default.nix
index e3fc85406e8e..52781f8a08bb 100644
--- a/nixpkgs/pkgs/tools/misc/ix/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ix/default.nix
@@ -32,5 +32,6 @@ resholve.mkDerivation {
     description = "Command line pastebin";
     maintainers = with maintainers; [ peterhoeg ];
     platforms = platforms.all;
+    mainProgram = "ix";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/jdiskreport/default.nix b/nixpkgs/pkgs/tools/misc/jdiskreport/default.nix
index 57441e645df2..6490d68ce0b7 100644
--- a/nixpkgs/pkgs/tools/misc/jdiskreport/default.nix
+++ b/nixpkgs/pkgs/tools/misc/jdiskreport/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     license = licenses.unfreeRedistributable; #TODO freedist, libs under BSD-3
     platforms = [ "x86_64-linux" "x86_64-darwin" ];
     maintainers = with maintainers; [ kylesferrazza ];
+    mainProgram = "jdiskreport";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/jdupes/default.nix b/nixpkgs/pkgs/tools/misc/jdupes/default.nix
index 72970d2dc9b4..cb81ef9a9983 100644
--- a/nixpkgs/pkgs/tools/misc/jdupes/default.nix
+++ b/nixpkgs/pkgs/tools/misc/jdupes/default.nix
@@ -62,5 +62,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/jbruchon/jdupes";
     license = licenses.mit;
     maintainers = with maintainers; [ romildo ];
+    mainProgram = "jdupes";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/journaldriver/default.nix b/nixpkgs/pkgs/tools/misc/journaldriver/default.nix
index bf835e8bcff6..a5174c4b309e 100644
--- a/nixpkgs/pkgs/tools/misc/journaldriver/default.nix
+++ b/nixpkgs/pkgs/tools/misc/journaldriver/default.nix
@@ -23,5 +23,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3;
     maintainers = [ maintainers.tazjin ];
     platforms = platforms.linux;
+    mainProgram = "journaldriver";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/jsonwatch/default.nix b/nixpkgs/pkgs/tools/misc/jsonwatch/default.nix
index 11e2e2d0e8d1..2f0e3b89149c 100644
--- a/nixpkgs/pkgs/tools/misc/jsonwatch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/jsonwatch/default.nix
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     maintainers = with maintainers; [ fab ];
     # never built on aarch64-darwin since first introduction in nixpkgs
     broken = stdenv.isDarwin && stdenv.isAarch64;
+    mainProgram = "jsonwatch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/jstest-gtk/default.nix b/nixpkgs/pkgs/tools/misc/jstest-gtk/default.nix
index 6824753c73ce..1b201396b7ad 100644
--- a/nixpkgs/pkgs/tools/misc/jstest-gtk/default.nix
+++ b/nixpkgs/pkgs/tools/misc/jstest-gtk/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ wucke13 ];
     platforms = platforms.linux;
+    mainProgram = "jstest-gtk";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/jugglinglab/default.nix b/nixpkgs/pkgs/tools/misc/jugglinglab/default.nix
index ccacd89a85b0..9d552072f7df 100644
--- a/nixpkgs/pkgs/tools/misc/jugglinglab/default.nix
+++ b/nixpkgs/pkgs/tools/misc/jugglinglab/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
       license = licenses.gpl2;
       maintainers = with maintainers; [ wnklmnn ];
       platforms = platforms.all;
+      mainProgram = "jugglinglab";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/kak-lsp/default.nix b/nixpkgs/pkgs/tools/misc/kak-lsp/default.nix
index baa2bb81791b..f99789dfc1c1 100644
--- a/nixpkgs/pkgs/tools/misc/kak-lsp/default.nix
+++ b/nixpkgs/pkgs/tools/misc/kak-lsp/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/kak-lsp/kak-lsp";
     license = with licenses; [ unlicense /* or */ mit ];
     maintainers = [ maintainers.spacekookie ];
+    mainProgram = "kak-lsp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/kalker/default.nix b/nixpkgs/pkgs/tools/misc/kalker/default.nix
index b076ab351d73..2df69dd8f252 100644
--- a/nixpkgs/pkgs/tools/misc/kalker/default.nix
+++ b/nixpkgs/pkgs/tools/misc/kalker/default.nix
@@ -44,5 +44,6 @@ rustPlatform.buildRustPackage rec {
     '';
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda lovesegfault ];
+    mainProgram = "kalker";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/kargo/default.nix b/nixpkgs/pkgs/tools/misc/kargo/default.nix
index 91fcbf43ed88..2097d47aa1ba 100644
--- a/nixpkgs/pkgs/tools/misc/kargo/default.nix
+++ b/nixpkgs/pkgs/tools/misc/kargo/default.nix
@@ -34,5 +34,6 @@ buildPythonApplication rec {
     platforms = platforms.all;
     license = licenses.gpl3;
     maintainers = with maintainers; [ ];
+    mainProgram = "kargo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/kb/default.nix b/nixpkgs/pkgs/tools/misc/kb/default.nix
index 76db4d7deca4..85a72adebcdd 100644
--- a/nixpkgs/pkgs/tools/misc/kb/default.nix
+++ b/nixpkgs/pkgs/tools/misc/kb/default.nix
@@ -54,5 +54,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/gnebbia/kb/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ wesleyjrz ];
+    mainProgram = "kb";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/kcollectd/default.nix b/nixpkgs/pkgs/tools/misc/kcollectd/default.nix
index e38cb6f5a791..a5c1039274a4 100644
--- a/nixpkgs/pkgs/tools/misc/kcollectd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/kcollectd/default.nix
@@ -52,5 +52,6 @@ mkDerivation rec {
     maintainers = [ maintainers.symphorien ];
     license = [ lib.licenses.gpl3Plus ];
     platforms = lib.platforms.linux;
+    mainProgram = "kcollectd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/keychain/default.nix b/nixpkgs/pkgs/tools/misc/keychain/default.nix
index dacffc30a2d4..edb0bc34e776 100644
--- a/nixpkgs/pkgs/tools/misc/keychain/default.nix
+++ b/nixpkgs/pkgs/tools/misc/keychain/default.nix
@@ -54,5 +54,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.unix;
     maintainers = with maintainers; [ sigma ];
+    mainProgram = "keychain";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/keymapviz/default.nix b/nixpkgs/pkgs/tools/misc/keymapviz/default.nix
index b02bb0a00fef..6ed68a43b31f 100644
--- a/nixpkgs/pkgs/tools/misc/keymapviz/default.nix
+++ b/nixpkgs/pkgs/tools/misc/keymapviz/default.nix
@@ -18,5 +18,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/yskoht/keymapviz";
     license = licenses.mit;
     maintainers = with maintainers; [ lom ];
+    mainProgram = "keymapviz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/kicli/default.nix b/nixpkgs/pkgs/tools/misc/kicli/default.nix
index 76516f4e4ac3..61eb8fe28ae6 100644
--- a/nixpkgs/pkgs/tools/misc/kicli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/kicli/default.nix
@@ -24,5 +24,6 @@ buildGoModule rec {
     license = licenses.mit;
     maintainers = with maintainers; [ poelzi ];
     platforms = platforms.all;
+    mainProgram = "kicli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/killport/default.nix b/nixpkgs/pkgs/tools/misc/killport/default.nix
index 714beb78dccd..fa906506fff1 100644
--- a/nixpkgs/pkgs/tools/misc/killport/default.nix
+++ b/nixpkgs/pkgs/tools/misc/killport/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/jkfran/killport";
     license = licenses.mit;
     maintainers = with maintainers; [ sno2wman ];
+    mainProgram = "killport";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/kitty-img/default.nix b/nixpkgs/pkgs/tools/misc/kitty-img/default.nix
index 75a2b81d7d75..c47c4e6fc80d 100644
--- a/nixpkgs/pkgs/tools/misc/kitty-img/default.nix
+++ b/nixpkgs/pkgs/tools/misc/kitty-img/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://git.sr.ht/~zethra/kitty-img/refs/${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ gaykitty ];
+    mainProgram = "kitty-img";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/krapslog/default.nix b/nixpkgs/pkgs/tools/misc/krapslog/default.nix
index 6ac7233d9d1f..909d047f834a 100644
--- a/nixpkgs/pkgs/tools/misc/krapslog/default.nix
+++ b/nixpkgs/pkgs/tools/misc/krapslog/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/acj/krapslog-rs";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ yanganto ];
+    mainProgram = "krapslog";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/kronometer/default.nix b/nixpkgs/pkgs/tools/misc/kronometer/default.nix
index 828f0d80c11c..06fafedf42ef 100644
--- a/nixpkgs/pkgs/tools/misc/kronometer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/kronometer/default.nix
@@ -18,6 +18,7 @@ mkDerivation rec {
     description = "A stopwatch application";
     license = licenses.gpl2;
     maintainers = with maintainers; [ peterhoeg ];
+    mainProgram = "kronometer";
   };
   nativeBuildInputs = [ extra-cmake-modules kdoctools ];
   propagatedBuildInputs = [ kconfig kcrash kinit ];
diff --git a/nixpkgs/pkgs/tools/misc/ksnip/default.nix b/nixpkgs/pkgs/tools/misc/ksnip/default.nix
index bae675b49599..60ba06a29930 100644
--- a/nixpkgs/pkgs/tools/misc/ksnip/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ksnip/default.nix
@@ -73,5 +73,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ x3ro ];
     platforms = platforms.linux;
+    mainProgram = "ksnip";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/kt/default.nix b/nixpkgs/pkgs/tools/misc/kt/default.nix
index af837ee3cebb..2e0bfbc1b102 100644
--- a/nixpkgs/pkgs/tools/misc/kt/default.nix
+++ b/nixpkgs/pkgs/tools/misc/kt/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     maintainers = with maintainers; [ utdemir ];
     platforms = with platforms; unix;
     license = licenses.mit;
+    mainProgram = "kt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lavat/default.nix b/nixpkgs/pkgs/tools/misc/lavat/default.nix
index f63bfdffa335..f582157777b7 100644
--- a/nixpkgs/pkgs/tools/misc/lavat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lavat/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation {
     license = licenses.mit;
     homepage = "https://github.com/AngelJumbo/lavat";
     platforms = platforms.all;
+    mainProgram = "lavat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lazycli/default.nix b/nixpkgs/pkgs/tools/misc/lazycli/default.nix
index d3ef8192b38b..70b5f345690e 100644
--- a/nixpkgs/pkgs/tools/misc/lazycli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lazycli/default.nix
@@ -23,5 +23,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/jesseduffield/lazycli";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "lazycli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lazydocker/default.nix b/nixpkgs/pkgs/tools/misc/lazydocker/default.nix
index 353402658db9..59a6ad16ce9d 100644
--- a/nixpkgs/pkgs/tools/misc/lazydocker/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lazydocker/default.nix
@@ -30,5 +30,6 @@ buildGoModule rec {
     homepage = "https://github.com/jesseduffield/lazydocker";
     license = licenses.mit;
     maintainers = with maintainers; [ das-g Br1ght0ne ];
+    mainProgram = "lazydocker";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ldapvi/default.nix b/nixpkgs/pkgs/tools/misc/ldapvi/default.nix
index 2b9ba694d3f6..4be3b9e9024c 100644
--- a/nixpkgs/pkgs/tools/misc/ldapvi/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ldapvi/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation {
     license = licenses.gpl2;
     maintainers = with maintainers; [ ];
     platforms = lib.platforms.linux;
+    mainProgram = "ldapvi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ldmtool/default.nix b/nixpkgs/pkgs/tools/misc/ldmtool/default.nix
index 51e3a77d8d68..6a1527ea8fe2 100644
--- a/nixpkgs/pkgs/tools/misc/ldmtool/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ldmtool/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ jensbin ];
     license = licenses.gpl3;
     platforms = platforms.linux;
+    mainProgram = "ldmtool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/leanify/default.nix b/nixpkgs/pkgs/tools/misc/leanify/default.nix
index bcb936694fd7..8a6cfbe33827 100644
--- a/nixpkgs/pkgs/tools/misc/leanify/default.nix
+++ b/nixpkgs/pkgs/tools/misc/leanify/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.mynacol ];
     platforms = platforms.all;
+    mainProgram = "leanify";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ledit/default.nix b/nixpkgs/pkgs/tools/misc/ledit/default.nix
index 01810ceaf2f4..e6470ea3fb8c 100644
--- a/nixpkgs/pkgs/tools/misc/ledit/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ledit/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation {
     description = "A line editor, allowing to use shell commands with control characters like in emacs";
     license = licenses.bsd3;
     maintainers = [ maintainers.delta ];
+    mainProgram = "ledit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lemmeknow/default.nix b/nixpkgs/pkgs/tools/misc/lemmeknow/default.nix
index f18b741d1149..aa5c3786831a 100644
--- a/nixpkgs/pkgs/tools/misc/lemmeknow/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lemmeknow/default.nix
@@ -17,5 +17,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/swanandx/lemmeknow/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda Br1ght0ne ];
+    mainProgram = "lemmeknow";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lemmy-help/default.nix b/nixpkgs/pkgs/tools/misc/lemmy-help/default.nix
index 7cb5e2ddfd23..8c0f7110226e 100644
--- a/nixpkgs/pkgs/tools/misc/lemmy-help/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lemmy-help/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/numToStr/lemmy-help/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "lemmy-help";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lerpn/default.nix b/nixpkgs/pkgs/tools/misc/lerpn/default.nix
index 24ada72baa55..8e35a5b0b107 100644
--- a/nixpkgs/pkgs/tools/misc/lerpn/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lerpn/default.nix
@@ -29,5 +29,6 @@ python3.pkgs.buildPythonApplication {
     description = "Curses RPN calculator written in straight Python";
     maintainers = with maintainers; [ ckie ];
     license = licenses.gpl3Plus;
+    mainProgram = "lerpn";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/libgen-cli/default.nix b/nixpkgs/pkgs/tools/misc/libgen-cli/default.nix
index eb01d4334475..5ef65e137036 100644
--- a/nixpkgs/pkgs/tools/misc/libgen-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/libgen-cli/default.nix
@@ -39,5 +39,6 @@ buildGoModule rec {
     '';
     license = licenses.asl20;
     maintainers = with maintainers; [ zaninime ];
+    mainProgram = "libgen-cli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/librespeed-cli/default.nix b/nixpkgs/pkgs/tools/misc/librespeed-cli/default.nix
index 175deef985e3..8751d9ab43d4 100644
--- a/nixpkgs/pkgs/tools/misc/librespeed-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/librespeed-cli/default.nix
@@ -24,5 +24,6 @@ buildGoModule rec {
     homepage = "https://github.com/librespeed/speedtest-cli";
     license = with licenses; [ lgpl3Only ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "speedtest-cli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lice/default.nix b/nixpkgs/pkgs/tools/misc/lice/default.nix
index 59b2cef38ad0..f873907c51ef 100644
--- a/nixpkgs/pkgs/tools/misc/lice/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lice/default.nix
@@ -18,6 +18,7 @@ buildPythonPackage rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ swflint ];
     platforms = platforms.unix;
+    mainProgram = "lice";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/misc/license-generator/default.nix b/nixpkgs/pkgs/tools/misc/license-generator/default.nix
index 5662b356f34e..2aa2235e7c3c 100644
--- a/nixpkgs/pkgs/tools/misc/license-generator/default.nix
+++ b/nixpkgs/pkgs/tools/misc/license-generator/default.nix
@@ -16,5 +16,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/azu/license-generator";
     license = licenses.mit;
     maintainers = with maintainers; [ loicreynier ];
+    mainProgram = "license-generator";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lighthouse-steamvr/default.nix b/nixpkgs/pkgs/tools/misc/lighthouse-steamvr/default.nix
index 5328c14cdbfe..4ddd33ff1872 100644
--- a/nixpkgs/pkgs/tools/misc/lighthouse-steamvr/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lighthouse-steamvr/default.nix
@@ -32,5 +32,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/ShayBox/Lighthouse";
     license = licenses.mit;
     maintainers = with maintainers; [ expipiplus1 bddvlpr ];
+    mainProgram = "lighthouse";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/limitcpu/default.nix b/nixpkgs/pkgs/tools/misc/limitcpu/default.nix
index e9649b4be659..830eed9d94ae 100644
--- a/nixpkgs/pkgs/tools/misc/limitcpu/default.nix
+++ b/nixpkgs/pkgs/tools/misc/limitcpu/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     platforms = with platforms; linux ++ freebsd;
     license = licenses.gpl2;
     maintainers = [maintainers.rycee];
+    mainProgram = "cpulimit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lineselect/default.nix b/nixpkgs/pkgs/tools/misc/lineselect/default.nix
index ff3aeedcf93d..a99908b2e70e 100644
--- a/nixpkgs/pkgs/tools/misc/lineselect/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lineselect/default.nix
@@ -33,5 +33,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/chfritz/lineselect";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "lineselect";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lipl/default.nix b/nixpkgs/pkgs/tools/misc/lipl/default.nix
index 2ce54451bb8d..1f6b8437af30 100644
--- a/nixpkgs/pkgs/tools/misc/lipl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lipl/default.nix
@@ -26,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/yxdunc/lipl";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "lipl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/livedl/default.nix b/nixpkgs/pkgs/tools/misc/livedl/default.nix
index f5c68be68d60..6db500695933 100644
--- a/nixpkgs/pkgs/tools/misc/livedl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/livedl/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     maintainers = with maintainers; [ wakira ];
     platforms = platforms.linux ++ platforms.darwin;
     broken = stdenv.isDarwin; # build fails with go > 1.17
+    mainProgram = "livedl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lnav/default.nix b/nixpkgs/pkgs/tools/misc/lnav/default.nix
index 5f116711aa80..ffaea930b5d3 100644
--- a/nixpkgs/pkgs/tools/misc/lnav/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lnav/default.nix
@@ -69,6 +69,7 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ dochang ];
     platforms = platforms.unix;
+    mainProgram = "lnav";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/misc/lnch/default.nix b/nixpkgs/pkgs/tools/misc/lnch/default.nix
index 70d52d2ea8bd..30759303efbd 100644
--- a/nixpkgs/pkgs/tools/misc/lnch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lnch/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     homepage = "https://github.com/oem/lnch";
     description = "Launches a process and moves it out of the process group";
     license = licenses.mit;
+    mainProgram = "lnch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/loadlibrary/default.nix b/nixpkgs/pkgs/tools/misc/loadlibrary/default.nix
index a299a85b6b82..f919facf21b4 100644
--- a/nixpkgs/pkgs/tools/misc/loadlibrary/default.nix
+++ b/nixpkgs/pkgs/tools/misc/loadlibrary/default.nix
@@ -27,5 +27,6 @@ stdenv_32bit.mkDerivation rec {
     platforms = platforms.linux;
     maintainers = [ maintainers.eleanor ];
     license = licenses.gpl2;
+    mainProgram = "mpclient";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/locate-dominating-file/default.nix b/nixpkgs/pkgs/tools/misc/locate-dominating-file/default.nix
index 7e0d0664b563..6d599440a8e3 100644
--- a/nixpkgs/pkgs/tools/misc/locate-dominating-file/default.nix
+++ b/nixpkgs/pkgs/tools/misc/locate-dominating-file/default.nix
@@ -63,5 +63,6 @@ resholve.mkDerivation {
     license = licenses.mit;
     maintainers = [ maintainers.roman ];
     platforms = platforms.all;
+    mainProgram = "locate-dominating-file";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/logtop/default.nix b/nixpkgs/pkgs/tools/misc/logtop/default.nix
index 0aa99fd18aa7..ff0b3cdac000 100644
--- a/nixpkgs/pkgs/tools/misc/logtop/default.nix
+++ b/nixpkgs/pkgs/tools/misc/logtop/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/JulienPalard/logtop";
     platforms = platforms.unix;
     maintainers = [ maintainers.starcraft66 ];
+    mainProgram = "logtop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lolcat/default.nix b/nixpkgs/pkgs/tools/misc/lolcat/default.nix
index f62be23108eb..a10c81416053 100644
--- a/nixpkgs/pkgs/tools/misc/lolcat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lolcat/default.nix
@@ -12,5 +12,6 @@ bundlerApp {
     homepage    = "https://github.com/busyloop/lolcat";
     license     = licenses.bsd3;
     maintainers = with maintainers; [ StillerHarpo manveru nicknovitski ];
+    mainProgram = "lolcat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lorri/default.nix b/nixpkgs/pkgs/tools/misc/lorri/default.nix
index aabc9d0e773f..a2cd0ef600d1 100644
--- a/nixpkgs/pkgs/tools/misc/lorri/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lorri/default.nix
@@ -68,5 +68,6 @@ in (rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/target/lorri";
     license = licenses.asl20;
     maintainers = with maintainers; [ grahamc Profpatsch ];
+    mainProgram = "lorri";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/lottieconverter/default.nix b/nixpkgs/pkgs/tools/misc/lottieconverter/default.nix
index e7ee6e9b74f2..557ac293aaa2 100644
--- a/nixpkgs/pkgs/tools/misc/lottieconverter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lottieconverter/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.bsd3;
     platforms = platforms.all;
     maintainers = with maintainers; [ CRTified nickcao ];
+    mainProgram = "lottieconverter";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/lrzsz/default.nix b/nixpkgs/pkgs/tools/misc/lrzsz/default.nix
index e097ab12f082..867e492b33e2 100644
--- a/nixpkgs/pkgs/tools/misc/lrzsz/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lrzsz/default.nix
@@ -25,6 +25,8 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--program-transform-name=s/^l//" ];
 
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=implicit-function-declaration -Wno-error=implicit-int";
+
   meta = with lib; {
     homepage = "https://ohse.de/uwe/software/lrzsz.html";
     description = "Communication package providing the XMODEM, YMODEM ZMODEM file transfer protocols";
diff --git a/nixpkgs/pkgs/tools/misc/lsd/default.nix b/nixpkgs/pkgs/tools/misc/lsd/default.nix
index 83d7580a7eed..99dee32424fa 100644
--- a/nixpkgs/pkgs/tools/misc/lsd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lsd/default.nix
@@ -48,5 +48,6 @@ rustPlatform.buildRustPackage rec {
     description = "The next gen ls command";
     license = licenses.asl20;
     maintainers = with maintainers; [ marsam zowoq SuperSandro2000 ];
+    mainProgram = "lsd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ltunify/default.nix b/nixpkgs/pkgs/tools/misc/ltunify/default.nix
index df425162d847..b85e3da4a5c0 100644
--- a/nixpkgs/pkgs/tools/misc/ltunify/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ltunify/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ abbradar ];
     platforms = platforms.linux;
+    mainProgram = "ltunify";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/lwc/default.nix b/nixpkgs/pkgs/tools/misc/lwc/default.nix
index f4c2e57eef48..77e6d5033f31 100644
--- a/nixpkgs/pkgs/tools/misc/lwc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/lwc/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     homepage = "https://github.com/timdp/lwc";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "lwc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/macchina/default.nix b/nixpkgs/pkgs/tools/misc/macchina/default.nix
index 0bde6b5baf54..3da4d9b07fbb 100644
--- a/nixpkgs/pkgs/tools/misc/macchina/default.nix
+++ b/nixpkgs/pkgs/tools/misc/macchina/default.nix
@@ -38,5 +38,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/Macchina-CLI/macchina/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ _414owen figsoda ];
+    mainProgram = "macchina";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mailman-rss/default.nix b/nixpkgs/pkgs/tools/misc/mailman-rss/default.nix
index 93a3d1e16ac2..d71ee8795528 100644
--- a/nixpkgs/pkgs/tools/misc/mailman-rss/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mailman-rss/default.nix
@@ -21,5 +21,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/kyamagu/mailman-rss";
     license = licenses.mit;
     maintainers = with maintainers; [ samueldr ];
+    mainProgram = "mailman-rss";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/makebootfat/default.nix b/nixpkgs/pkgs/tools/misc/makebootfat/default.nix
index d55b5727d00c..b2e93bb140ad 100644
--- a/nixpkgs/pkgs/tools/misc/makebootfat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/makebootfat/default.nix
@@ -15,5 +15,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.ehmry ];
     platforms = platforms.linux;
+    mainProgram = "makebootfat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mandown/default.nix b/nixpkgs/pkgs/tools/misc/mandown/default.nix
index 4851c764d0eb..308605e1172f 100644
--- a/nixpkgs/pkgs/tools/misc/mandown/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mandown/default.nix
@@ -16,5 +16,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://gitlab.com/kornelski/mandown";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ ];
+    mainProgram = "mandown";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/manga-cli/default.nix b/nixpkgs/pkgs/tools/misc/manga-cli/default.nix
index 3f57b529e51a..65d45cf60e3c 100644
--- a/nixpkgs/pkgs/tools/misc/manga-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/manga-cli/default.nix
@@ -35,5 +35,6 @@ stdenvNoCC.mkDerivation {
     description = "Bash script for reading mangas via the terminal by scraping manganato";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ baitinq ];
+    mainProgram = "manga-cli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mapcidr/default.nix b/nixpkgs/pkgs/tools/misc/mapcidr/default.nix
index 2cb179fac94d..6bb2f43677b6 100644
--- a/nixpkgs/pkgs/tools/misc/mapcidr/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mapcidr/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "mapcidr";
-  version = "1.1.14";
+  version = "1.1.16";
 
   src = fetchFromGitHub {
     owner = "projectdiscovery";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Vhh/OS61dfArsowXMogr/bu/gg354nte9PuobD9lCaU=";
+    hash = "sha256-O0HVlrLOz4+hxhf/BTSZs0qDCbYokbzmg5KbzUD1UHg=";
   };
 
-  vendorHash = "sha256-wqbAOoRQEE7CDmaH5MRzsSKOdyrxwBY/1wDz3MCfsBc=";
+  vendorHash = "sha256-j/3Z2KxbybJoE6/PXkwMLivzmTnZSi7tgO8IQKCoaEQ=";
 
   modRoot = ".";
   subPackages = [
@@ -31,5 +31,6 @@ buildGoModule rec {
     changelog = "https://github.com/projectdiscovery/mapcidr/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ hanemile ];
+    mainProgram = "mapcidr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/markdown-anki-decks/default.nix b/nixpkgs/pkgs/tools/misc/markdown-anki-decks/default.nix
index 17e3bf860fca..082bdf5a5f98 100644
--- a/nixpkgs/pkgs/tools/misc/markdown-anki-decks/default.nix
+++ b/nixpkgs/pkgs/tools/misc/markdown-anki-decks/default.nix
@@ -43,5 +43,6 @@ python3.pkgs.buildPythonApplication rec {
     license = licenses.mit;
     maintainers = with maintainers; [ ];
     platforms = platforms.unix;
+    mainProgram = "mdankideck";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/marlin-calc/default.nix b/nixpkgs/pkgs/tools/misc/marlin-calc/default.nix
index 38a4f4ffb358..dc8ff4221009 100644
--- a/nixpkgs/pkgs/tools/misc/marlin-calc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/marlin-calc/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation {
     maintainers = with maintainers; [ gebner ];
     platforms = platforms.unix;
     broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/marlin-calc.x86_64-darwin
+    mainProgram = "marlin-calc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/massren/default.nix b/nixpkgs/pkgs/tools/misc/massren/default.nix
index 885ab1b0176a..4ca386c1374a 100644
--- a/nixpkgs/pkgs/tools/misc/massren/default.nix
+++ b/nixpkgs/pkgs/tools/misc/massren/default.nix
@@ -40,5 +40,6 @@ buildGoModule rec {
     license = licenses.mit;
     homepage = "https://github.com/laurent22/massren";
     maintainers = with maintainers; [ andrew-d ];
+    mainProgram = "massren";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mastotool/default.nix b/nixpkgs/pkgs/tools/misc/mastotool/default.nix
index 3fb0c0034c35..a75f97c4a6ec 100644
--- a/nixpkgs/pkgs/tools/misc/mastotool/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mastotool/default.nix
@@ -24,5 +24,6 @@ buildGoModule rec {
     changelog = "https://github.com/muesli/mastotool/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "mastotool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mathpix-snipping-tool/default.nix b/nixpkgs/pkgs/tools/misc/mathpix-snipping-tool/default.nix
index f6015f3928d6..c5b5745ceb33 100644
--- a/nixpkgs/pkgs/tools/misc/mathpix-snipping-tool/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mathpix-snipping-tool/default.nix
@@ -27,5 +27,6 @@ in appimageTools.wrapType2 {
     license = licenses.unfree;
     maintainers = [ maintainers.hiro98 ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "mathpix-snipping-tool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mbuffer/default.nix b/nixpkgs/pkgs/tools/misc/mbuffer/default.nix
index 3e23d042f916..ec4157fb37ca 100644
--- a/nixpkgs/pkgs/tools/misc/mbuffer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mbuffer/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ tokudan ];
     platforms = platforms.linux; # Maybe other non-darwin Unix
+    mainProgram = "mbuffer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mcfly/default.nix b/nixpkgs/pkgs/tools/misc/mcfly/default.nix
index 179dbe1dec3c..127dd142a9f1 100644
--- a/nixpkgs/pkgs/tools/misc/mcfly/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mcfly/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/cantino/mcfly/raw/v${version}/CHANGELOG.txt";
     license = licenses.mit;
     maintainers = [ maintainers.melkor333 ];
+    mainProgram = "mcfly";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mcrypt/default.nix b/nixpkgs/pkgs/tools/misc/mcrypt/default.nix
index ef5b8e56fa0a..c5013eb46a04 100644
--- a/nixpkgs/pkgs/tools/misc/mcrypt/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mcrypt/default.nix
@@ -19,6 +19,10 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ libmcrypt libmhash ];
 
+  env = lib.optionalAttrs stdenv.cc.isClang {
+    NIX_CFLAGS_COMPILE = "-Wno-implicit-function-declaration";
+  };
+
   meta = {
     description = "Replacement for old UNIX crypt(1)";
     longDescription = ''
diff --git a/nixpkgs/pkgs/tools/misc/mdbtools/default.nix b/nixpkgs/pkgs/tools/misc/mdbtools/default.nix
index 95d8f9e3bb7b..327b58d8d78b 100644
--- a/nixpkgs/pkgs/tools/misc/mdbtools/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mdbtools/default.nix
@@ -16,6 +16,8 @@ stdenv.mkDerivation rec {
 
   configureFlags = [ "--disable-scrollkeeper" ];
 
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=unused-but-set-variable";
+
   nativeBuildInputs = [
     pkg-config bison flex autoreconfHook txt2man which
   ];
diff --git a/nixpkgs/pkgs/tools/misc/mdr/default.nix b/nixpkgs/pkgs/tools/misc/mdr/default.nix
index 13af7192cf50..b33c51c99ca0 100644
--- a/nixpkgs/pkgs/tools/misc/mdr/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mdr/default.nix
@@ -26,5 +26,6 @@ buildGoModule rec {
     homepage = "https://github.com/MichaelMure/mdr";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "mdr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mdslides/default.nix b/nixpkgs/pkgs/tools/misc/mdslides/default.nix
index d9265cd7863b..f329d02237a0 100644
--- a/nixpkgs/pkgs/tools/misc/mdslides/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mdslides/default.nix
@@ -18,5 +18,6 @@ python3Packages.buildPythonApplication rec {
     homepage    = "https://github.com/dadoomer/markdown-slides";
     license     = licenses.mit;
     maintainers = [ maintainers.qjoly ];
+    mainProgram = "mdslides";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/me_cleaner/default.nix b/nixpkgs/pkgs/tools/misc/me_cleaner/default.nix
index 4872c349b20d..ec742b11c98e 100644
--- a/nixpkgs/pkgs/tools/misc/me_cleaner/default.nix
+++ b/nixpkgs/pkgs/tools/misc/me_cleaner/default.nix
@@ -20,5 +20,6 @@ python3.pkgs.buildPythonPackage rec {
     '';
     license = licenses.gpl3;
     maintainers = with maintainers; [ ];
+    mainProgram = "me_cleaner.py";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/megacli/default.nix b/nixpkgs/pkgs/tools/misc/megacli/default.nix
index e2eef587f27c..b198b030f3ea 100644
--- a/nixpkgs/pkgs/tools/misc/megacli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/megacli/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation rec {
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     license = lib.licenses.unfree;
     platforms = [ "x86_64-linux" ];
+    mainProgram = "MegaCli64";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/melody/default.nix b/nixpkgs/pkgs/tools/misc/melody/default.nix
index 7f3f7f29f214..b4284a63eec1 100644
--- a/nixpkgs/pkgs/tools/misc/melody/default.nix
+++ b/nixpkgs/pkgs/tools/misc/melody/default.nix
@@ -17,5 +17,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/yoav-lavi/melody";
     license = licenses.mit;
     maintainers = with maintainers; [ joelkoen ];
+    mainProgram = "melody";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mermaid-filter/default.nix b/nixpkgs/pkgs/tools/misc/mermaid-filter/default.nix
index fd9d537dec4e..60d013deb5d6 100644
--- a/nixpkgs/pkgs/tools/misc/mermaid-filter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mermaid-filter/default.nix
@@ -35,5 +35,6 @@ buildNpmPackage rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ ners ];
     platforms = chromium.meta.platforms;
+    mainProgram = "mermaid-filter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mimeo/default.nix b/nixpkgs/pkgs/tools/misc/mimeo/default.nix
index 6c221ac75798..49a86807017f 100644
--- a/nixpkgs/pkgs/tools/misc/mimeo/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mimeo/default.nix
@@ -35,5 +35,6 @@ in python3Packages.buildPythonApplication {
     license = [ licenses.gpl2Only ];
     maintainers = [ maintainers.rycee ];
     platforms = platforms.unix;
+    mainProgram = "mimeo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/minipro/default.nix b/nixpkgs/pkgs/tools/misc/minipro/default.nix
index 305f2a885790..870c4706f882 100644
--- a/nixpkgs/pkgs/tools/misc/minipro/default.nix
+++ b/nixpkgs/pkgs/tools/misc/minipro/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     description = "An open source program for controlling the MiniPRO TL866xx series of chip programmers";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.bmwalters ];
+    mainProgram = "minipro";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/miniserve/default.nix b/nixpkgs/pkgs/tools/misc/miniserve/default.nix
index 141d32ec80ab..6d0d918b0199 100644
--- a/nixpkgs/pkgs/tools/misc/miniserve/default.nix
+++ b/nixpkgs/pkgs/tools/misc/miniserve/default.nix
@@ -56,5 +56,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/svenstaro/miniserve/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "miniserve";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ministat/default.nix b/nixpkgs/pkgs/tools/misc/ministat/default.nix
index 0cd3ff3a5c1f..d0f88e5d1b1c 100644
--- a/nixpkgs/pkgs/tools/misc/ministat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ministat/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.beerware;
     maintainers = [ maintainers.dezgeg ];
     platforms = platforms.all;
+    mainProgram = "ministat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mktorrent/default.nix b/nixpkgs/pkgs/tools/misc/mktorrent/default.nix
index 36aee2034c87..74f449969a66 100644
--- a/nixpkgs/pkgs/tools/misc/mktorrent/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mktorrent/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ Profpatsch winter ];
     platforms = platforms.all;
+    mainProgram = "mktorrent";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mloader/default.nix b/nixpkgs/pkgs/tools/misc/mloader/default.nix
index 9021724f8e0a..9790b169651d 100644
--- a/nixpkgs/pkgs/tools/misc/mloader/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mloader/default.nix
@@ -31,5 +31,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/hurlenko/mloader";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ marsam ];
+    mainProgram = "mloader";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mmake/default.nix b/nixpkgs/pkgs/tools/misc/mmake/default.nix
index acf571f7c5ac..32f089f1a771 100644
--- a/nixpkgs/pkgs/tools/misc/mmake/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mmake/default.nix
@@ -29,5 +29,6 @@ buildGoModule rec {
     '';
     license = licenses.mit;
     maintainers = [ maintainers.gabesoft ];
+    mainProgram = "mmake";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mmctl/0001-module-replace-public.patch b/nixpkgs/pkgs/tools/misc/mmctl/0001-module-replace-public.patch
new file mode 100644
index 000000000000..2ac563dbbf4b
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/mmctl/0001-module-replace-public.patch
@@ -0,0 +1,8 @@
+--- a/go.mod
++++ b/go.mod
+@@ -218,3 +218,5 @@ exclude (
+ 	github.com/dyatlov/go-opengraph v0.0.0-20210112100619-dae8665a5b09
+ 	github.com/willf/bitset v1.2.0
+ )
++
++replace github.com/mattermost/mattermost/server/public => ./public
diff --git a/nixpkgs/pkgs/tools/misc/mmctl/default.nix b/nixpkgs/pkgs/tools/misc/mmctl/default.nix
index 7084ef0acb11..197d145fc6c7 100644
--- a/nixpkgs/pkgs/tools/misc/mmctl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mmctl/default.nix
@@ -5,29 +5,39 @@
 
 buildGoModule rec {
   pname = "mmctl";
-  version = "7.10.5";
+  version = "9.2.2";
 
   src = fetchFromGitHub {
     owner = "mattermost";
-    repo = "mmctl";
+    repo = "mattermost";
     rev = "v${version}";
-    sha256 = "sha256-FQdxFvYJ+YrOc1p3/Ju3ZOGFH32WeZjHXtsIYG+O0U0=";
-  };
+    hash = "sha256-53L2F20vaLLxtQS3DP/u0ZxLtnXHmjfcOMbXd4i+A6Y=";
+  } + "/server";
+
+  vendorHash = "sha256-v8aKZyb4emrwuIgSBDgla5wzwyt6PVGakbXjB9JVaCk=";
+
+  patches = [ ./0001-module-replace-public.patch ];
 
-  vendorHash = null;
+  subPackages = [ "cmd/mmctl" ];
 
-  checkPhase = "make test";
+  checkPhase = "go test -tags unit -timeout 30m ./cmd/mmctl/...";
 
   ldflags = [
     "-s"
     "-w"
-    "-X github.com/mattermost/mmctl/v6/commands.Version=${version}"
+    "-X github.com/mattermost/mattermost/server/public/model.Version=${version}"
+    "-X github.com/mattermost/mattermost/server/public/model.BuildNumber=${version}-nixpkgs"
+    "-X github.com/mattermost/mattermost/server/public/model.BuildDate=1970-01-01"
+    "-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"
   ];
 
   meta = with lib; {
     description = "A remote CLI tool for Mattermost";
     homepage = "https://github.com/mattermost/mmctl";
     license = licenses.asl20;
-    maintainers = with maintainers; [ ppom ];
+    maintainers = with maintainers; [ ppom mgdelacroix ];
+    mainProgram = "mmctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mnc/default.nix b/nixpkgs/pkgs/tools/misc/mnc/default.nix
index d84ff6643aec..b4b033c94f65 100644
--- a/nixpkgs/pkgs/tools/misc/mnc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mnc/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     license = licenses.unlicense;
     platforms = platforms.linux;
     maintainers = with maintainers; [ wentam ];
+    mainProgram = "mnc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mods/default.nix b/nixpkgs/pkgs/tools/misc/mods/default.nix
index ecb306d4aef6..fda8944c330f 100644
--- a/nixpkgs/pkgs/tools/misc/mods/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mods/default.nix
@@ -8,18 +8,18 @@
 
 buildGoModule rec {
   pname = "mods";
-  version = "0.2.0";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "charmbracelet";
     repo = "mods";
     rev = "v${version}";
-    hash = "sha256-jOvXT/KAfSN9E4ZgntCbTu05VJu1jhGtv6gEgLStd98=";
+    hash = "sha256-ZWH3YuN1cmdw96/HVzsp1u70ziUfupUeBjJiNI5a538=";
   };
 
-  vendorHash = "sha256-GNGX8dyTtzRSUznEV/do1H7GEf6nYf0w+CLCZfkktfg=";
+  vendorHash = "sha256-PgaxqfgtwBYnzyL2F/OPJP1rdmLOtBCTKEPhMgvC6XA=";
 
-  ldflags = [ "-s" "-w" "-X=main.version=${version}" ];
+  ldflags = [ "-s" "-w" "-X=main.Version=${version}" ];
 
   passthru = {
     updateScript = gitUpdater {
@@ -38,5 +38,6 @@ buildGoModule rec {
     homepage = "https://github.com/charmbracelet/mods";
     license = licenses.mit;
     maintainers = with maintainers; [ dit7ya ];
+    mainProgram = "mods";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mongodb-compass/default.nix b/nixpkgs/pkgs/tools/misc/mongodb-compass/default.nix
index da800e0a836b..cc5858c16fb7 100644
--- a/nixpkgs/pkgs/tools/misc/mongodb-compass/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mongodb-compass/default.nix
@@ -134,5 +134,6 @@ in stdenv.mkDerivation {
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.sspl;
     platforms = [ "x86_64-linux" ];
+    mainProgram = "mongodb-compass";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mons/default.nix b/nixpkgs/pkgs/tools/misc/mons/default.nix
index e9bd96b41b5e..d386c901e7c0 100644
--- a/nixpkgs/pkgs/tools/misc/mons/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mons/default.nix
@@ -91,5 +91,6 @@ resholve.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ thiagokokada ];
     platforms = platforms.unix;
+    mainProgram = "mons";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/moon-phases/default.nix b/nixpkgs/pkgs/tools/misc/moon-phases/default.nix
index c1b58c7cce1a..f4d5a850efc9 100644
--- a/nixpkgs/pkgs/tools/misc/moon-phases/default.nix
+++ b/nixpkgs/pkgs/tools/misc/moon-phases/default.nix
@@ -16,5 +16,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/mirrorwitch/moon-phases";
     license = licenses.acsl14;
     maintainers = with maintainers; [ mirrorwitch ];
+    mainProgram = "moon-phases";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/moreutils/default.nix b/nixpkgs/pkgs/tools/misc/moreutils/default.nix
index 0a7423ec5576..6975d4878c52 100644
--- a/nixpkgs/pkgs/tools/misc/moreutils/default.nix
+++ b/nixpkgs/pkgs/tools/misc/moreutils/default.nix
@@ -9,16 +9,17 @@
 , makeWrapper
 , perl # for pod2man
 , darwin
+, gitUpdater
 }:
 
 stdenv.mkDerivation rec {
   pname = "moreutils";
-  version = "0.67";
+  version = "0.68";
 
   src = fetchgit {
     url = "git://git.joeyh.name/moreutils";
     rev = "refs/tags/${version}";
-    sha256 = "sha256-8Mu7L3KqOsW9OmidMkWB+q9TofHd1P1sbsNrtE4MUoA=";
+    hash = "sha256-kOY12oejH0xKaaPrKem+l0PACqyPqD4P1jEjOYfNntM=";
   };
 
   preBuild = ''
@@ -39,6 +40,11 @@ stdenv.mkDerivation rec {
     wrapProgram $out/bin/ts --prefix PERL5LIB : $PERL5LIB
   '';
 
+  passthru.updateScript = gitUpdater {
+    # No nicer place to find latest release.
+    url = "git://git.joeyh.name/moreutils";
+  };
+
   meta = with lib; {
     description = "Growing collection of the unix tools that nobody thought to write long ago when unix was young";
     homepage = "https://joeyh.name/code/moreutils/";
diff --git a/nixpkgs/pkgs/tools/misc/moserial/default.nix b/nixpkgs/pkgs/tools/misc/moserial/default.nix
index 278182ae5f06..8ac7091e003c 100644
--- a/nixpkgs/pkgs/tools/misc/moserial/default.nix
+++ b/nixpkgs/pkgs/tools/misc/moserial/default.nix
@@ -52,5 +52,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ linsui ];
     platforms = platforms.linux;
+    mainProgram = "moserial";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/most/default.nix b/nixpkgs/pkgs/tools/misc/most/default.nix
index 2073e066ae73..2ec394cd250d 100644
--- a/nixpkgs/pkgs/tools/misc/most/default.nix
+++ b/nixpkgs/pkgs/tools/misc/most/default.nix
@@ -43,5 +43,6 @@ stdenv.mkDerivation rec {
     homepage = "https://www.jedsoft.org/most/index.html";
     license = licenses.gpl2;
     platforms = platforms.unix;
+    mainProgram = "most";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mpdscribble/default.nix b/nixpkgs/pkgs/tools/misc/mpdscribble/default.nix
index 46bf31ed667e..335dedf12fe2 100644
--- a/nixpkgs/pkgs/tools/misc/mpdscribble/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mpdscribble/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.sohalt ];
     platforms = platforms.unix;
+    mainProgram = "mpdscribble";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mpremote/default.nix b/nixpkgs/pkgs/tools/misc/mpremote/default.nix
index aa7b847dfb5a..04b7abb353a2 100644
--- a/nixpkgs/pkgs/tools/misc/mpremote/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mpremote/default.nix
@@ -39,5 +39,6 @@ buildPythonApplication rec {
     platforms = platforms.unix;
     license = licenses.mit;
     maintainers = with maintainers; [ _999eagle ];
+    mainProgram = "mpremote";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mprime/default.nix b/nixpkgs/pkgs/tools/misc/mprime/default.nix
index 159159ce902a..e55f8ca50fe0 100644
--- a/nixpkgs/pkgs/tools/misc/mprime/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mprime/default.nix
@@ -64,5 +64,6 @@ stdenv.mkDerivation rec {
     license = licenses.unfree;
     # Untested on linux-32 and osx. Works in theory.
     platforms = ["i686-linux" "x86_64-linux" "x86_64-darwin"];
+    mainProgram = "mprime";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mprocs/default.nix b/nixpkgs/pkgs/tools/misc/mprocs/default.nix
index 4f47476f5f51..c42c17bd53c9 100644
--- a/nixpkgs/pkgs/tools/misc/mprocs/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mprocs/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/pvolok/mprocs";
     license = licenses.mit;
     maintainers = with maintainers; [ GaetanLepage thehedgeh0g ];
+    mainProgram = "mprocs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ms-sys/default.nix b/nixpkgs/pkgs/tools/misc/ms-sys/default.nix
index c0f807318bbb..5d736952d232 100644
--- a/nixpkgs/pkgs/tools/misc/ms-sys/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ms-sys/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     homepage = "https://ms-sys.sourceforge.net/";
     license = licenses.gpl2Plus;
     platforms = with platforms; linux;
+    mainProgram = "ms-sys";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mslink/default.nix b/nixpkgs/pkgs/tools/misc/mslink/default.nix
index 6db1ae3275c5..82c60ab926f0 100644
--- a/nixpkgs/pkgs/tools/misc/mslink/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mslink/default.nix
@@ -29,5 +29,6 @@ gccStdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ mkg20001 ];
     platforms = platforms.unix;
+    mainProgram = "mslink";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mtm/default.nix b/nixpkgs/pkgs/tools/misc/mtm/default.nix
index c142c1f29036..ffd7eefce8ae 100644
--- a/nixpkgs/pkgs/tools/misc/mtm/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mtm/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
     maintainers = [ maintainers.marsam ];
+    mainProgram = "mtm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/multitail/default.nix b/nixpkgs/pkgs/tools/misc/multitail/default.nix
index 647991b412a2..3732d64dd929 100644
--- a/nixpkgs/pkgs/tools/misc/multitail/default.nix
+++ b/nixpkgs/pkgs/tools/misc/multitail/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     maintainers = with lib.maintainers; [ matthiasbeyer ];
     platforms = lib.platforms.unix;
     license = lib.licenses.asl20;
+    mainProgram = "multitail";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/multitime/default.nix b/nixpkgs/pkgs/tools/misc/multitime/default.nix
index 015f50fa57fa..e6f6280abab1 100644
--- a/nixpkgs/pkgs/tools/misc/multitime/default.nix
+++ b/nixpkgs/pkgs/tools/misc/multitime/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.mit;
     homepage = "https://tratt.net/laurie/src/multitime/";
     platforms = lib.platforms.unix;
+    mainProgram = "multitime";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mutagen-compose/default.nix b/nixpkgs/pkgs/tools/misc/mutagen-compose/default.nix
index 5b379b2773f4..a98f8c770bb1 100644
--- a/nixpkgs/pkgs/tools/misc/mutagen-compose/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mutagen-compose/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     changelog = "https://github.com/mutagen-io/mutagen-compose/releases/tag/v${version}";
     maintainers = [ maintainers.matthewpi ];
     license = licenses.mit;
+    mainProgram = "mutagen-compose";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mvebu64boot/default.nix b/nixpkgs/pkgs/tools/misc/mvebu64boot/default.nix
index c2bb63186c3f..0c682cebd5e6 100644
--- a/nixpkgs/pkgs/tools/misc/mvebu64boot/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mvebu64boot/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ lukegb ];
     platforms = platforms.all;
+    mainProgram = "mvebu64boot";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/mysqltuner/default.nix b/nixpkgs/pkgs/tools/misc/mysqltuner/default.nix
index 61dba7569867..f13b455e523b 100644
--- a/nixpkgs/pkgs/tools/misc/mysqltuner/default.nix
+++ b/nixpkgs/pkgs/tools/misc/mysqltuner/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/major/MySQLTuner-perl";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ peterhoeg shamilton ];
+    mainProgram = "mysqltuner";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/natls/default.nix b/nixpkgs/pkgs/tools/misc/natls/default.nix
index 368291f60d9a..205905224f83 100644
--- a/nixpkgs/pkgs/tools/misc/natls/default.nix
+++ b/nixpkgs/pkgs/tools/misc/natls/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/willdoescode/nat";
     license = licenses.mit;
     maintainers = with maintainers; [ msfjarvis ];
+    mainProgram = "natls";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/nb/default.nix b/nixpkgs/pkgs/tools/misc/nb/default.nix
index 79796255a843..56513d35c779 100644
--- a/nixpkgs/pkgs/tools/misc/nb/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nb/default.nix
@@ -63,5 +63,6 @@ stdenv.mkDerivation rec {
     license = licenses.agpl3Plus;
     maintainers = [ maintainers.toonn ];
     platforms = platforms.all;
+    mainProgram = "nb";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/nbench/default.nix b/nixpkgs/pkgs/tools/misc/nbench/default.nix
index 0ce1d66cf214..f1af32cc0e3f 100644
--- a/nixpkgs/pkgs/tools/misc/nbench/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nbench/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     description = "A synthetic computing benchmark program";
     platforms = platforms.unix;
     maintainers = with lib.maintainers; [ bennofs ];
+    mainProgram = "nbench";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/nbqa/default.nix b/nixpkgs/pkgs/tools/misc/nbqa/default.nix
index cc988a02bc06..dec7eb1aa113 100644
--- a/nixpkgs/pkgs/tools/misc/nbqa/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nbqa/default.nix
@@ -92,5 +92,6 @@ python3.pkgs.buildPythonApplication rec {
     description = "Run ruff, isort, pyupgrade, mypy, pylint, flake8, black, blacken-docs, and more on Jupyter Notebooks";
     license = licenses.mit;
     maintainers = with maintainers; [ l0b0 ];
+    mainProgram = "nbqa";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/nginx-config-formatter/default.nix b/nixpkgs/pkgs/tools/misc/nginx-config-formatter/default.nix
index 9d5f9c445b49..edfe912f3983 100644
--- a/nixpkgs/pkgs/tools/misc/nginx-config-formatter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nginx-config-formatter/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ Baughn ];
     license = licenses.asl20;
     homepage = "https://github.com/slomkowski/nginx-config-formatter";
+    mainProgram = "nginxfmt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/nitch/default.nix b/nixpkgs/pkgs/tools/misc/nitch/default.nix
deleted file mode 100644
index a050b4133e30..000000000000
--- a/nixpkgs/pkgs/tools/misc/nitch/default.nix
+++ /dev/null
@@ -1,31 +0,0 @@
-{ lib, nimPackages, fetchFromGitHub, fetchpatch }:
-nimPackages.buildNimPackage rec {
-  pname = "nitch";
-  version = "0.1.6";
-  nimBinOnly = true;
-  src = fetchFromGitHub {
-    owner = "ssleert";
-    repo = "nitch";
-    rev = "42ad6899931dd5e0cec7b021c2b7e383fcc891f3";
-    hash = "sha256-QI7CbP0lvvjD+g29FR/YJjuZboZ+PoHynsNbpYC9SvE=";
-  };
-
-  patches = [
-    (fetchpatch {
-      url = "https://github.com/unxsh/nitch/commit/6831cf96144f58c4da298a0bc9b50d33056f6c08.patch";
-      sha256 = "sha256-uZUzUBLHBsssNqDxZ0NuTRMN9/gBxIlIiGgQkqCqEFc=";
-    })
-    (fetchpatch {
-      url = "https://github.com/ssleert/nitch/commit/ff10dea47dbc4d9736bd839b87869f53166cf395.patch";
-      hash = "sha256-n7JtI1Td0xMqhuScnMvxTkbY2I+l+FcUTz7aytxFasE=";
-    })
-  ];
-
-  meta = with lib; {
-    description = "Incredibly fast system fetch written in nim";
-    homepage = "https://github.com/unxsh/nitch";
-    license = licenses.mit;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ michaelBelsanti ];
-  };
-}
diff --git a/nixpkgs/pkgs/tools/misc/nix-direnv/default.nix b/nixpkgs/pkgs/tools/misc/nix-direnv/default.nix
index 93c7456bcb1c..d4e461bb77e1 100644
--- a/nixpkgs/pkgs/tools/misc/nix-direnv/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nix-direnv/default.nix
@@ -1,25 +1,23 @@
 { lib
 , stdenv
 , fetchFromGitHub
-, gnugrep
 , nix
 }:
 stdenv.mkDerivation (finalAttrs:{
   pname = "nix-direnv";
-  version = "2.4.0";
+  version = "2.5.1";
 
   src = fetchFromGitHub {
     owner = "nix-community";
     repo = "nix-direnv";
     rev = finalAttrs.version;
-    hash = "sha256-h49uz+/YDRwbusiVx6I3HP9P3UZROIOlwjlYYqRjesE=";
+    hash = "sha256-rMQ+Nb6WqXm66g2TpF8E0Io9WBR0ve06MW8I759gl2M=";
   };
 
   # Substitute instead of wrapping because the resulting file is
   # getting sourced, not executed:
   postPatch = ''
     sed -i "1a NIX_BIN_PREFIX=${nix}/bin/" direnvrc
-    substituteInPlace direnvrc --replace "grep" "${lib.getExe gnugrep}"
   '';
 
   installPhase = ''
diff --git a/nixpkgs/pkgs/tools/misc/nomino/default.nix b/nixpkgs/pkgs/tools/misc/nomino/default.nix
index 2ff9aac62fb5..e4b7acfa8883 100644
--- a/nixpkgs/pkgs/tools/misc/nomino/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nomino/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/yaa110/nomino/releases/tag/${src.rev}";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "nomino";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/noteshrink/default.nix b/nixpkgs/pkgs/tools/misc/noteshrink/default.nix
index 67c49c3ad0d5..4c76c332645f 100644
--- a/nixpkgs/pkgs/tools/misc/noteshrink/default.nix
+++ b/nixpkgs/pkgs/tools/misc/noteshrink/default.nix
@@ -20,5 +20,6 @@ buildPythonApplication rec {
     homepage    = "https://mzucker.github.io/2016/09/20/noteshrink.html";
     license     = licenses.mit;
     maintainers = with maintainers; [ rnhmjoj ];
+    mainProgram = "noteshrink";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/noti/default.nix b/nixpkgs/pkgs/tools/misc/noti/default.nix
index 40c060b63155..82d3dd4c2ef4 100644
--- a/nixpkgs/pkgs/tools/misc/noti/default.nix
+++ b/nixpkgs/pkgs/tools/misc/noti/default.nix
@@ -48,5 +48,6 @@ buildGoModule rec {
     homepage = "https://github.com/variadico/noti";
     license = licenses.mit;
     maintainers = with maintainers; [ stites marsam ];
+    mainProgram = "noti";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/notify/default.nix b/nixpkgs/pkgs/tools/misc/notify/default.nix
index 09f1d238fbb1..be7c6daf8e47 100644
--- a/nixpkgs/pkgs/tools/misc/notify/default.nix
+++ b/nixpkgs/pkgs/tools/misc/notify/default.nix
@@ -38,5 +38,6 @@ buildGoModule rec {
     homepage = "https://github.com/projectdiscovery/notify";
     license = licenses.mit;
     maintainers = with maintainers; [ hanemile ];
+    mainProgram = "notify";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ntfy-sh/default.nix b/nixpkgs/pkgs/tools/misc/ntfy-sh/default.nix
index 76a8e4a3c933..2ee18cb3da1c 100644
--- a/nixpkgs/pkgs/tools/misc/ntfy-sh/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ntfy-sh/default.nix
@@ -5,21 +5,21 @@
 
 buildGoModule rec {
   pname = "ntfy-sh";
-  version = "2.7.0";
+  version = "2.8.0";
 
   src = fetchFromGitHub {
     owner = "binwiederhier";
     repo = "ntfy";
     rev = "v${version}";
-    hash = "sha256-cL/vvwwFH3ztQUVqjZmO2nPmqCyuFMPCtMcRwNvEfNc=";
+    hash = "sha256-YO6nf1tY+tEgPlvq7JDgeG0ywE8+HEpZH7ToFzvYfvY=";
   };
 
-  vendorHash = "sha256-nCzBWANnNAwUw17EPs0G9ezpKJG+Ix1E7IhdvxFe3Xc=";
+  vendorHash = "sha256-Gvk/EI5b6AIYBCKYqSFKva0SfiWI/oNCeq7cTyVRpwY=";
 
   ui = buildNpmPackage {
     inherit src version;
     pname = "ntfy-sh-ui";
-    npmDepsHash = "sha256-qDpCI65r3S9WMEmYQeyY2KRpLnP6oxEL6rrhj0MGeWk=";
+    npmDepsHash = "sha256-G2yEIiKc/gxcUPS+97B68C/HukabGZAX2XY1gstGBvg=";
 
     prePatch = ''
       cd web/
diff --git a/nixpkgs/pkgs/tools/misc/ntfy/default.nix b/nixpkgs/pkgs/tools/misc/ntfy/default.nix
index 1f15f217eca2..cb81d49e29d1 100644
--- a/nixpkgs/pkgs/tools/misc/ntfy/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ntfy/default.nix
@@ -97,6 +97,7 @@ in python.pkgs.buildPythonApplication rec {
     description = "A utility for sending notifications, on demand and when commands finish";
     homepage = "http://ntfy.rtfd.org/";
     license = licenses.gpl3;
-    maintainers = with maintainers; [ jfrankenau kamilchm ];
+    maintainers = with maintainers; [ kamilchm ];
+    mainProgram = "ntfy";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/nux/default.nix b/nixpkgs/pkgs/tools/misc/nux/default.nix
index a852f830937b..89aea5e9dd9d 100644
--- a/nixpkgs/pkgs/tools/misc/nux/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nux/default.nix
@@ -34,5 +34,6 @@ rustPlatform.buildRustPackage {
     description = "A wrapper over the nix cli";
     license = with lib.licenses; [ gpl3Plus ];
     maintainers = with lib.maintainers; [ ];
+    mainProgram = "nux";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/nvfancontrol/default.nix b/nixpkgs/pkgs/tools/misc/nvfancontrol/default.nix
index 2bfdb9896e4a..1b2bebfce895 100644
--- a/nixpkgs/pkgs/tools/misc/nvfancontrol/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nvfancontrol/default.nix
@@ -27,5 +27,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ gpl3Only ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ devins2518 ];
+    mainProgram = "nvfancontrol";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/nvimpager/default.nix b/nixpkgs/pkgs/tools/misc/nvimpager/default.nix
index 1aee06ddf564..f2679259fa1f 100644
--- a/nixpkgs/pkgs/tools/misc/nvimpager/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nvimpager/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     platforms = platforms.unix;
     maintainers = [ maintainers.lucc ];
+    mainProgram = "nvimpager";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/nyancat/default.nix b/nixpkgs/pkgs/tools/misc/nyancat/default.nix
index 3aca7cc1729c..89acccd66fc1 100644
--- a/nixpkgs/pkgs/tools/misc/nyancat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/nyancat/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.ncsa;
     maintainers = with maintainers; [ midchildan ];
     platforms = platforms.unix;
+    mainProgram = "nyancat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ocs-url/default.nix b/nixpkgs/pkgs/tools/misc/ocs-url/default.nix
index 564c7b81c742..52c65d4b5b26 100644
--- a/nixpkgs/pkgs/tools/misc/ocs-url/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ocs-url/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ SohamG ];
     platforms = platforms.linux;
+    mainProgram = "ocs-url";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/octofetch/default.nix b/nixpkgs/pkgs/tools/misc/octofetch/default.nix
index 634120d539cc..4c4083d9555d 100644
--- a/nixpkgs/pkgs/tools/misc/octofetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/octofetch/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage rec {
     description = "Github user information on terminal";
     license = licenses.mit;
     maintainers = with maintainers; [ joelkoen ];
+    mainProgram = "octofetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/octosql/default.nix b/nixpkgs/pkgs/tools/misc/octosql/default.nix
index 6f928fd61f34..a42f80d95ff9 100644
--- a/nixpkgs/pkgs/tools/misc/octosql/default.nix
+++ b/nixpkgs/pkgs/tools/misc/octosql/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     homepage = "https://github.com/cube2222/octosql";
     license = licenses.mpl20;
     maintainers = with maintainers; [ arikgrahl ];
+    mainProgram = "octosql";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/odyssey/default.nix b/nixpkgs/pkgs/tools/misc/odyssey/default.nix
index 086c1eea58a8..2f3ccb0e154b 100644
--- a/nixpkgs/pkgs/tools/misc/odyssey/default.nix
+++ b/nixpkgs/pkgs/tools/misc/odyssey/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     maintainers = [ maintainers.marsam ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "odyssey";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ollama/default.nix b/nixpkgs/pkgs/tools/misc/ollama/default.nix
index 30be00d72a15..c0ac7f415f95 100644
--- a/nixpkgs/pkgs/tools/misc/ollama/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ollama/default.nix
@@ -7,13 +7,13 @@
 
 buildGoModule rec {
   pname = "ollama";
-  version = "0.1.7";
+  version = "0.1.11";
 
   src = fetchFromGitHub {
     owner = "jmorganca";
     repo = "ollama";
     rev = "v${version}";
-    hash = "sha256-rzcuRU2qcYTMo/GxiSHwJYnvA9samfWlztMEhOGzbRg=";
+    hash = "sha256-Jc6w+zQS/L3GKbfCaJO281LAgVdxNrseT0GX04N9MMY=";
   };
 
   patches = [
@@ -30,7 +30,7 @@ buildGoModule rec {
       --subst-var-by llamaCppServer "${llama-cpp}/bin/llama-cpp-server"
   '';
 
-  vendorHash = "sha256-Qt5QVqRkwK61BJPVhFWtox6b9E8BpAIseNB0yhh+/90=";
+  vendorHash = "sha256-fuSHaDDpkuQThYVNoEjnHgWkgh/LFLNHNss5Gezlv5w=";
 
   ldflags = [
     "-s"
diff --git a/nixpkgs/pkgs/tools/misc/ondir/default.nix b/nixpkgs/pkgs/tools/misc/ondir/default.nix
index 2e8605c33abc..1b32f474fc04 100644
--- a/nixpkgs/pkgs/tools/misc/ondir/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ondir/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation {
     homepage = "https://github.com/alecthomas/ondir/";
     license = licenses.gpl2Only;
     maintainers = [ maintainers.michaelCTS ];
+    mainProgram = "ondir";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/onefetch/default.nix b/nixpkgs/pkgs/tools/misc/onefetch/default.nix
index 9a1391b4614c..fe509320a712 100644
--- a/nixpkgs/pkgs/tools/misc/onefetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/onefetch/default.nix
@@ -14,16 +14,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "onefetch";
-  version = "2.18.1";
+  version = "2.19.0";
 
   src = fetchFromGitHub {
     owner = "o2sh";
     repo = pname;
     rev = version;
-    hash = "sha256-xa7LdIeeSzCoSUVe9CzC3hKDiKlQdr011+iF/WOVGx0=";
+    hash = "sha256-IaXQyTQMvgfm3CWU6z0T4nTJNgA8/8urG+hhuthB4+U=";
   };
 
-  cargoHash = "sha256-zaRoL5fV0Vyca0Ay1WIl/1jAlPSeuoBevgrEFER6XJU=";
+  cargoHash = "sha256-8brPYBVqoBg9wO/Y6LdNgVasJgmyZvdNIC0Cclpyk68=";
 
   cargoPatches = [
     # enable pkg-config feature of zstd
@@ -60,5 +60,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/o2sh/onefetch/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ Br1ght0ne figsoda kloenk ];
+    mainProgram = "onefetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/onefetch/zstd-pkg-config.patch b/nixpkgs/pkgs/tools/misc/onefetch/zstd-pkg-config.patch
index 0539dc6ca542..9bfc271dc912 100644
--- a/nixpkgs/pkgs/tools/misc/onefetch/zstd-pkg-config.patch
+++ b/nixpkgs/pkgs/tools/misc/onefetch/zstd-pkg-config.patch
@@ -1,6 +1,8 @@
+diff --git a/Cargo.lock b/Cargo.lock
+index f6d5b6c..a631bbf 100644
 --- a/Cargo.lock
 +++ b/Cargo.lock
-@@ -2534,6 +2534,7 @@ dependencies = [
+@@ -2544,6 +2544,7 @@ dependencies = [
   "typetag",
   "winres",
   "yaml-rust",
@@ -8,15 +10,11 @@
  ]
  
  [[package]]
-@@ -4113,4 +4114,5 @@ checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b"
- dependencies = [
-  "cc",
-  "libc",
-+ "pkg-config",
- ]
+diff --git a/Cargo.toml b/Cargo.toml
+index b77f70d..861f1ac 100644
 --- a/Cargo.toml
 +++ b/Cargo.toml
-@@ -51,6 +51,7 @@ tokei = "12.1.2"
+@@ -65,6 +65,7 @@ tokei = "12.1.2"
  typetag = "0.2"
  yaml-rust = "0.4.5"
  parking_lot = "0.12"
diff --git a/nixpkgs/pkgs/tools/misc/open-pdf-sign/default.nix b/nixpkgs/pkgs/tools/misc/open-pdf-sign/default.nix
index 4a70bc2131dd..282ad778db5f 100644
--- a/nixpkgs/pkgs/tools/misc/open-pdf-sign/default.nix
+++ b/nixpkgs/pkgs/tools/misc/open-pdf-sign/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation (finalAttrs: {
     maintainers = with lib.maintainers; [ drupol ];
     platforms = lib.platforms.unix;
     sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
+    mainProgram = "open-pdf-sign";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/opencorsairlink/default.nix b/nixpkgs/pkgs/tools/misc/opencorsairlink/default.nix
index ed11232065e9..40b747f20305 100644
--- a/nixpkgs/pkgs/tools/misc/opencorsairlink/default.nix
+++ b/nixpkgs/pkgs/tools/misc/opencorsairlink/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.all;
     maintainers = [ lib.maintainers.expipiplus1 ];
+    mainProgram = "OpenCorsairLink.elf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/opentelemetry-collector/default.nix b/nixpkgs/pkgs/tools/misc/opentelemetry-collector/default.nix
index b298605aa183..092d591b88a8 100644
--- a/nixpkgs/pkgs/tools/misc/opentelemetry-collector/default.nix
+++ b/nixpkgs/pkgs/tools/misc/opentelemetry-collector/default.nix
@@ -1,21 +1,26 @@
 { lib
 , buildGoModule
 , fetchFromGitHub
+, installShellFiles
+, testers
+, opentelemetry-collector
 }:
 
 buildGoModule rec {
   pname = "opentelemetry-collector";
-  version = "0.88.0";
+  version = "0.90.0";
 
   src = fetchFromGitHub {
     owner = "open-telemetry";
     repo = "opentelemetry-collector";
     rev = "v${version}";
-    hash = "sha256-Tflva3qo9tgdTAR+Ibr8KgpXU419rg5cX9Y1P6yTl0c=";
+    hash = "sha256-FL0lNlofXHTdn5o6g4FHNYauzJkjCKTrspSXP9slp/A=";
   };
   # there is a nested go.mod
   sourceRoot = "${src.name}/cmd/otelcorecol";
-  vendorHash = "sha256-VqZsYI/aA/db7fpZhlxUQzfFESjOBi4Hp9nytm+mFVY=";
+  vendorHash = "sha256-6Vr4Nk4mp505H3oAznAQ2mJl6qYFbHyO5MqgYeinnf8=";
+
+  nativeBuildInputs = [ installShellFiles ];
 
   # upstream strongly recommends disabling CGO
   # additionally dependencies have had issues when GCO was enabled that weren't caught upstream
@@ -29,6 +34,19 @@ buildGoModule rec {
 
   ldflags = [ "-s" "-w" ];
 
+  postInstall = ''
+    installShellCompletion --cmd otelcorecol \
+      --bash <($out/bin/otelcorecol completion bash) \
+      --fish <($out/bin/otelcorecol completion fish) \
+      --zsh <($out/bin/otelcorecol completion zsh)
+  '';
+
+  passthru.tests.version = testers.testVersion {
+    inherit version;
+    package = opentelemetry-collector;
+    command = "otelcorecol -v";
+  };
+
   meta = with lib; {
     homepage = "https://github.com/open-telemetry/opentelemetry-collector";
     changelog = "https://github.com/open-telemetry/opentelemetry-collector/blob/v${version}/CHANGELOG.md";
diff --git a/nixpkgs/pkgs/tools/misc/opentsdb/default.nix b/nixpkgs/pkgs/tools/misc/opentsdb/default.nix
index 3662c9793c43..abce03cae02f 100644
--- a/nixpkgs/pkgs/tools/misc/opentsdb/default.nix
+++ b/nixpkgs/pkgs/tools/misc/opentsdb/default.nix
@@ -347,5 +347,6 @@ in stdenv.mkDerivation rec {
       binaryBytecode  # maven dependencies
     ];
     maintainers = [ ];
+    mainProgram = "tsdb";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/org-stats/default.nix b/nixpkgs/pkgs/tools/misc/org-stats/default.nix
index 7c79f526fb8a..ead4f9e18d33 100644
--- a/nixpkgs/pkgs/tools/misc/org-stats/default.nix
+++ b/nixpkgs/pkgs/tools/misc/org-stats/default.nix
@@ -58,5 +58,6 @@ buildGoModule rec {
     changelog = "https://github.com/caarlos0/org-stats/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "org-stats";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/os-prober/default.nix b/nixpkgs/pkgs/tools/misc/os-prober/default.nix
index b38cb81748a6..5d15b7077385 100644
--- a/nixpkgs/pkgs/tools/misc/os-prober/default.nix
+++ b/nixpkgs/pkgs/tools/misc/os-prober/default.nix
@@ -4,7 +4,7 @@ coreutils,  # mktemp
 grub2,      # grub-mount and grub-probe
 cryptsetup, # cryptsetup
 libuuid,    # blkid and blockdev
-udev,    # udevadm udevinfo
+systemd,    # udevadm
 ntfs3g,     # ntfs3g
 dmraid,     # dmraid
 lvm2        # lvs
@@ -56,7 +56,7 @@ stdenv.mkDerivation rec {
     done;
     for file in $out/bin/*; do
       wrapProgram $file \
-        --suffix PATH : ${lib.makeBinPath [ grub2 udev coreutils cryptsetup libuuid ntfs3g lvm2 dmraid ]} \
+        --suffix PATH : ${lib.makeBinPath [ grub2 systemd coreutils cryptsetup libuuid ntfs3g lvm2 dmraid ]} \
         --run "[ -d /var/lib/os-prober ] || mkdir /var/lib/os-prober"
     done;
   '';
diff --git a/nixpkgs/pkgs/tools/misc/osm2pgsql/default.nix b/nixpkgs/pkgs/tools/misc/osm2pgsql/default.nix
index 2cc2ba926ef5..addfb26dfe3f 100644
--- a/nixpkgs/pkgs/tools/misc/osm2pgsql/default.nix
+++ b/nixpkgs/pkgs/tools/misc/osm2pgsql/default.nix
@@ -7,7 +7,6 @@
 , bzip2
 , zlib
 , boost
-, cimg
 , postgresql
 , python3
 , withLuaJIT ? false
@@ -15,6 +14,7 @@
 , luajit
 , libosmium
 , nlohmann_json
+, opencv
 , potrace
 , protozero
 , testers
@@ -22,13 +22,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "osm2pgsql";
-  version = "1.9.2";
+  version = "1.10.0";
 
   src = fetchFromGitHub {
     owner = "osm2pgsql-dev";
     repo = "osm2pgsql";
     rev = finalAttrs.version;
-    hash = "sha256-RzJpaOEpgKm2IN6CK2Z67CUG0WU2ELvCpGhdQehjGKU=";
+    hash = "sha256-IFAQ7iA37QXnWOSxUjh9EW7ss85k0h948JGuuUcpr5w=";
   };
 
   postPatch = ''
@@ -41,11 +41,11 @@ stdenv.mkDerivation (finalAttrs: {
   buildInputs = [
     boost
     bzip2
-    cimg
     expat
     fmt
     libosmium
     nlohmann_json
+    opencv
     postgresql
     potrace
     proj
diff --git a/nixpkgs/pkgs/tools/misc/otel-cli/default.nix b/nixpkgs/pkgs/tools/misc/otel-cli/default.nix
index 635e8ee10185..de35952f184a 100644
--- a/nixpkgs/pkgs/tools/misc/otel-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/otel-cli/default.nix
@@ -28,5 +28,6 @@ buildGoModule rec {
     changelog = "https://github.com/equinix-labs/otel-cli/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with lib.maintainers; [ emattiza urandom ];
+    mainProgram = "otel-cli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/otfcc/default.nix b/nixpkgs/pkgs/tools/misc/otfcc/default.nix
index b6c971dd3c2e..aa0d86253d77 100644
--- a/nixpkgs/pkgs/tools/misc/otfcc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/otfcc/default.nix
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/caryll/otfcc";
     license = licenses.asl20;
     platforms = platforms.unix;
-    maintainers = with maintainers; [ jfrankenau ttuegel ];
+    maintainers = with maintainers; [ ttuegel ];
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/misc/owofetch/default.nix b/nixpkgs/pkgs/tools/misc/owofetch/default.nix
index 4b312f0cea45..b623721ec9b2 100644
--- a/nixpkgs/pkgs/tools/misc/owofetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/owofetch/default.nix
@@ -31,5 +31,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3Only;
     platforms = platforms.x86_64;
     maintainers = with maintainers; [ nullishamy ];
+    mainProgram = "owofetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-acro/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-acro/default.nix
index d60bd10bcf69..36bd518f5b2b 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-acro/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-acro/default.nix
@@ -59,5 +59,6 @@ buildPythonApplication {
     description = "Pandoc filter which manages acronyms in Pandoc flavored Markdown sources";
     license = licenses.bsd2;
     maintainers = with maintainers; [ tfc ];
+    mainProgram = "pandoc-acro";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-drawio-filter/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-drawio-filter/default.nix
index a5e8c919ce7b..9a5ff8949ba6 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-drawio-filter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-drawio-filter/default.nix
@@ -48,6 +48,7 @@ let
       description = "Pandoc filter which converts draw.io diagrams to PDF";
       license = licenses.mit;
       maintainers = with maintainers; [ tfc ];
+      mainProgram = "pandoc-drawio";
     };
   };
 
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-eqnos/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-eqnos/default.nix
index d808060fc23a..5ee4e9587d61 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-eqnos/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-eqnos/default.nix
@@ -31,5 +31,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/tomduck/pandoc-eqnos";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ ppenguin ];
+    mainProgram = "pandoc-eqnos";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-fignos/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-fignos/default.nix
index 7ed7a8e710a7..eb8d0154ffce 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-fignos/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-fignos/default.nix
@@ -31,5 +31,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/tomduck/pandoc-fignos";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ ppenguin ];
+    mainProgram = "pandoc-fignos";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-imagine/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-imagine/default.nix
index 67e27da960fc..ae94c3115366 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-imagine/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-imagine/default.nix
@@ -24,5 +24,6 @@ buildPythonApplication rec {
     '';
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ synthetica ];
+    mainProgram = "pandoc-imagine";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-include/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-include/default.nix
index 684af986b017..a5c9ea00bfdf 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-include/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-include/default.nix
@@ -31,5 +31,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/DCsunset/pandoc-include";
     license = licenses.mit;
     maintainers = with maintainers; [ ppenguin ];
+    mainProgram = "pandoc-include";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-katex/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-katex/default.nix
index fdcfef878449..d2b9f03e51a4 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-katex/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-katex/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/xu-cheng/pandoc-katex";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ minijackson pacien ];
+    mainProgram = "pandoc-katex";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-plantuml-filter/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-plantuml-filter/default.nix
index cdf0ab862df4..d8c1bb2ea8a3 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-plantuml-filter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-plantuml-filter/default.nix
@@ -22,5 +22,6 @@ buildPythonApplication rec {
     description = "Pandoc filter which converts PlantUML code blocks to PlantUML images";
     license = licenses.mit;
     maintainers = with maintainers; [ cmcdragonkai ];
+    mainProgram = "pandoc-plantuml";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-secnos/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-secnos/default.nix
index 507d7df400e3..0880214e218e 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-secnos/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-secnos/default.nix
@@ -35,5 +35,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/tomduck/pandoc-secnos";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ ppenguin ];
+    mainProgram = "pandoc-secnos";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pandoc-tablenos/default.nix b/nixpkgs/pkgs/tools/misc/pandoc-tablenos/default.nix
index e1fb785a7a9f..6ee5ef65861e 100644
--- a/nixpkgs/pkgs/tools/misc/pandoc-tablenos/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pandoc-tablenos/default.nix
@@ -31,5 +31,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/tomduck/pandoc-tablenos";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ ppenguin ];
+    mainProgram = "pandoc-tablenos";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/panicparse/default.nix b/nixpkgs/pkgs/tools/misc/panicparse/default.nix
index 273675834363..6cf97eca5a97 100644
--- a/nixpkgs/pkgs/tools/misc/panicparse/default.nix
+++ b/nixpkgs/pkgs/tools/misc/panicparse/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     homepage = "https://github.com/maruel/panicparse";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
+    mainProgram = "panicparse";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/panoply/default.nix b/nixpkgs/pkgs/tools/misc/panoply/default.nix
index 801b3737f9b9..5a333a38a4bc 100644
--- a/nixpkgs/pkgs/tools/misc/panoply/default.nix
+++ b/nixpkgs/pkgs/tools/misc/panoply/default.nix
@@ -33,5 +33,6 @@ stdenvNoCC.mkDerivation rec {
     platforms = platforms.linux;
     maintainers = [ maintainers.markuskowa ];
     license = licenses.unfree;  # Package does not state a license
+    mainProgram = "panoply";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/paperlike-go/default.nix b/nixpkgs/pkgs/tools/misc/paperlike-go/default.nix
index 63390f427d40..6ed29433a35d 100644
--- a/nixpkgs/pkgs/tools/misc/paperlike-go/default.nix
+++ b/nixpkgs/pkgs/tools/misc/paperlike-go/default.nix
@@ -24,5 +24,6 @@ buildGoModule {
     license = lib.licenses.asl20;
     maintainers = [ lib.maintainers.adisbladis ];
     platforms = lib.platforms.linux;
+    mainProgram = "paperlike-cli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/paps/default.nix b/nixpkgs/pkgs/tools/misc/paps/default.nix
index 75cd8f3535cb..ab9c9e433c68 100644
--- a/nixpkgs/pkgs/tools/misc/paps/default.nix
+++ b/nixpkgs/pkgs/tools/misc/paps/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl2;
     maintainers = with maintainers; [ ];
     platforms = platforms.linux;
+    mainProgram = "paps";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/parallel/default.nix b/nixpkgs/pkgs/tools/misc/parallel/default.nix
index 9b223c12f8f4..a2aee41eff75 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 = "20230922";
+  version = "20231022";
 
   src = fetchurl {
     url = "mirror://gnu/parallel/${pname}-${version}.tar.bz2";
-    sha256 = "sha256-EUR0Ft1eXfZQE897RULhQJOKO/1fPzCVye2xaPy/4GM=";
+    sha256 = "sha256-k/K5TxhQeYpLXdoiva6G2ramVl41JYYOCORvJWPzJow=";
   };
 
   outputs = [ "out" "man" "doc" ];
diff --git a/nixpkgs/pkgs/tools/misc/parcellite/default.nix b/nixpkgs/pkgs/tools/misc/parcellite/default.nix
index 04fe534984ed..d39115fcecc9 100644
--- a/nixpkgs/pkgs/tools/misc/parcellite/default.nix
+++ b/nixpkgs/pkgs/tools/misc/parcellite/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/rickyrockrat/parcellite";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
+    mainProgram = "parcellite";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/parquet-tools/default.nix b/nixpkgs/pkgs/tools/misc/parquet-tools/default.nix
index 36a80202447f..bd35304f3cf1 100644
--- a/nixpkgs/pkgs/tools/misc/parquet-tools/default.nix
+++ b/nixpkgs/pkgs/tools/misc/parquet-tools/default.nix
@@ -70,5 +70,6 @@ buildPythonApplication rec {
     changelog = "https://github.com/ktrueda/parquet-tools/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
+    mainProgram = "parquet-tools";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/partition-manager/default.nix b/nixpkgs/pkgs/tools/misc/partition-manager/default.nix
index 6fdc0e32bea6..8dde1e68bd29 100644
--- a/nixpkgs/pkgs/tools/misc/partition-manager/default.nix
+++ b/nixpkgs/pkgs/tools/misc/partition-manager/default.nix
@@ -99,5 +99,6 @@ mkDerivation rec {
     license = with licenses; [ cc-by-40 cc0 gpl3Plus lgpl3Plus mit ];
     homepage = "https://www.kde.org/applications/system/kdepartitionmanager/";
     maintainers = with maintainers; [ peterhoeg oxalica ];
+    mainProgram = "partitionmanager";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/past-time/default.nix b/nixpkgs/pkgs/tools/misc/past-time/default.nix
index 4e551a041bdd..cb36808ea366 100644
--- a/nixpkgs/pkgs/tools/misc/past-time/default.nix
+++ b/nixpkgs/pkgs/tools/misc/past-time/default.nix
@@ -35,5 +35,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/fabaff/past-time/releases/tag/${version}";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "past-time";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pastebinit/default.nix b/nixpkgs/pkgs/tools/misc/pastebinit/default.nix
index c5419b27fece..ba597934ebbe 100644
--- a/nixpkgs/pkgs/tools/misc/pastebinit/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pastebinit/default.nix
@@ -1,52 +1,55 @@
-{ lib, stdenv
-, fetchurl
-, fetchpatch
+{ lib
+, stdenv
+, fetchFromGitHub
 , python3
+, libxslt
+, docbook_xsl
+, installShellFiles
+, callPackage
 }:
-
 stdenv.mkDerivation rec {
-  version = "1.5";
+  version = "1.6.2";
   pname = "pastebinit";
 
-  src = fetchurl {
-    url = "https://launchpad.net/pastebinit/trunk/${version}/+download/${pname}-${version}.tar.bz2";
-    sha256 = "0mw48fgm9lyh9d3pw997fccmglzsjccf2y347gxjas74wx6aira2";
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = version;
+    hash = "sha256-vuAWkHlQM6QTWarThpSbY0qrxzej0GvLU0jT2JOS/qc=";
   };
 
-  buildInputs = [
-    (python3.withPackages (p: [ p.distro ]))
+  patches = [
+    ./use-drv-etc.patch
   ];
 
-  patchFlags = [ "-p0" ];
+  nativeBuildInputs = [
+    libxslt
+    installShellFiles
+  ];
 
-  patches = [
-    # Required to allow pastebinit 1.5 to run on Python 3.8
-    (fetchpatch {
-      name = "use-distro-module.patch";
-      url = "https://bazaar.launchpad.net/~arnouten/pastebinit/python38/diff/264?context=3";
-      sha256 = "1gp5inp4xald65xbb7fc5aqq5s2fhw464niwjjja9anqyp3zhawj";
-    })
-    # Required because pastebin.com now redirects http requests to https
-    (fetchpatch {
-      name = "pastebin-com-https.patch";
-      url = "https://bazaar.launchpad.net/~arnouten/pastebinit/pastebin-com-https/diff/264?context=3";
-      sha256 = "0hxhhfcai0mll8qfyhdl3slmbf34ynb759b648x63274m9nd2kji";
-    })
+  buildInputs = [
+    (python3.withPackages (p: [ p.distro ]))
   ];
 
+  buildPhase = ''
+    xsltproc --nonet ${docbook_xsl}/xml/xsl/docbook/manpages/docbook.xsl pastebinit.xml
+  '';
+
   installPhase = ''
     mkdir -p $out/bin
     mkdir -p $out/etc
     cp -a pastebinit $out/bin
+    cp -a utils/* $out/bin
     cp -a pastebin.d $out/etc
-    substituteInPlace $out/bin/pastebinit --replace "'/etc/pastebin.d" "'$out/etc/pastebin.d"
+    substituteInPlace $out/bin/pastebinit --subst-var-by "etc" "$out/etc"
+    installManPage pastebinit.1
   '';
 
   meta = with lib; {
-    homepage = "https://launchpad.net/pastebinit";
+    homepage = "https://stgraber.org/category/pastebinit/";
     description = "A software that lets you send anything you want directly to a pastebin from the command line";
-    maintainers = with maintainers; [ raboof ];
+    maintainers = with maintainers; [ raboof samuel-martineau ];
     license = licenses.gpl2;
-    platforms = platforms.linux;
+    platforms = platforms.linux ++ lib.platforms.darwin;
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pastebinit/use-drv-etc.patch b/nixpkgs/pkgs/tools/misc/pastebinit/use-drv-etc.patch
new file mode 100644
index 000000000000..6ccd7897ddf2
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/pastebinit/use-drv-etc.patch
@@ -0,0 +1,13 @@
+diff --git a/pastebinit b/pastebinit
+index 4e5f9ce..fe06bd3 100755
+--- a/pastebinit
++++ b/pastebinit
+@@ -91,7 +91,7 @@ try:
+         # Files found later override files found earlier.
+         pastebind = {}
+         confdirs = []
+-        for confdir in ['/usr/share', '/usr/local/share'] \
++        for confdir in ['@etc@', '/usr/share', '/usr/local/share'] \
+                 + list(reversed(os.environ.get('XDG_DATA_DIRS', '').split(':'))) \
+                 + list(reversed(os.environ.get('XDG_CONFIG_DIRS', '').split(':'))) \
+                 + ['/etc', '/usr/local/etc',
diff --git a/nixpkgs/pkgs/tools/misc/pazi/default.nix b/nixpkgs/pkgs/tools/misc/pazi/default.nix
index 661029cb61c4..c4c1ea18b549 100644
--- a/nixpkgs/pkgs/tools/misc/pazi/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pazi/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/euank/pazi";
     license = licenses.gpl3;
     maintainers = with maintainers; [ ];
+    mainProgram = "pazi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pb_cli/default.nix b/nixpkgs/pkgs/tools/misc/pb_cli/default.nix
index 48b819d5bfdd..b884b2865838 100644
--- a/nixpkgs/pkgs/tools/misc/pb_cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pb_cli/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/ptpb/pb_cli";
     maintainers = [ maintainers.ar1a ];
     license = licenses.gpl3Plus;
+    mainProgram = "pb";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pcp/default.nix b/nixpkgs/pkgs/tools/misc/pcp/default.nix
index eb73e128533e..e9d245c8129d 100644
--- a/nixpkgs/pkgs/tools/misc/pcp/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pcp/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ matthewcroughan ];
     platforms = platforms.linux;
+    mainProgram = "pcp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pdd/default.nix b/nixpkgs/pkgs/tools/misc/pdd/default.nix
index db80139098bf..2e34e94ad013 100644
--- a/nixpkgs/pkgs/tools/misc/pdd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pdd/default.nix
@@ -30,5 +30,6 @@ buildPythonApplication rec {
     '';
     maintainers = [ maintainers.infinisil ];
     license = licenses.gpl3;
+    mainProgram = "pdd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pdf-parser/default.nix b/nixpkgs/pkgs/tools/misc/pdf-parser/default.nix
index 90c128f8ac35..593960c4d2cf 100644
--- a/nixpkgs/pkgs/tools/misc/pdf-parser/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pdf-parser/default.nix
@@ -30,5 +30,6 @@ python3Packages.buildPythonApplication {
     license = licenses.publicDomain;
     maintainers = [ maintainers.lightdiscord ];
     platforms = platforms.all;
+    mainProgram = "pdf-parser.py";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/peep/default.nix b/nixpkgs/pkgs/tools/misc/peep/default.nix
index 1ecad087ccfb..301b04cbb816 100644
--- a/nixpkgs/pkgs/tools/misc/peep/default.nix
+++ b/nixpkgs/pkgs/tools/misc/peep/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/ryochack/peep/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "peep";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pferd/default.nix b/nixpkgs/pkgs/tools/misc/pferd/default.nix
index 46b525cd578b..af343a19d969 100644
--- a/nixpkgs/pkgs/tools/misc/pferd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pferd/default.nix
@@ -32,5 +32,6 @@ python3Packages.buildPythonApplication rec {
     description = "Tool for downloading course-related files from ILIAS";
     license = licenses.mit;
     maintainers = with maintainers; [ _0xbe7a ];
+    mainProgram = "pferd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pfetch-rs/default.nix b/nixpkgs/pkgs/tools/misc/pfetch-rs/default.nix
index 6291d24e2336..88f832db82a9 100644
--- a/nixpkgs/pkgs/tools/misc/pfetch-rs/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pfetch-rs/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/Gobidev/pfetch-rs/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ gobidev ];
+    mainProgram = "pfetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pfetch/default.nix b/nixpkgs/pkgs/tools/misc/pfetch/default.nix
index bbecf4656e74..5f9e8bf7676a 100644
--- a/nixpkgs/pkgs/tools/misc/pfetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pfetch/default.nix
@@ -23,5 +23,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ equirosa ];
+    mainProgram = "pfetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pfsshell/default.nix b/nixpkgs/pkgs/tools/misc/pfsshell/default.nix
index 10cde1385bb2..24eb379adf5c 100644
--- a/nixpkgs/pkgs/tools/misc/pfsshell/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pfsshell/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
       afl20    # APA, PFS, and iomanX libraries which are compiled together with this package
     ];
     maintainers = with maintainers; [ makefu ];
+    mainProgram = "pfsshell";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pg_flame/default.nix b/nixpkgs/pkgs/tools/misc/pg_flame/default.nix
index f35706bfc674..da9cc6c77d59 100644
--- a/nixpkgs/pkgs/tools/misc/pg_flame/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pg_flame/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/mgartner/pg_flame";
     license = licenses.asl20;
     maintainers = with maintainers; [ Br1ght0ne ];
+    mainProgram = "pg_flame";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pg_top/default.nix b/nixpkgs/pkgs/tools/misc/pg_top/default.nix
index 9521136977f3..0999c9456d53 100644
--- a/nixpkgs/pkgs/tools/misc/pg_top/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pg_top/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     homepage = "http://ptop.projects.postgresql.org/";
     platforms = platforms.linux;
     license = licenses.free; # see commands.c
+    mainProgram = "pg_top";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pgbadger/default.nix b/nixpkgs/pkgs/tools/misc/pgbadger/default.nix
index ed1646c04f82..4054e6b20e94 100644
--- a/nixpkgs/pkgs/tools/misc/pgbadger/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pgbadger/default.nix
@@ -1,4 +1,4 @@
-{ buildPerlPackage, stdenv, lib, fetchFromGitHub, which, bzip2, PodMarkdown, JSONXS
+{ buildPerlPackage, shortenPerlShebang, stdenv, lib, fetchFromGitHub, which, bzip2, PodMarkdown, JSONXS
 , TextCSV_XS }:
 buildPerlPackage rec {
   pname = "pgbadger";
@@ -14,11 +14,19 @@ buildPerlPackage rec {
     patchShebangs ./pgbadger
   '';
 
+  # pgbadger has too many `-Idir` flags on its shebang line on Darwin,
+  # causing the build to fail when trying to generate the documentation.
+  # Rewrite the -I flags in `use lib` form.
+  preBuild = lib.optionalString stdenv.isDarwin ''
+    shortenPerlShebang ./pgbadger
+  '';
+
   outputs = [ "out" ];
 
   PERL_MM_OPT = "INSTALL_BASE=${placeholder "out"}";
 
   buildInputs = [ PodMarkdown JSONXS TextCSV_XS ];
+  nativeBuildInputs = lib.optionals stdenv.isDarwin [ shortenPerlShebang ];
 
   nativeCheckInputs = [ which bzip2 ];
 
@@ -28,6 +36,6 @@ buildPerlPackage rec {
     changelog = "https://github.com/darold/pgbadger/raw/v${version}/ChangeLog";
     license = lib.licenses.postgresql;
     maintainers = lib.teams.determinatesystems.members;
-    broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/pgbadger.x86_64-darwin
+    mainProgram = "pgbadger";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pgcenter/default.nix b/nixpkgs/pkgs/tools/misc/pgcenter/default.nix
index 507beb498952..ba962a393665 100644
--- a/nixpkgs/pkgs/tools/misc/pgcenter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pgcenter/default.nix
@@ -29,5 +29,6 @@ buildGoModule rec {
     description = "Command-line admin tool for observing and troubleshooting PostgreSQL";
     license = licenses.bsd3;
     maintainers = [ maintainers.marsam ];
+    mainProgram = "pgcenter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pgmetrics/default.nix b/nixpkgs/pkgs/tools/misc/pgmetrics/default.nix
index 7a24a87ca767..0df0070e18b9 100644
--- a/nixpkgs/pkgs/tools/misc/pgmetrics/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pgmetrics/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     description = "Collect and display information and stats from a running PostgreSQL server";
     license = licenses.asl20;
     maintainers = [ maintainers.marsam ];
+    mainProgram = "pgmetrics";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/phoronix-test-suite/default.nix b/nixpkgs/pkgs/tools/misc/phoronix-test-suite/default.nix
index 1456cb4b142f..cb4762c412f1 100644
--- a/nixpkgs/pkgs/tools/misc/phoronix-test-suite/default.nix
+++ b/nixpkgs/pkgs/tools/misc/phoronix-test-suite/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ davidak ];
     license = licenses.gpl3;
     platforms = with platforms; unix;
+    mainProgram = "phoronix-test-suite";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pick/default.nix b/nixpkgs/pkgs/tools/misc/pick/default.nix
index 9a6c6881f7df..cee77d3a1588 100644
--- a/nixpkgs/pkgs/tools/misc/pick/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pick/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.womfoo ];
     platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "pick";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/misc/picocom/default.nix b/nixpkgs/pkgs/tools/misc/picocom/default.nix
index 9685c80f06e5..d8422e3679fd 100644
--- a/nixpkgs/pkgs/tools/misc/picocom/default.nix
+++ b/nixpkgs/pkgs/tools/misc/picocom/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/npat-efault/picocom/";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
+    mainProgram = "picocom";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pipectl/default.nix b/nixpkgs/pkgs/tools/misc/pipectl/default.nix
index 9ce250bef78e..f3e80655279f 100644
--- a/nixpkgs/pkgs/tools/misc/pipectl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pipectl/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     description = "a simple named pipe management utility";
     maintainers = with maintainers; [ synthetica ];
+    mainProgram = "pipectl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pipelight/default.nix b/nixpkgs/pkgs/tools/misc/pipelight/default.nix
index e6ec23266d2c..90c1e8d1e86a 100644
--- a/nixpkgs/pkgs/tools/misc/pipelight/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pipelight/default.nix
@@ -63,5 +63,6 @@ in stdenv.mkDerivation rec {
     description = "A wrapper for using Windows plugins in Linux browsers";
     maintainers = with lib.maintainers; [ ];
     platforms = [ "x86_64-linux" "i686-linux" ];
+    mainProgram = "pipelight-plugin";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pipreqs/default.nix b/nixpkgs/pkgs/tools/misc/pipreqs/default.nix
index 2689581b6c06..49062b3a5cb8 100644
--- a/nixpkgs/pkgs/tools/misc/pipreqs/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pipreqs/default.nix
@@ -21,5 +21,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/bndr/pipreqs";
     license = licenses.asl20;
     maintainers = with maintainers; [ psyanticy ];
+    mainProgram = "pipreqs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pistol/default.nix b/nixpkgs/pkgs/tools/misc/pistol/default.nix
index 22ddde837612..79826e6f7924 100644
--- a/nixpkgs/pkgs/tools/misc/pistol/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pistol/default.nix
@@ -42,5 +42,6 @@ buildGoModule rec {
     homepage = "https://github.com/doronbehar/pistol";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar ];
+    mainProgram = "pistol";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/piston-cli/default.nix b/nixpkgs/pkgs/tools/misc/piston-cli/default.nix
index 8c78f3f7b30b..44ec8eabc149 100644
--- a/nixpkgs/pkgs/tools/misc/piston-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/piston-cli/default.nix
@@ -33,5 +33,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/Shivansh-007/piston-cli";
     license = licenses.mit;
     maintainers = with maintainers; [ ethancedwards8 ];
+    mainProgram = "piston";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pixd/default.nix b/nixpkgs/pkgs/tools/misc/pixd/default.nix
index 2e8f552e1a81..84ad2c92e207 100644
--- a/nixpkgs/pkgs/tools/misc/pixd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pixd/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.FireyFly ];
     license = licenses.mit;
     platforms = platforms.unix;
+    mainProgram = "pixd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pk2cmd/default.nix b/nixpkgs/pkgs/tools/misc/pk2cmd/default.nix
index b6678f52d748..9b04a668dadb 100644
--- a/nixpkgs/pkgs/tools/misc/pk2cmd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pk2cmd/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     homepage = "https://www.microchip.com/pickit2";
     license = lib.licenses.unfree; #MicroChip-PK2
     description = "Microchip PIC programming software for the PICKit2 programmer";
+    mainProgram = "pk2cmd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pkgdiff/default.nix b/nixpkgs/pkgs/tools/misc/pkgdiff/default.nix
index 2f68e9505edb..45ec2df2beaf 100644
--- a/nixpkgs/pkgs/tools/misc/pkgdiff/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pkgdiff/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ sweber ];
     platforms = platforms.unix;
+    mainProgram = "pkgdiff";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pkgtop/default.nix b/nixpkgs/pkgs/tools/misc/pkgtop/default.nix
index 464e22724c77..acb56dd47d4b 100644
--- a/nixpkgs/pkgs/tools/misc/pkgtop/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pkgtop/default.nix
@@ -26,5 +26,6 @@ buildGoModule rec {
     changelog = "https://github.com/orhun/pkgtop/releases/tag/${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "pkgtop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/plantuml/default.nix b/nixpkgs/pkgs/tools/misc/plantuml/default.nix
index eb6cfb7ebcbe..411b76d0205a 100644
--- a/nixpkgs/pkgs/tools/misc/plantuml/default.nix
+++ b/nixpkgs/pkgs/tools/misc/plantuml/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ bjornfor Mogria ];
     platforms = platforms.unix;
+    mainProgram = "plantuml";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/plowshare/default.nix b/nixpkgs/pkgs/tools/misc/plowshare/default.nix
index b5396f130f1d..4a87e5787bd2 100644
--- a/nixpkgs/pkgs/tools/misc/plowshare/default.nix
+++ b/nixpkgs/pkgs/tools/misc/plowshare/default.nix
@@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
       A command-line download/upload tool for popular file sharing websites
     '';
     license = lib.licenses.gpl3;
-    maintainers = with lib.maintainers; [ aforemny jfrankenau ];
+    maintainers = with lib.maintainers; [ aforemny ];
     platforms = lib.platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pmbootstrap/default.nix b/nixpkgs/pkgs/tools/misc/pmbootstrap/default.nix
index 763485d75585..43a803dfa3e5 100644
--- a/nixpkgs/pkgs/tools/misc/pmbootstrap/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pmbootstrap/default.nix
@@ -102,5 +102,6 @@ buildPythonApplication rec {
     homepage = "https://gitlab.com/postmarketOS/pmbootstrap";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ onny ];
+    mainProgram = "pmbootstrap";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pod2mdoc/default.nix b/nixpkgs/pkgs/tools/misc/pod2mdoc/default.nix
index 4e919e284892..eba487a57fb7 100644
--- a/nixpkgs/pkgs/tools/misc/pod2mdoc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pod2mdoc/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     platforms = platforms.all;
     maintainers = with maintainers; [ ramkromberg ];
+    mainProgram = "pod2mdoc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/poop/default.nix b/nixpkgs/pkgs/tools/misc/poop/default.nix
index fe595f76ffaa..d3b444d9472f 100644
--- a/nixpkgs/pkgs/tools/misc/poop/default.nix
+++ b/nixpkgs/pkgs/tools/misc/poop/default.nix
@@ -43,5 +43,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
     platforms = platforms.linux;
+    mainProgram = "poop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/portal/default.nix b/nixpkgs/pkgs/tools/misc/portal/default.nix
index 978d3632da1f..3577f0f0b31a 100644
--- a/nixpkgs/pkgs/tools/misc/portal/default.nix
+++ b/nixpkgs/pkgs/tools/misc/portal/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     changelog = "https://github.com/SpatiumPortae/portal/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ tennox ];
+    mainProgram = "portal";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pouf/default.nix b/nixpkgs/pkgs/tools/misc/pouf/default.nix
index 9206e16463ed..8029d77fcbc8 100644
--- a/nixpkgs/pkgs/tools/misc/pouf/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pouf/default.nix
@@ -29,5 +29,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/mothsart/pouf/releases/tag/${version}";
     maintainers = with maintainers; [ mothsart ];
     license = with licenses; [ mit ];
+    mainProgram = "pouf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/poweralertd/default.nix b/nixpkgs/pkgs/tools/misc/poweralertd/default.nix
index 58d54f5707ba..677d85e18f09 100644
--- a/nixpkgs/pkgs/tools/misc/poweralertd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/poweralertd/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ thibautmarty ];
+    mainProgram = "poweralertd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/powerline-rs/default.nix b/nixpkgs/pkgs/tools/misc/powerline-rs/default.nix
index 7222ac9be7d8..5edde7b3653f 100644
--- a/nixpkgs/pkgs/tools/misc/powerline-rs/default.nix
+++ b/nixpkgs/pkgs/tools/misc/powerline-rs/default.nix
@@ -28,5 +28,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ ];
     platforms = platforms.unix;
+    mainProgram = "powerline-rs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pre-commit-hook-ensure-sops/default.nix b/nixpkgs/pkgs/tools/misc/pre-commit-hook-ensure-sops/default.nix
index ebe41abb8e33..3b0fcacd4892 100644
--- a/nixpkgs/pkgs/tools/misc/pre-commit-hook-ensure-sops/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pre-commit-hook-ensure-sops/default.nix
@@ -46,5 +46,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/yuvipanda/pre-commit-hook-ensure-sops";
     maintainers = with maintainers; [ nialov ];
     license = licenses.bsd3;
+    mainProgram = "pre-commit-hook-ensure-sops";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pre-commit/default.nix b/nixpkgs/pkgs/tools/misc/pre-commit/default.nix
index ded7b3290d3c..78042489ff9d 100644
--- a/nixpkgs/pkgs/tools/misc/pre-commit/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pre-commit/default.nix
@@ -181,5 +181,6 @@ buildPythonApplication rec {
     homepage = "https://pre-commit.com/";
     license = licenses.mit;
     maintainers = with maintainers; [ borisbabic ];
+    mainProgram = "pre-commit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/precice-config-visualizer/default.nix b/nixpkgs/pkgs/tools/misc/precice-config-visualizer/default.nix
index be6e7f0a9bb6..9b6d40a0c733 100644
--- a/nixpkgs/pkgs/tools/misc/precice-config-visualizer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/precice-config-visualizer/default.nix
@@ -23,5 +23,6 @@ python3Packages.buildPythonApplication rec {
     description = "Small python tool for visualizing the preCICE xml configuration ";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ Scriptkiddi ];
+    mainProgram = "precice-config-visualizer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/present-cli/default.nix b/nixpkgs/pkgs/tools/misc/present-cli/default.nix
index 99427833ddff..7c1c87647a19 100644
--- a/nixpkgs/pkgs/tools/misc/present-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/present-cli/default.nix
@@ -28,5 +28,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/terror/present/";
     license = licenses.cc0;
     maintainers = with maintainers; [ cameronfyfe ];
+    mainProgram = "present";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pridecat/default.nix b/nixpkgs/pkgs/tools/misc/pridecat/default.nix
index d7bf2b86d6da..4d4ed57fc235 100644
--- a/nixpkgs/pkgs/tools/misc/pridecat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pridecat/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation {
     homepage = "https://github.com/lunasorcery/pridecat";
     license = licenses.cc-by-nc-sa-40;
     maintainers = with maintainers; [ lunarequest ];
+    mainProgram = "pridecat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pridefetch/default.nix b/nixpkgs/pkgs/tools/misc/pridefetch/default.nix
index 22e5c7a0afb2..dedd3b336d78 100644
--- a/nixpkgs/pkgs/tools/misc/pridefetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pridefetch/default.nix
@@ -64,5 +64,6 @@ stdenv.mkDerivation {
       maintainers.minion3665
     ];
     platforms = platforms.all;
+    mainProgram = "pridefetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/procyon/default.nix b/nixpkgs/pkgs/tools/misc/procyon/default.nix
index e5ef58e3a3e1..7026ce6febfb 100644
--- a/nixpkgs/pkgs/tools/misc/procyon/default.nix
+++ b/nixpkgs/pkgs/tools/misc/procyon/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/mstrobel/procyon/";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
+    mainProgram = "procyon";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/profetch/default.nix b/nixpkgs/pkgs/tools/misc/profetch/default.nix
index c113f48fd13d..fc5f3cea4a0f 100644
--- a/nixpkgs/pkgs/tools/misc/profetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/profetch/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.all;
     maintainers = [ maintainers.vel ];
+    mainProgram = "profetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/progress/default.nix b/nixpkgs/pkgs/tools/misc/progress/default.nix
index 2a8dc9926017..063d4d122acb 100644
--- a/nixpkgs/pkgs/tools/misc/progress/default.nix
+++ b/nixpkgs/pkgs/tools/misc/progress/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "progress";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/promexplorer/default.nix b/nixpkgs/pkgs/tools/misc/promexplorer/default.nix
deleted file mode 100644
index efdbbe4e6da5..000000000000
--- a/nixpkgs/pkgs/tools/misc/promexplorer/default.nix
+++ /dev/null
@@ -1,22 +0,0 @@
-{ lib, nimPackages, fetchFromGitHub }:
-nimPackages.buildNimPackage rec {
-  pname = "promexplorer";
-  version = "0.0.5";
-  nimBinOnly = true;
-  src = fetchFromGitHub {
-    owner = "marcusramberg";
-    repo = "promexplorer";
-    rev = "v${version}";
-    hash = "sha256-a+9afqdgLgGf2hOWf/QsElq+CurDfE1qDmYCzodZIDU=";
-  };
-
-  buildInputs = with nimPackages; [ illwill illwillwidgets ];
-
-  meta = with lib; {
-    description = "A simple tool to explore prometheus exporter metrics";
-    homepage = "https://github.com/marcusramberg/promexplorer";
-    license = licenses.mit;
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ marcusramberg ];
-  };
-}
diff --git a/nixpkgs/pkgs/tools/misc/promql-cli/default.nix b/nixpkgs/pkgs/tools/misc/promql-cli/default.nix
index a65dfb87ea0a..d5188e83f293 100644
--- a/nixpkgs/pkgs/tools/misc/promql-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/promql-cli/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     homepage = "https://github.com/nalbury/promql-cli";
     license = licenses.asl20;
     maintainers = with maintainers; [ arikgrahl ];
+    mainProgram = "promql";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/proximity-sort/default.nix b/nixpkgs/pkgs/tools/misc/proximity-sort/default.nix
index 8ad6e5c1c176..3b0f1ca5be3d 100644
--- a/nixpkgs/pkgs/tools/misc/proximity-sort/default.nix
+++ b/nixpkgs/pkgs/tools/misc/proximity-sort/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/jonhoo/proximity-sort";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "proximity-sort";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pspg/default.nix b/nixpkgs/pkgs/tools/misc/pspg/default.nix
index e0da056c48c7..2449fd30171d 100644
--- a/nixpkgs/pkgs/tools/misc/pspg/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pspg/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     platforms = platforms.unix;
     maintainers = [ maintainers.jlesquembre ];
+    mainProgram = "pspg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/psql2csv/default.nix b/nixpkgs/pkgs/tools/misc/psql2csv/default.nix
index 21b58583bcca..729582f2e404 100644
--- a/nixpkgs/pkgs/tools/misc/psql2csv/default.nix
+++ b/nixpkgs/pkgs/tools/misc/psql2csv/default.nix
@@ -39,5 +39,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ azahi ];
     inherit (postgresql.meta) platforms;
+    mainProgram = "psql2csv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/psrecord/default.nix b/nixpkgs/pkgs/tools/misc/psrecord/default.nix
index 2f2b14e4875a..04b1970fe02b 100644
--- a/nixpkgs/pkgs/tools/misc/psrecord/default.nix
+++ b/nixpkgs/pkgs/tools/misc/psrecord/default.nix
@@ -27,5 +27,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/astrofrog/psrecord";
     license = lib.licenses.bsd2;
     maintainers = with lib.maintainers; [ johnazoidberg ];
+    mainProgram = "psrecord";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pv/default.nix b/nixpkgs/pkgs/tools/misc/pv/default.nix
index bd06fadee1ee..2c8f0d5521ba 100644
--- a/nixpkgs/pkgs/tools/misc/pv/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pv/default.nix
@@ -5,11 +5,11 @@
 
 stdenv.mkDerivation rec {
   pname = "pv";
-  version = "1.8.0";
+  version = "1.8.5";
 
   src = fetchurl {
     url = "https://www.ivarch.com/programs/sources/pv-${version}.tar.gz";
-    sha256 = "sha256-XOxPc3gmoO3atHHdO3Wlh70poufPowBo1X8pQ5olH98=";
+    sha256 = "sha256-0ilI0GvgalvjczYxjeVAoiFb4QqwFj+M0jogFJZHt4A=";
   };
 
   meta = {
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.artistic2;
     maintainers = with lib.maintainers; [ matthiasbeyer ];
     platforms = lib.platforms.all;
+    mainProgram = "pv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/pws/default.nix b/nixpkgs/pkgs/tools/misc/pws/default.nix
index 783bb9b5a384..97f458568677 100644
--- a/nixpkgs/pkgs/tools/misc/pws/default.nix
+++ b/nixpkgs/pkgs/tools/misc/pws/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     license     = licenses.mit;
     maintainers = with maintainers; [ swistak35 nicknovitski ];
     platforms   = platforms.unix;
+    mainProgram = "pws";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/q-text-as-data/default.nix b/nixpkgs/pkgs/tools/misc/q-text-as-data/default.nix
index 69d11ab34589..5a63752b8238 100644
--- a/nixpkgs/pkgs/tools/misc/q-text-as-data/default.nix
+++ b/nixpkgs/pkgs/tools/misc/q-text-as-data/default.nix
@@ -37,5 +37,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl3;
     maintainers = [ maintainers.taneb ];
     platforms = platforms.all;
+    mainProgram = "q";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/qdl/default.nix b/nixpkgs/pkgs/tools/misc/qdl/default.nix
index 5fdf78acefcd..02435272535f 100644
--- a/nixpkgs/pkgs/tools/misc/qdl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/qdl/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation {
     license = licenses.bsd3;
     maintainers = with maintainers; [ muscaln ];
     platforms = platforms.linux;
+    mainProgram = "qdl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/qjoypad/default.nix b/nixpkgs/pkgs/tools/misc/qjoypad/default.nix
index 6770ec133d3c..a602e7b7fad6 100644
--- a/nixpkgs/pkgs/tools/misc/qjoypad/default.nix
+++ b/nixpkgs/pkgs/tools/misc/qjoypad/default.nix
@@ -35,5 +35,6 @@ mkDerivation rec {
     license = lib.licenses.gpl2;
     maintainers = with maintainers; [ astsmtl ];
     platforms = with platforms; linux;
+    mainProgram = "qjoypad";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/qmk/default.nix b/nixpkgs/pkgs/tools/misc/qmk/default.nix
index ce0a11c10c83..42361d5e63cc 100644
--- a/nixpkgs/pkgs/tools/misc/qmk/default.nix
+++ b/nixpkgs/pkgs/tools/misc/qmk/default.nix
@@ -71,5 +71,6 @@ python3.pkgs.buildPythonApplication rec {
     '';
     license = licenses.mit;
     maintainers = with maintainers; [ bhipple babariviere ekleog ];
+    mainProgram = "qmk";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/qmk_hid/default.nix b/nixpkgs/pkgs/tools/misc/qmk_hid/default.nix
index 54f4f15f8e66..f5d1b61868a3 100644
--- a/nixpkgs/pkgs/tools/misc/qmk_hid/default.nix
+++ b/nixpkgs/pkgs/tools/misc/qmk_hid/default.nix
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/FrameworkComputer/qmk_hid";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ janik ];
+    mainProgram = "qmk_hid";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/qrscan/default.nix b/nixpkgs/pkgs/tools/misc/qrscan/default.nix
index 91b8cfc18db3..6ac80bb7f746 100644
--- a/nixpkgs/pkgs/tools/misc/qrscan/default.nix
+++ b/nixpkgs/pkgs/tools/misc/qrscan/default.nix
@@ -1,4 +1,4 @@
-{ lib, rustPlatform, fetchFromGitHub, stdenv }:
+{ clang_15, lib, rustPlatform, fetchFromGitHub, stdenv }:
 
 rustPlatform.buildRustPackage rec {
   pname = "qrscan";
@@ -12,7 +12,9 @@ rustPlatform.buildRustPackage rec {
   };
 
   nativeBuildInputs = [
-    rustPlatform.bindgenHook
+    (rustPlatform.bindgenHook.overrideAttrs {
+      libclang = clang_15.cc.lib;
+    })
   ];
 
   cargoHash = "sha256-P40IwFRtEQp6BGRgmt1x3UXtAKtWaMjR3kqhYq+p7wQ=";
diff --git a/nixpkgs/pkgs/tools/misc/qt5ct/default.nix b/nixpkgs/pkgs/tools/misc/qt5ct/default.nix
index d031168a6935..d9ee0358a76a 100644
--- a/nixpkgs/pkgs/tools/misc/qt5ct/default.nix
+++ b/nixpkgs/pkgs/tools/misc/qt5ct/default.nix
@@ -27,5 +27,6 @@ mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.bsd2;
     maintainers = with maintainers; [ ralith ];
+    mainProgram = "qt5ct";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/qt6ct/default.nix b/nixpkgs/pkgs/tools/misc/qt6ct/default.nix
index c011ae1b78aa..248bc3a48e4c 100644
--- a/nixpkgs/pkgs/tools/misc/qt6ct/default.nix
+++ b/nixpkgs/pkgs/tools/misc/qt6ct/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation (finalAttrs: {
     platforms = platforms.linux;
     license = licenses.bsd2;
     maintainers = with maintainers; [ Flakebi Scrumplex ];
+    mainProgram = "qt6ct";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/quich/default.nix b/nixpkgs/pkgs/tools/misc/quich/default.nix
index 1b54eb01112c..effd7993b803 100644
--- a/nixpkgs/pkgs/tools/misc/quich/default.nix
+++ b/nixpkgs/pkgs/tools/misc/quich/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.xdhampus ];
     platforms = platforms.all;
+    mainProgram = "quich";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/radeon-profile/default.nix b/nixpkgs/pkgs/tools/misc/radeon-profile/default.nix
index acadda5c549b..8c42cccfcdf0 100644
--- a/nixpkgs/pkgs/tools/misc/radeon-profile/default.nix
+++ b/nixpkgs/pkgs/tools/misc/radeon-profile/default.nix
@@ -27,6 +27,7 @@ mkDerivation rec {
     homepage    = "https://github.com/marazmista/radeon-profile";
     license     = licenses.gpl2Plus;
     platforms   = platforms.linux;
+    mainProgram = "radeon-profile";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/misc/ramfetch/default.nix b/nixpkgs/pkgs/tools/misc/ramfetch/default.nix
index a60315eaa58c..136c33598277 100644
--- a/nixpkgs/pkgs/tools/misc/ramfetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ramfetch/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     platforms = lib.platforms.linux;
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.markbeep ];
+    mainProgram = "ramfetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rargs/default.nix b/nixpkgs/pkgs/tools/misc/rargs/default.nix
index ed15e81709d9..54c7e393d2d2 100644
--- a/nixpkgs/pkgs/tools/misc/rargs/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rargs/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     homepage    = "https://github.com/lolabout/rargs";
     license     = with licenses; [ mit ];
     maintainers = with maintainers; [ pblkt ];
+    mainProgram = "rargs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rates/default.nix b/nixpkgs/pkgs/tools/misc/rates/default.nix
index 5d8b64846910..3989074d2461 100644
--- a/nixpkgs/pkgs/tools/misc/rates/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rates/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/lunush/rates";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "rates";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rauc/default.nix b/nixpkgs/pkgs/tools/misc/rauc/default.nix
index 2bd41d21a522..2fe8160bf718 100644
--- a/nixpkgs/pkgs/tools/misc/rauc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rauc/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl21Only;
     maintainers = with maintainers; [ emantor ];
     platforms = with platforms; linux;
+    mainProgram = "rauc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rename/default.nix b/nixpkgs/pkgs/tools/misc/rename/default.nix
index a8b5f4a54ace..d7eed90d0639 100644
--- a/nixpkgs/pkgs/tools/misc/rename/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rename/default.nix
@@ -15,5 +15,6 @@ perlPackages.buildPerlPackage rec {
     homepage = "https://github.com/pstray/rename";
     maintainers = with maintainers; [ mkg cyplo ];
     license = with licenses; [ gpl1Plus ];
+    mainProgram = "rename";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rfc/default.nix b/nixpkgs/pkgs/tools/misc/rfc/default.nix
index e58c35fef3bd..60d77bfbaca2 100644
--- a/nixpkgs/pkgs/tools/misc/rfc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rfc/default.nix
@@ -44,5 +44,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ azahi ];
     platforms = platforms.all;
+    mainProgram = "rfc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rig/default.nix b/nixpkgs/pkgs/tools/misc/rig/default.nix
index f21873df15e1..b9a3e0951e3c 100644
--- a/nixpkgs/pkgs/tools/misc/rig/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rig/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2;
     maintainers = with lib.maintainers; [ tomberek ];
     platforms = with lib.platforms; all;
+    mainProgram = "rig";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ripdrag/default.nix b/nixpkgs/pkgs/tools/misc/ripdrag/default.nix
index b2288810d30e..a3c27a48e981 100644
--- a/nixpkgs/pkgs/tools/misc/ripdrag/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ripdrag/default.nix
@@ -23,5 +23,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/nik012003/ripdrag/releases/tag/${src.rev}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "ripdrag";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ristate/default.nix b/nixpkgs/pkgs/tools/misc/ristate/default.nix
index 7c8dbb52181d..3c4baea4d3c1 100644
--- a/nixpkgs/pkgs/tools/misc/ristate/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ristate/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://gitlab.com/snakedye/ristate";
     license = licenses.mit;
     maintainers = with maintainers; [ kranzes ];
+    mainProgram = "ristate";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rlwrap/default.nix b/nixpkgs/pkgs/tools/misc/rlwrap/default.nix
index 2d48edf2dfd2..f1c2d6a58971 100644
--- a/nixpkgs/pkgs/tools/misc/rlwrap/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rlwrap/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ jlesquembre ];
+    mainProgram = "rlwrap";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rmate-sh/default.nix b/nixpkgs/pkgs/tools/misc/rmate-sh/default.nix
index 7fb51344edd1..bc93c6e437fe 100644
--- a/nixpkgs/pkgs/tools/misc/rmate-sh/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rmate-sh/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.gpl3;
     maintainers = with maintainers; [ pbsds ];
+    mainProgram = "rmate";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rmlint/default.nix b/nixpkgs/pkgs/tools/misc/rmlint/default.nix
index ec59a661ffcf..502761dc9426 100644
--- a/nixpkgs/pkgs/tools/misc/rmlint/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rmlint/default.nix
@@ -85,5 +85,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.gpl3;
     maintainers = with maintainers; [ aaschmid koral ];
+    mainProgram = "rmlint";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rmw/default.nix b/nixpkgs/pkgs/tools/misc/rmw/default.nix
index 46f5d9ae50ce..a6bbb4084029 100644
--- a/nixpkgs/pkgs/tools/misc/rmw/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rmw/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     changelog = "https://github.com/theimpossibleastronaut/rmw/blob/${src.rev}/ChangeLog";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ dit7ya ];
+    mainProgram = "rmw";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/roundup/default.nix b/nixpkgs/pkgs/tools/misc/roundup/default.nix
index fd2272e6cd56..efe220fd5f9b 100644
--- a/nixpkgs/pkgs/tools/misc/roundup/default.nix
+++ b/nixpkgs/pkgs/tools/misc/roundup/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
     platforms = platforms.all;
+    mainProgram = "roundup";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rpcsvc-proto/default.nix b/nixpkgs/pkgs/tools/misc/rpcsvc-proto/default.nix
index b84bbb7d9d51..2de8bdefc880 100644
--- a/nixpkgs/pkgs/tools/misc/rpcsvc-proto/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rpcsvc-proto/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.mit;
     maintainers = with maintainers; [ ma27 ];
+    mainProgram = "rpcgen";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rpi-imager/default.nix b/nixpkgs/pkgs/tools/misc/rpi-imager/default.nix
index 579aa7fcc5e9..455113c45e68 100644
--- a/nixpkgs/pkgs/tools/misc/rpi-imager/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rpi-imager/default.nix
@@ -21,13 +21,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "rpi-imager";
-  version = "1.8.1";
+  version = "1.8.3";
 
   src = fetchFromGitHub {
     owner = "raspberrypi";
     repo = finalAttrs.pname;
     rev = "refs/tags/v${finalAttrs.version}";
-    sha256 = "sha256-drHiZ0eYYvJg6/v3oEozGAbBKm1KLpec+kYZWwpT9yM=";
+    sha256 = "sha256-+8jSKYy3w+S7BP7q+K5UYXa8Fp6uNEya47ssYkVCHH4=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/misc/rpm-ostree/default.nix b/nixpkgs/pkgs/tools/misc/rpm-ostree/default.nix
index b84bc955c46a..de0fcdbe6142 100644
--- a/nixpkgs/pkgs/tools/misc/rpm-ostree/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rpm-ostree/default.nix
@@ -120,5 +120,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl2Plus;
     maintainers = with maintainers; [ copumpkin ];
     platforms = platforms.linux;
+    mainProgram = "rpm-ostree";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rshim-user-space/default.nix b/nixpkgs/pkgs/tools/misc/rshim-user-space/default.nix
index 25550f45c4fa..a8bdd356a2cc 100644
--- a/nixpkgs/pkgs/tools/misc/rshim-user-space/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rshim-user-space/default.nix
@@ -15,13 +15,13 @@
 
 stdenv.mkDerivation rec {
   pname = "rshim-user-space";
-  version = "2.0.11";
+  version = "2.0.12";
 
   src = fetchFromGitHub {
     owner = "Mellanox";
     repo = pname;
     rev = "rshim-${version}";
-    hash = "sha256-LbAs4IFfYT6OhrtwRXmuQR9rD7ulmmUB20Au5fO8j9w=";
+    hash = "sha256-jR9Q1i2p4weKuGPTAylNIVglgcZH0UtvXBVVCEquxu8=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/misc/rtx/default.nix b/nixpkgs/pkgs/tools/misc/rtx/default.nix
index f51b896159a4..51cba8e4b375 100644
--- a/nixpkgs/pkgs/tools/misc/rtx/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rtx/default.nix
@@ -18,7 +18,7 @@ rustPlatform.buildRustPackage rec {
   version = "2023.11.2";
 
   src = fetchFromGitHub {
-    owner = "jdxcode";
+    owner = "jdx";
     repo = "rtx";
     rev = "v${version}";
     hash = "sha256-OdqHyxqufJJTfP7frjLKf5R0WNySDyZc7Sh0Mpdord0=";
@@ -62,9 +62,9 @@ rustPlatform.buildRustPackage rec {
   };
 
   meta = {
-    homepage = "https://github.com/jdxcode/rtx";
+    homepage = "https://github.com/jdx/rtx";
     description = "Polyglot runtime manager (asdf rust clone)";
-    changelog = "https://github.com/jdxcode/rtx/releases/tag/v${version}";
+    changelog = "https://github.com/jdx/rtx/releases/tag/v${version}";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ konradmalik ];
     mainProgram = "rtx";
diff --git a/nixpkgs/pkgs/tools/misc/rtz/default.nix b/nixpkgs/pkgs/tools/misc/rtz/default.nix
index 7ae6525e5b64..ba66935d0a95 100644
--- a/nixpkgs/pkgs/tools/misc/rtz/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rtz/default.nix
@@ -52,5 +52,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/twitchax/rtz/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "rtz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rust-motd/default.nix b/nixpkgs/pkgs/tools/misc/rust-motd/default.nix
index 7d2125a1e1ee..26b582e5e944 100644
--- a/nixpkgs/pkgs/tools/misc/rust-motd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rust-motd/default.nix
@@ -38,5 +38,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/rust-motd/rust-motd/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "rust-motd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/rw/default.nix b/nixpkgs/pkgs/tools/misc/rw/default.nix
index 5299d2491465..e77009f7969f 100644
--- a/nixpkgs/pkgs/tools/misc/rw/default.nix
+++ b/nixpkgs/pkgs/tools/misc/rw/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.isc;
     maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "rw";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sagoin/default.nix b/nixpkgs/pkgs/tools/misc/sagoin/default.nix
index 7e6d3e26bd03..b3fdd6e99405 100644
--- a/nixpkgs/pkgs/tools/misc/sagoin/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sagoin/default.nix
@@ -38,5 +38,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/figsoda/sagoin/blob/v${version}/CHANGELOG.md";
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "sagoin";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sanctity/default.nix b/nixpkgs/pkgs/tools/misc/sanctity/default.nix
index cdfc1b89e634..7c892bb16894 100644
--- a/nixpkgs/pkgs/tools/misc/sanctity/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sanctity/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://codeberg.org/annaaurora/sanctity";
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ annaaurora ];
+    mainProgram = "sanctity";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/savepagenow/default.nix b/nixpkgs/pkgs/tools/misc/savepagenow/default.nix
index d9166d07b74c..da29fa3b05a9 100644
--- a/nixpkgs/pkgs/tools/misc/savepagenow/default.nix
+++ b/nixpkgs/pkgs/tools/misc/savepagenow/default.nix
@@ -21,5 +21,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/pastpages/savepagenow";
     license = licenses.mit;
     maintainers = with maintainers; [ SuperSandro2000 ];
+    mainProgram = "savepagenow";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/scdl/default.nix b/nixpkgs/pkgs/tools/misc/scdl/default.nix
index c49e819d91bf..611326d55403 100644
--- a/nixpkgs/pkgs/tools/misc/scdl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/scdl/default.nix
@@ -30,5 +30,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/flyingrub/scdl";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ marsam ];
+    mainProgram = "scdl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/scfbuild/default.nix b/nixpkgs/pkgs/tools/misc/scfbuild/default.nix
index 78434414b1a4..e881a288f959 100644
--- a/nixpkgs/pkgs/tools/misc/scfbuild/default.nix
+++ b/nixpkgs/pkgs/tools/misc/scfbuild/default.nix
@@ -30,5 +30,6 @@ buildPythonApplication {
     homepage = "https://github.com/13rac1/scfbuild";
     license = licenses.gpl3;
     maintainers = with maintainers; [ abbradar ];
+    mainProgram = "scfbuild";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/screenfetch/default.nix b/nixpkgs/pkgs/tools/misc/screenfetch/default.nix
index 83edfec25812..e3ad0e5c51c8 100644
--- a/nixpkgs/pkgs/tools/misc/screenfetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/screenfetch/default.nix
@@ -58,5 +58,6 @@ in stdenv.mkDerivation rec {
     homepage = "https://github.com/KittyKatt/screenFetch";
     maintainers = with maintainers; [ relrod ];
     platforms = platforms.all;
+    mainProgram = "screenfetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/scrub/default.nix b/nixpkgs/pkgs/tools/misc/scrub/default.nix
index f3a1ae619305..2fc2b43ea29c 100644
--- a/nixpkgs/pkgs/tools/misc/scrub/default.nix
+++ b/nixpkgs/pkgs/tools/misc/scrub/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ j0hax ];
     platforms = platforms.unix;
+    mainProgram = "scrub";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sd-mux-ctrl/default.nix b/nixpkgs/pkgs/tools/misc/sd-mux-ctrl/default.nix
index d42909a5c777..4f832a35eb30 100644
--- a/nixpkgs/pkgs/tools/misc/sd-mux-ctrl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sd-mux-ctrl/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     maintainers =  with maintainers; [ sarcasticadmin ];
     platforms = platforms.unix;
+    mainProgram = "sd-mux-ctrl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sdate/default.nix b/nixpkgs/pkgs/tools/misc/sdate/default.nix
index abc046bb6d02..71ab04c807d8 100644
--- a/nixpkgs/pkgs/tools/misc/sdate/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sdate/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ edef ];
     platforms = platforms.all;
+    mainProgram = "sdate";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/see/default.nix b/nixpkgs/pkgs/tools/misc/see/default.nix
index 60f55e8144c5..025d22facd2a 100644
--- a/nixpkgs/pkgs/tools/misc/see/default.nix
+++ b/nixpkgs/pkgs/tools/misc/see/default.nix
@@ -27,5 +27,6 @@ python3.pkgs.buildPythonApplication {
     homepage = "https://github.com/Textualize/textualize-see";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ anselmschueler ];
+    mainProgram = "see";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/semiphemeral/default.nix b/nixpkgs/pkgs/tools/misc/semiphemeral/default.nix
index 67a5fb0149b6..7ccdd663082f 100644
--- a/nixpkgs/pkgs/tools/misc/semiphemeral/default.nix
+++ b/nixpkgs/pkgs/tools/misc/semiphemeral/default.nix
@@ -23,5 +23,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/micahflee/semiphemeral";
     license = licenses.mit;
     maintainers = with maintainers; [ amanjeev ];
+    mainProgram = "semiphemeral";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/serverspec/default.nix b/nixpkgs/pkgs/tools/misc/serverspec/default.nix
index 162b9d90cc03..28196efc18a3 100644
--- a/nixpkgs/pkgs/tools/misc/serverspec/default.nix
+++ b/nixpkgs/pkgs/tools/misc/serverspec/default.nix
@@ -15,5 +15,6 @@ bundlerApp {
     homepage = "https://serverspec.org/";
     license = licenses.mit;
     maintainers = with maintainers; [ dylanmtaylor ];
+    mainProgram = "serverspec-init";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/setconf/default.nix b/nixpkgs/pkgs/tools/misc/setconf/default.nix
index fdb80bfb25ba..8384617e5e5d 100644
--- a/nixpkgs/pkgs/tools/misc/setconf/default.nix
+++ b/nixpkgs/pkgs/tools/misc/setconf/default.nix
@@ -20,5 +20,6 @@ buildPythonApplication rec {
     description = "A small utility for changing settings in configuration textfiles";
     changelog = "https://github.com/xyproto/setconf/releases/tag/${version}";
     maintainers = [ lib.maintainers.AndersonTorres ];
+    mainProgram = "setconf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sfz/default.nix b/nixpkgs/pkgs/tools/misc/sfz/default.nix
index 0114858c99d9..41841d2ef2b9 100644
--- a/nixpkgs/pkgs/tools/misc/sfz/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sfz/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/weihanglo/sfz";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ dit7ya ];
+    mainProgram = "sfz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/shadowenv/default.nix b/nixpkgs/pkgs/tools/misc/shadowenv/default.nix
index 12723000cef7..06b7cb4e82c2 100644
--- a/nixpkgs/pkgs/tools/misc/shadowenv/default.nix
+++ b/nixpkgs/pkgs/tools/misc/shadowenv/default.nix
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     description = "reversible directory-local environment variable manipulations";
     license = licenses.mit;
     maintainers = [ maintainers.marsam ];
+    mainProgram = "shadowenv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/shallot/default.nix b/nixpkgs/pkgs/tools/misc/shallot/default.nix
index 46c5714ce966..4fbd07f38e32 100644
--- a/nixpkgs/pkgs/tools/misc/shallot/default.nix
+++ b/nixpkgs/pkgs/tools/misc/shallot/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.mit;
     homepage = "https://github.com/katmagic/Shallot";
     platforms = lib.platforms.linux;
+    mainProgram = "shallot";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sharedown/default.nix b/nixpkgs/pkgs/tools/misc/sharedown/default.nix
index 0f93551965e2..5d1d31b35ac1 100644
--- a/nixpkgs/pkgs/tools/misc/sharedown/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sharedown/default.nix
@@ -114,5 +114,6 @@ stdenvNoCC.mkDerivation rec {
     maintainers = with maintainers; [
     ];
     platforms = platforms.unix;
+    mainProgram = "Sharedown";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sheldon/default.nix b/nixpkgs/pkgs/tools/misc/sheldon/default.nix
index 73e9cb57d366..ddff13c9bcfd 100644
--- a/nixpkgs/pkgs/tools/misc/sheldon/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sheldon/default.nix
@@ -62,5 +62,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ seqizz ];
     platforms = platforms.linux;
+    mainProgram = "sheldon";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/shell-hist/default.nix b/nixpkgs/pkgs/tools/misc/shell-hist/default.nix
index 48e8667cc7e8..438b687c73f1 100644
--- a/nixpkgs/pkgs/tools/misc/shell-hist/default.nix
+++ b/nixpkgs/pkgs/tools/misc/shell-hist/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage {
     homepage = "https://github.com/jamesmunns/shell-hist";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = [ maintainers.spacekookie ];
+    mainProgram = "shell-hist";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/shelldap/default.nix b/nixpkgs/pkgs/tools/misc/shelldap/default.nix
index b383c9692a9c..045c5732c3e0 100644
--- a/nixpkgs/pkgs/tools/misc/shelldap/default.nix
+++ b/nixpkgs/pkgs/tools/misc/shelldap/default.nix
@@ -48,5 +48,6 @@ perlPackages.buildPerlPackage rec {
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ clerie tobiasBora ];
     platforms = platforms.unix;
+    mainProgram = "shelldap";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/shellspec/default.nix b/nixpkgs/pkgs/tools/misc/shellspec/default.nix
index 480ada8d5716..b355f0fc0232 100644
--- a/nixpkgs/pkgs/tools/misc/shellspec/default.nix
+++ b/nixpkgs/pkgs/tools/misc/shellspec/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ j0hax ];
     platforms = platforms.unix;
+    mainProgram = "shellspec";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/shunit2/default.nix b/nixpkgs/pkgs/tools/misc/shunit2/default.nix
index 1120c756895b..017d19264798 100644
--- a/nixpkgs/pkgs/tools/misc/shunit2/default.nix
+++ b/nixpkgs/pkgs/tools/misc/shunit2/default.nix
@@ -86,5 +86,6 @@ resholve.mkDerivation rec {
     maintainers = with maintainers; [ abathur utdemir ];
     license = licenses.asl20;
     platforms = platforms.unix;
+    mainProgram = "shunit2";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/silicon/default.nix b/nixpkgs/pkgs/tools/misc/silicon/default.nix
index ddc1ad6d639a..1da4d20c673f 100644
--- a/nixpkgs/pkgs/tools/misc/silicon/default.nix
+++ b/nixpkgs/pkgs/tools/misc/silicon/default.nix
@@ -60,5 +60,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/Aloxaf/silicon";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ evanjs _0x4A6F ];
+    mainProgram = "silicon";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sixpair/default.nix b/nixpkgs/pkgs/tools/misc/sixpair/default.nix
index 71a0af158246..fa444a86a0ac 100644
--- a/nixpkgs/pkgs/tools/misc/sixpair/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sixpair/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation {
     license = lib.licenses.gpl2;
     maintainers = [ lib.maintainers.tomsmeets ];
     platforms = lib.platforms.linux;
+    mainProgram = "sixpair";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sl/default.nix b/nixpkgs/pkgs/tools/misc/sl/default.nix
index dc55a8e783b9..bcb8de78c613 100644
--- a/nixpkgs/pkgs/tools/misc/sl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sl/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     };
     maintainers = with maintainers; [ eyjhb ];
     platforms = platforms.unix;
+    mainProgram = "sl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/slop/default.nix b/nixpkgs/pkgs/tools/misc/slop/default.nix
index 05b008997b7f..b3903bd95153 100644
--- a/nixpkgs/pkgs/tools/misc/slop/default.nix
+++ b/nixpkgs/pkgs/tools/misc/slop/default.nix
@@ -58,5 +58,6 @@ stdenv.mkDerivation rec {
     platforms = lib.platforms.linux;
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ];
+    mainProgram = "slop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sloth/default.nix b/nixpkgs/pkgs/tools/misc/sloth/default.nix
index c0621419fd37..2386b5a54a86 100644
--- a/nixpkgs/pkgs/tools/misc/sloth/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sloth/default.nix
@@ -24,5 +24,6 @@ buildGoModule rec {
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ nrhtr ];
     platforms = lib.platforms.unix;
+    mainProgram = "sloth";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/slsnif/default.nix b/nixpkgs/pkgs/tools/misc/slsnif/default.nix
index fd2b4c53d60a..04bc462350f1 100644
--- a/nixpkgs/pkgs/tools/misc/slsnif/default.nix
+++ b/nixpkgs/pkgs/tools/misc/slsnif/default.nix
@@ -14,5 +14,6 @@ stdenv.mkDerivation rec {
     homepage = "http://slsnif.sourceforge.net/";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.linux;
+    mainProgram = "slsnif";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/smc/default.nix b/nixpkgs/pkgs/tools/misc/smc/default.nix
index f3db213c84fe..99ed8de45e45 100644
--- a/nixpkgs/pkgs/tools/misc/smc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/smc/default.nix
@@ -47,5 +47,6 @@ stdenv.mkDerivation rec {
     license = licenses.mpl11;
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "smc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/smenu/default.nix b/nixpkgs/pkgs/tools/misc/smenu/default.nix
index 9768b33c5ce9..d2d893936f50 100644
--- a/nixpkgs/pkgs/tools/misc/smenu/default.nix
+++ b/nixpkgs/pkgs/tools/misc/smenu/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ matthiasbeyer ];
     platforms = platforms.unix;
+    mainProgram = "smenu";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/smug/default.nix b/nixpkgs/pkgs/tools/misc/smug/default.nix
index c620ba67b0cf..e528b2128759 100644
--- a/nixpkgs/pkgs/tools/misc/smug/default.nix
+++ b/nixpkgs/pkgs/tools/misc/smug/default.nix
@@ -29,5 +29,6 @@ buildGoModule rec {
     description = "Smug - tmux session manager";
     license = licenses.mit;
     maintainers = with maintainers; [ juboba ];
+    mainProgram = "smug";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/snore/default.nix b/nixpkgs/pkgs/tools/misc/snore/default.nix
index a5351794acf7..a3b9d67bba46 100644
--- a/nixpkgs/pkgs/tools/misc/snore/default.nix
+++ b/nixpkgs/pkgs/tools/misc/snore/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.marsam ];
     platforms = platforms.unix;
+    mainProgram = "snore";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sonota/default.nix b/nixpkgs/pkgs/tools/misc/sonota/default.nix
index d111e0b2b717..5f341bbc98ee 100644
--- a/nixpkgs/pkgs/tools/misc/sonota/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sonota/default.nix
@@ -50,5 +50,6 @@ in buildPythonApplication rec {
     homepage = src.meta.homepage;
     license = licenses.gpl2;
     maintainers = with maintainers; [ peterhoeg ];
+    mainProgram = "sonota";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/spacer/default.nix b/nixpkgs/pkgs/tools/misc/spacer/default.nix
index 0101b581f6a7..5bf584c07a14 100644
--- a/nixpkgs/pkgs/tools/misc/spacer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/spacer/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/samwho/spacer/releases/tag/${src.rev}";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "spacer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sqlite3-to-mysql/default.nix b/nixpkgs/pkgs/tools/misc/sqlite3-to-mysql/default.nix
index 412d29c3307c..68ee19e6c682 100644
--- a/nixpkgs/pkgs/tools/misc/sqlite3-to-mysql/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sqlite3-to-mysql/default.nix
@@ -59,5 +59,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/techouse/sqlite3-to-mysql";
     license = licenses.mit;
     maintainers = with maintainers; [ gador ];
+    mainProgram = "sqlite3mysql";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/srisum/default.nix b/nixpkgs/pkgs/tools/misc/srisum/default.nix
index 04fe962f97ad..8412e48d7907 100644
--- a/nixpkgs/pkgs/tools/misc/srisum/default.nix
+++ b/nixpkgs/pkgs/tools/misc/srisum/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ pjjw ];
     platforms = platforms.all;
+    mainProgram = "srisum";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/star-history/default.nix b/nixpkgs/pkgs/tools/misc/star-history/default.nix
index caa584a02064..113280617cb0 100644
--- a/nixpkgs/pkgs/tools/misc/star-history/default.nix
+++ b/nixpkgs/pkgs/tools/misc/star-history/default.nix
@@ -29,5 +29,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/dtolnay/star-history";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "star-history";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/starfetch/default.nix b/nixpkgs/pkgs/tools/misc/starfetch/default.nix
index ba6309c97ecb..962409d21763 100644
--- a/nixpkgs/pkgs/tools/misc/starfetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/starfetch/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = with maintainers; [ annaaurora ];
+    mainProgram = "starfetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/staruml/default.nix b/nixpkgs/pkgs/tools/misc/staruml/default.nix
index 388a407a52b7..058c2118db54 100644
--- a/nixpkgs/pkgs/tools/misc/staruml/default.nix
+++ b/nixpkgs/pkgs/tools/misc/staruml/default.nix
@@ -75,5 +75,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.unfree;
     maintainers = with maintainers; [ kashw2 ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "staruml";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/statserial/default.nix b/nixpkgs/pkgs/tools/misc/statserial/default.nix
index 8b5ae4cdc86e..526729dcd31c 100644
--- a/nixpkgs/pkgs/tools/misc/statserial/default.nix
+++ b/nixpkgs/pkgs/tools/misc/statserial/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
 
     platforms = platforms.unix;
     maintainers = with maintainers; [ rps ];
+    mainProgram = "statserial";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/subberthehut/default.nix b/nixpkgs/pkgs/tools/misc/subberthehut/default.nix
index b9698e1e5364..913bc49a5116 100644
--- a/nixpkgs/pkgs/tools/misc/subberthehut/default.nix
+++ b/nixpkgs/pkgs/tools/misc/subberthehut/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ jqueiroz ];
+    mainProgram = "subberthehut";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/svtplay-dl/default.nix b/nixpkgs/pkgs/tools/misc/svtplay-dl/default.nix
index 5f7b29ded042..c9e4664c6371 100644
--- a/nixpkgs/pkgs/tools/misc/svtplay-dl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/svtplay-dl/default.nix
@@ -68,5 +68,6 @@ stdenv.mkDerivation rec {
     description = "Command-line tool to download videos from svtplay.se and other sites";
     license = licenses.mit;
     platforms = lib.platforms.unix;
+    mainProgram = "svtplay-dl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/svu/default.nix b/nixpkgs/pkgs/tools/misc/svu/default.nix
index a3dddeba0e69..352f4d0ab721 100644
--- a/nixpkgs/pkgs/tools/misc/svu/default.nix
+++ b/nixpkgs/pkgs/tools/misc/svu/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     homepage = "https://github.com/caarlos0/svu";
     maintainers = with maintainers; [ caarlos0 ];
     license = licenses.mit;
+    mainProgram = "svu";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/swaglyrics/default.nix b/nixpkgs/pkgs/tools/misc/swaglyrics/default.nix
index 730290f8cf38..4b9095ff59d7 100644
--- a/nixpkgs/pkgs/tools/misc/swaglyrics/default.nix
+++ b/nixpkgs/pkgs/tools/misc/swaglyrics/default.nix
@@ -62,5 +62,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/SwagLyrics/SwagLyrics-For-Spotify";
     license = licenses.mit;
     maintainers = with maintainers; [ siraben ];
+    mainProgram = "swaglyrics";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/systrayhelper/default.nix b/nixpkgs/pkgs/tools/misc/systrayhelper/default.nix
index cc000d62d08a..1635054b56c6 100644
--- a/nixpkgs/pkgs/tools/misc/systrayhelper/default.nix
+++ b/nixpkgs/pkgs/tools/misc/systrayhelper/default.nix
@@ -36,5 +36,6 @@ buildGoModule rec {
     license = licenses.mit;
     # It depends on the inputs, i guess? not sure about solaris, for instance. go supports it though
     # I hope nix can figure this out?! ¯\\_(ツ)_/¯
+    mainProgram = "systrayhelper";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/sysz/default.nix b/nixpkgs/pkgs/tools/misc/sysz/default.nix
index bf45983c106a..37b34aec2d27 100644
--- a/nixpkgs/pkgs/tools/misc/sysz/default.nix
+++ b/nixpkgs/pkgs/tools/misc/sysz/default.nix
@@ -29,5 +29,6 @@ stdenvNoCC.mkDerivation rec {
     maintainers = with maintainers; [ hleboulanger ];
     platforms = platforms.unix;
     changelog = "https://github.com/joehillen/sysz/blob/${version}/CHANGELOG.md";
+    mainProgram = "sysz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/szyszka/default.nix b/nixpkgs/pkgs/tools/misc/szyszka/default.nix
index 58d839acf078..335bc81febe0 100644
--- a/nixpkgs/pkgs/tools/misc/szyszka/default.nix
+++ b/nixpkgs/pkgs/tools/misc/szyszka/default.nix
@@ -43,5 +43,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/qarmin/szyszka";
     license = licenses.mit;
     maintainers = with maintainers; [ kranzes ];
+    mainProgram = "szyszka";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/t/default.nix b/nixpkgs/pkgs/tools/misc/t/default.nix
index dd0eda67ce55..4d0c961847ce 100644
--- a/nixpkgs/pkgs/tools/misc/t/default.nix
+++ b/nixpkgs/pkgs/tools/misc/t/default.nix
@@ -13,5 +13,6 @@ bundlerApp {
     license     = licenses.asl20;
     maintainers = with maintainers; [ offline manveru nicknovitski ];
     platforms   = platforms.unix;
+    mainProgram = "t";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/t1utils/default.nix b/nixpkgs/pkgs/tools/misc/t1utils/default.nix
index 8e91013521fb..be9cf659160b 100644
--- a/nixpkgs/pkgs/tools/misc/t1utils/default.nix
+++ b/nixpkgs/pkgs/tools/misc/t1utils/default.nix
@@ -20,9 +20,12 @@ stdenv.mkDerivation rec {
       file from a PFA or PFB font.
     '';
     homepage = "https://www.lcdf.org/type/";
-    # README from tarball says "BSD-like" and points to non-existing LICENSE
-    # file...
-    license = "Click"; # MIT with extra clause, https://github.com/kohler/t1utils/blob/master/LICENSE
+    license = {
+      shortName = "Click"; # README.md says BSD-like, see LICENSE
+      url = "https://github.com/kohler/t1utils/blob/master/LICENSE";
+      free = true;
+      redistributable = true;
+    };
     platforms = platforms.all;
     maintainers = [ maintainers.bjornfor ];
   };
diff --git a/nixpkgs/pkgs/tools/misc/tagref/default.nix b/nixpkgs/pkgs/tools/misc/tagref/default.nix
index 67745de84f2a..df393571d380 100644
--- a/nixpkgs/pkgs/tools/misc/tagref/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tagref/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = [ maintainers.yusdacra ];
     platforms = platforms.unix;
+    mainProgram = "tagref";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tailer/default.nix b/nixpkgs/pkgs/tools/misc/tailer/default.nix
index f3c4d3545252..96631875f5a4 100644
--- a/nixpkgs/pkgs/tools/misc/tailer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tailer/default.nix
@@ -35,5 +35,6 @@ buildGoModule rec {
     homepage = "https://github.com/hionay/tailer";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "tailer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tailspin/default.nix b/nixpkgs/pkgs/tools/misc/tailspin/default.nix
index f6360061a5be..b46b25979a51 100644
--- a/nixpkgs/pkgs/tools/misc/tailspin/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tailspin/default.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "tailspin";
-  version = "2.1.0";
+  version = "2.2.0";
 
   src = fetchFromGitHub {
     owner = "bensadeh";
     repo = "tailspin";
     rev = version;
-    hash = "sha256-WsQpMmFTlAPg+9uEecMKfpys29cQ642IZ8yvsPxmCfo=";
+    hash = "sha256-ggh0y50yzqWQbjdP/weboEmo4CpfAGZmtt1WWLokpZ8=";
   };
 
-  cargoHash = "sha256-sttQ8fGRGdq7nDiG3/z/YEg2NA+miTwahGNv3yNnnds=";
+  cargoHash = "sha256-R67bHDGFxCStKKHTR820r0CjbrqjQ6evtnBMaqCDRYM=";
 
   meta = with lib; {
     description = "A log file highlighter";
diff --git a/nixpkgs/pkgs/tools/misc/taoup/default.nix b/nixpkgs/pkgs/tools/misc/taoup/default.nix
index 3924625f1313..4d991a88cf11 100644
--- a/nixpkgs/pkgs/tools/misc/taoup/default.nix
+++ b/nixpkgs/pkgs/tools/misc/taoup/default.nix
@@ -4,13 +4,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "taoup";
-  version = "1.1.19";
+  version = "1.21";
 
   src = fetchFromGitHub {
     owner = "globalcitizen";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-axMpQICvxWBlNJ5D06DYI7b4zFGeadfWFcpTN6lPvpg=";
+    hash = "sha256-UHo3c+DQn77CJONy/QXM55rpIdhVkJbhR82tqmUltPQ=";
   };
 
   buildInputs = [ rubyEnv bash ncurses ];
diff --git a/nixpkgs/pkgs/tools/misc/tbls/default.nix b/nixpkgs/pkgs/tools/misc/tbls/default.nix
index f9f334fb1036..9a3c99359548 100644
--- a/nixpkgs/pkgs/tools/misc/tbls/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tbls/default.nix
@@ -9,13 +9,13 @@
 
 buildGoModule rec {
   pname = "tbls";
-  version = "1.71.0";
+  version = "1.72.0";
 
   src = fetchFromGitHub {
     owner = "k1LoW";
     repo = "tbls";
     rev = "v${version}";
-    hash = "sha256-cV5t4gNhPODGzJoLZdft6/9gBBVio50BJKYEI24a8qg=";
+    hash = "sha256-FxG8vTbBMgFa+z1/8+ci7UxOfU88JynenZfVBh+0UPM=";
   };
 
   vendorHash = "sha256-1w1pQyHTuEJ1w01lJIZhXuEArFigjoFKGvi0cpFd8m0=";
@@ -52,5 +52,6 @@ buildGoModule rec {
     changelog = "https://github.com/k1LoW/tbls/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ azahi ];
+    mainProgram = "tbls";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tcat/default.nix b/nixpkgs/pkgs/tools/misc/tcat/default.nix
index 1f6c45f32dc1..5afa7e83affa 100644
--- a/nixpkgs/pkgs/tools/misc/tcat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tcat/default.nix
@@ -17,5 +17,6 @@ buildGoModule rec {
     homepage = "https://github.com/rsc/tcat";
     maintainers = with maintainers; [ mmlb ];
     license = licenses.bsd3;
+    mainProgram = "tcat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/td/default.nix b/nixpkgs/pkgs/tools/misc/td/default.nix
index bca5bd601d41..ebfe642a27d2 100644
--- a/nixpkgs/pkgs/tools/misc/td/default.nix
+++ b/nixpkgs/pkgs/tools/misc/td/default.nix
@@ -13,5 +13,6 @@ bundlerApp {
     license     = licenses.asl20;
     maintainers =  with maintainers; [ groodt nicknovitski ];
     platforms   = platforms.unix;
+    mainProgram = "td";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tdfgo/default.nix b/nixpkgs/pkgs/tools/misc/tdfgo/default.nix
index 91a0345c99f8..bd9603b5fa98 100644
--- a/nixpkgs/pkgs/tools/misc/tdfgo/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tdfgo/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     license = licenses.cc0;
     platforms = platforms.linux;
     maintainers = with maintainers; [ crinklywrappr ];
+    mainProgram = "tdfgo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tea/default.nix b/nixpkgs/pkgs/tools/misc/tea/default.nix
index 13bd0f8f2b3f..8e985c9ec13d 100644
--- a/nixpkgs/pkgs/tools/misc/tea/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tea/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     homepage    = "https://gitea.com/gitea/tea";
     license     = licenses.mit;
     maintainers = with maintainers; [ j4m3s techknowlogick ];
+    mainProgram = "tea";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/teamocil/default.nix b/nixpkgs/pkgs/tools/misc/teamocil/default.nix
index 5218453d15e3..4344668809ce 100644
--- a/nixpkgs/pkgs/tools/misc/teamocil/default.nix
+++ b/nixpkgs/pkgs/tools/misc/teamocil/default.nix
@@ -16,5 +16,6 @@ bundlerEnv {
       zachcoyle
       nicknovitski
     ];
+    mainProgram = "teamocil";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tensorman/default.nix b/nixpkgs/pkgs/tools/misc/tensorman/default.nix
index c5742b21afa4..b6f11d190c10 100644
--- a/nixpkgs/pkgs/tools/misc/tensorman/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tensorman/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage {
     homepage = "https://github.com/pop-os/tensorman";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ thefenriswolf ];
+    mainProgram = "tensorman";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tere/default.nix b/nixpkgs/pkgs/tools/misc/tere/default.nix
index a2a4a506bc0d..70bd03ccaa49 100644
--- a/nixpkgs/pkgs/tools/misc/tere/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tere/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/mgunyho/tere";
     license = licenses.eupl12;
     maintainers = with maintainers; [ ProducerMatt ];
+    mainProgram = "tere";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/termplay/default.nix b/nixpkgs/pkgs/tools/misc/termplay/default.nix
index 2d493b857fc1..aa35e24da017 100644
--- a/nixpkgs/pkgs/tools/misc/termplay/default.nix
+++ b/nixpkgs/pkgs/tools/misc/termplay/default.nix
@@ -35,5 +35,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ ];
     platforms = platforms.unix;
+    mainProgram = "termplay";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/termtosvg/default.nix b/nixpkgs/pkgs/tools/misc/termtosvg/default.nix
index 0f9816fe10e5..86217693a58f 100644
--- a/nixpkgs/pkgs/tools/misc/termtosvg/default.nix
+++ b/nixpkgs/pkgs/tools/misc/termtosvg/default.nix
@@ -16,5 +16,6 @@ python3Packages.buildPythonApplication rec {
     description = "Record terminal sessions as SVG animations";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ];
+    mainProgram = "termtosvg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tewisay/default.nix b/nixpkgs/pkgs/tools/misc/tewisay/default.nix
index 35b66a093683..f4ae05711285 100644
--- a/nixpkgs/pkgs/tools/misc/tewisay/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tewisay/default.nix
@@ -36,5 +36,6 @@ buildGoModule rec {
     description = "Cowsay replacement with unicode and partial ansi escape support";
     license = with licenses; [ cc0 ];
     maintainers = with maintainers; [ Madouura ];
+    mainProgram = "tewisay";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/texi2mdoc/default.nix b/nixpkgs/pkgs/tools/misc/texi2mdoc/default.nix
index 2b73c4f34dbb..94219a004250 100644
--- a/nixpkgs/pkgs/tools/misc/texi2mdoc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/texi2mdoc/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     platforms = platforms.all;
     maintainers = with maintainers; [ ramkromberg ];
+    mainProgram = "texi2mdoc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tfk8s/default.nix b/nixpkgs/pkgs/tools/misc/tfk8s/default.nix
index a694360db373..52795b754002 100644
--- a/nixpkgs/pkgs/tools/misc/tfk8s/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tfk8s/default.nix
@@ -44,5 +44,6 @@ buildGoModule rec {
     '';
     homepage = "https://github.com/jrhouston/tfk8s/";
     maintainers = with maintainers; [ bryanasdev000 ];
+    mainProgram = "tfk8s";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tgpt/default.nix b/nixpkgs/pkgs/tools/misc/tgpt/default.nix
index 6436e0be2050..cf100e5d33fd 100644
--- a/nixpkgs/pkgs/tools/misc/tgpt/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tgpt/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     changelog = "https://github.com/aandrew-me/tgpt/releases/tag/v${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "tgpt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/time-decode/default.nix b/nixpkgs/pkgs/tools/misc/time-decode/default.nix
index 5d6f3ed8a958..edd0eba43a24 100644
--- a/nixpkgs/pkgs/tools/misc/time-decode/default.nix
+++ b/nixpkgs/pkgs/tools/misc/time-decode/default.nix
@@ -33,5 +33,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/digitalsleuth/time_decode/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "time-decode";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/timelimit/default.nix b/nixpkgs/pkgs/tools/misc/timelimit/default.nix
index 01de2c01c878..534cd320bf1a 100644
--- a/nixpkgs/pkgs/tools/misc/timelimit/default.nix
+++ b/nixpkgs/pkgs/tools/misc/timelimit/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     platforms = platforms.all;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "timelimit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/timer/default.nix b/nixpkgs/pkgs/tools/misc/timer/default.nix
index 962ad1a6dd69..908127575e7a 100644
--- a/nixpkgs/pkgs/tools/misc/timer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/timer/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     homepage = "https://github.com/caarlos0/timer";
     license = licenses.mit;
     maintainers = with maintainers; [ zowoq caarlos0 ];
+    mainProgram = "timer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/timetagger_cli/default.nix b/nixpkgs/pkgs/tools/misc/timetagger_cli/default.nix
index 38b0cc88bb1e..f6204e2d8fe1 100644
--- a/nixpkgs/pkgs/tools/misc/timetagger_cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/timetagger_cli/default.nix
@@ -28,6 +28,7 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/almarklein/timetagger_cli";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ matthiasbeyer ];
+    mainProgram = "timetagger";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/misc/timidity/default.nix b/nixpkgs/pkgs/tools/misc/timidity/default.nix
index a8ccd27a89da..65d154476f02 100644
--- a/nixpkgs/pkgs/tools/misc/timidity/default.nix
+++ b/nixpkgs/pkgs/tools/misc/timidity/default.nix
@@ -92,5 +92,6 @@ stdenv.mkDerivation rec {
     description = "A software MIDI renderer";
     maintainers = [ maintainers.marcweber ];
     platforms = platforms.unix;
+    mainProgram = "timidity";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tio/default.nix b/nixpkgs/pkgs/tools/misc/tio/default.nix
index c179614cfae5..88e121368e66 100644
--- a/nixpkgs/pkgs/tools/misc/tio/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tio/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ yana ];
     platforms = platforms.unix;
+    mainProgram = "tio";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tldr/default.nix b/nixpkgs/pkgs/tools/misc/tldr/default.nix
index 01d50e5f7cf8..3d9655f114dc 100644
--- a/nixpkgs/pkgs/tools/misc/tldr/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tldr/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ taeer carlosdagos kbdharun];
     platforms = platforms.all;
+    mainProgram = "tldr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tmate/default.nix b/nixpkgs/pkgs/tools/misc/tmate/default.nix
index 1956f25fb97f..9e1cbdee1277 100644
--- a/nixpkgs/pkgs/tools/misc/tmate/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tmate/default.nix
@@ -55,5 +55,6 @@ stdenv.mkDerivation {
     license     = licenses.mit;
     platforms   = platforms.unix;
     maintainers = with maintainers; [ ck3d ];
+    mainProgram = "tmate";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tmpwatch/default.nix b/nixpkgs/pkgs/tools/misc/tmpwatch/default.nix
index 9d9bb853f2f9..873b7c0f6f0a 100644
--- a/nixpkgs/pkgs/tools/misc/tmpwatch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tmpwatch/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ vlstill ];
     platforms = platforms.unix;
+    mainProgram = "tmpwatch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tmux-cssh/default.nix b/nixpkgs/pkgs/tools/misc/tmux-cssh/default.nix
index c69853635e90..7da4293dc0c8 100644
--- a/nixpkgs/pkgs/tools/misc/tmux-cssh/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tmux-cssh/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation {
 
     platforms = lib.platforms.unix;
     maintainers = with lib.maintainers; [ zimbatm ];
+    mainProgram = "tmux-cssh";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tmux-mem-cpu-load/default.nix b/nixpkgs/pkgs/tools/misc/tmux-mem-cpu-load/default.nix
index e384f0f72d7b..1e197ef162ea 100644
--- a/nixpkgs/pkgs/tools/misc/tmux-mem-cpu-load/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tmux-mem-cpu-load/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ thomasjm ];
     platforms = platforms.all;
+    mainProgram = "tmux-mem-cpu-load";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tmux-sessionizer/default.nix b/nixpkgs/pkgs/tools/misc/tmux-sessionizer/default.nix
index 0c0075b2a6b5..e0e8dd9efb4b 100644
--- a/nixpkgs/pkgs/tools/misc/tmux-sessionizer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tmux-sessionizer/default.nix
@@ -28,5 +28,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/jrmoulton/tmux-sessionizer";
     license = licenses.mit;
     maintainers = with maintainers; [ vinnymeller ];
+    mainProgram = "tms";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tmuxinator/default.nix b/nixpkgs/pkgs/tools/misc/tmuxinator/default.nix
index 239f3cc2e7eb..379430761399 100644
--- a/nixpkgs/pkgs/tools/misc/tmuxinator/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tmuxinator/default.nix
@@ -49,5 +49,6 @@ buildRubyGem rec {
     license     = licenses.mit;
     maintainers = with maintainers; [ auntie ericsagnes ];
     platforms   = platforms.unix;
+    mainProgram = "tmuxinator";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tmuxp/default.nix b/nixpkgs/pkgs/tools/misc/tmuxp/default.nix
index cd80aa3495cb..8babec312268 100644
--- a/nixpkgs/pkgs/tools/misc/tmuxp/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tmuxp/default.nix
@@ -38,5 +38,6 @@ python3Packages.buildPythonApplication rec {
     changelog = "https://github.com/tmux-python/tmuxp/raw/v${version}/CHANGES";
     license = licenses.mit;
     maintainers = with maintainers; [ peterhoeg ];
+    mainProgram = "tmuxp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/toastify/default.nix b/nixpkgs/pkgs/tools/misc/toastify/default.nix
index 6b853bc0b299..2de5877c0f05 100644
--- a/nixpkgs/pkgs/tools/misc/toastify/default.nix
+++ b/nixpkgs/pkgs/tools/misc/toastify/default.nix
@@ -27,5 +27,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/hoodie/toastify/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ colemickens ];
+    mainProgram = "toastify";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/toilet/default.nix b/nixpkgs/pkgs/tools/misc/toilet/default.nix
index d67383e4d521..8fdeb8b40739 100644
--- a/nixpkgs/pkgs/tools/misc/toilet/default.nix
+++ b/nixpkgs/pkgs/tools/misc/toilet/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.wtfpl;
     maintainers = with maintainers; [ pSub ];
     platforms = platforms.all;
+    mainProgram = "toilet";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/topgrade/default.nix b/nixpkgs/pkgs/tools/misc/topgrade/default.nix
index 757cb69cbb0b..24ed027b841a 100644
--- a/nixpkgs/pkgs/tools/misc/topgrade/default.nix
+++ b/nixpkgs/pkgs/tools/misc/topgrade/default.nix
@@ -52,5 +52,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/topgrade-rs/topgrade/releases/tag/v${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ SuperSandro2000 xyenon ];
+    mainProgram = "topgrade";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/topicctl/default.nix b/nixpkgs/pkgs/tools/misc/topicctl/default.nix
index b0496914b354..ca5f4fa89d88 100644
--- a/nixpkgs/pkgs/tools/misc/topicctl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/topicctl/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     inherit (src.meta) homepage;
     license = licenses.mit;
     maintainers = with maintainers; [ eskytthe srhb ];
+    mainProgram = "topicctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/torrenttools/default.nix b/nixpkgs/pkgs/tools/misc/torrenttools/default.nix
index f8da452c52f7..0fa5dbffafbb 100644
--- a/nixpkgs/pkgs/tools/misc/torrenttools/default.nix
+++ b/nixpkgs/pkgs/tools/misc/torrenttools/default.nix
@@ -95,5 +95,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ azahi ];
     platforms = platforms.unix;
+    mainProgram = "torrenttools";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/traefik-certs-dumper/default.nix b/nixpkgs/pkgs/tools/misc/traefik-certs-dumper/default.nix
index 410f85de4d12..18ed06c630ed 100644
--- a/nixpkgs/pkgs/tools/misc/traefik-certs-dumper/default.nix
+++ b/nixpkgs/pkgs/tools/misc/traefik-certs-dumper/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     homepage = "https://github.com/ldez/traefik-certs-dumper";
     license = licenses.asl20;
     maintainers = with maintainers; [ nickcao ];
+    mainProgram = "traefik-certs-dumper";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/trash-cli/default.nix b/nixpkgs/pkgs/tools/misc/trash-cli/default.nix
index 87f36a082b6a..7b1e286a8ebd 100644
--- a/nixpkgs/pkgs/tools/misc/trash-cli/default.nix
+++ b/nixpkgs/pkgs/tools/misc/trash-cli/default.nix
@@ -2,13 +2,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "trash-cli";
-  version = "0.23.9.23";
+  version = "0.23.11.10";
 
   src = fetchFromGitHub {
     owner = "andreafrancia";
     repo = "trash-cli";
     rev = version;
-    hash = "sha256-EbW7P9fl7CDA6etOba7qcOtcxB2GkCd+zoi+NW0ZP9c=";
+    hash = "sha256-bP1x+yYAsPQ1vXS3rmHD11UiJ7r/02akb84hr+o8JLs=";
   };
 
   propagatedBuildInputs = with python3Packages; [ psutil six ];
diff --git a/nixpkgs/pkgs/tools/misc/triehash/default.nix b/nixpkgs/pkgs/tools/misc/triehash/default.nix
index b916214fab52..9e70db4114a5 100644
--- a/nixpkgs/pkgs/tools/misc/triehash/default.nix
+++ b/nixpkgs/pkgs/tools/misc/triehash/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     license = with licenses; mit;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = perlPackages.perl.meta.platforms;
+    mainProgram = "triehash";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ttchat/default.nix b/nixpkgs/pkgs/tools/misc/ttchat/default.nix
index 46d366dee379..5aad1527df42 100644
--- a/nixpkgs/pkgs/tools/misc/ttchat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ttchat/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/atye/ttchat";
     license = licenses.asl20;
     maintainers = with maintainers; [ wolfangaukang ];
+    mainProgram = "ttchat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ttmkfdir/default.nix b/nixpkgs/pkgs/tools/misc/ttmkfdir/default.nix
index 47ff95c14f5f..6edf9cc4ef98 100644
--- a/nixpkgs/pkgs/tools/misc/ttmkfdir/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ttmkfdir/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation {
   meta = {
     description = "Create fonts.dir for TTF font directory";
     platforms = lib.platforms.linux;
+    mainProgram = "ttmkfdir";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tty-clock/default.nix b/nixpkgs/pkgs/tools/misc/tty-clock/default.nix
index 03be10bf10b6..32701caa64de 100644
--- a/nixpkgs/pkgs/tools/misc/tty-clock/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tty-clock/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     description = "Digital clock in ncurses";
     platforms = platforms.all;
     maintainers = [ maintainers.koral ];
+    mainProgram = "tty-clock";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ttygif/default.nix b/nixpkgs/pkgs/tools/misc/ttygif/default.nix
index d9a97f6c2350..689138186cb6 100644
--- a/nixpkgs/pkgs/tools/misc/ttygif/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ttygif/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.mit;
     maintainers = with maintainers; [ moaxcp ];
+    mainProgram = "ttygif";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ttylog/default.nix b/nixpkgs/pkgs/tools/misc/ttylog/default.nix
index ae521167431d..ca90481ba9e6 100644
--- a/nixpkgs/pkgs/tools/misc/ttylog/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ttylog/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl2;
     platforms = platforms.linux;
+    mainProgram = "ttylog";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ttyplot/default.nix b/nixpkgs/pkgs/tools/misc/ttyplot/default.nix
index 3778048143be..594c6de654af 100644
--- a/nixpkgs/pkgs/tools/misc/ttyplot/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ttyplot/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/tenox7/ttyplot";
     license = licenses.unlicense;
     maintainers = with maintainers; [ lassulus ];
+    mainProgram = "ttyplot";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tvnamer/default.nix b/nixpkgs/pkgs/tools/misc/tvnamer/default.nix
index a2d5c9e87a4a..ba3a91bcde16 100644
--- a/nixpkgs/pkgs/tools/misc/tvnamer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tvnamer/default.nix
@@ -48,5 +48,6 @@ pypkgs.buildPythonApplication rec {
     homepage = "https://github.com/dbr/tvnamer";
     license = licenses.unlicense;
     maintainers = with maintainers; [ peterhoeg ];
+    mainProgram = "tvnamer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/twitch-dl/default.nix b/nixpkgs/pkgs/tools/misc/twitch-dl/default.nix
index e42e26a989aa..8364acb20eb8 100644
--- a/nixpkgs/pkgs/tools/misc/twitch-dl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/twitch-dl/default.nix
@@ -49,5 +49,6 @@ python3Packages.buildPythonApplication rec {
     changelog = "https://github.com/ihabunek/twitch-dl/blob/${version}/CHANGELOG.md";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ marsam ];
+    mainProgram = "twitch-dl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/twm/default.nix b/nixpkgs/pkgs/tools/misc/twm/default.nix
index 3f08d53fd454..79c3584ca9ca 100644
--- a/nixpkgs/pkgs/tools/misc/twm/default.nix
+++ b/nixpkgs/pkgs/tools/misc/twm/default.nix
@@ -29,5 +29,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/vinnymeller/twm/releases/tag/v${version}";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ vinnymeller ];
+    mainProgram = "twm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/twspace-crawler/default.nix b/nixpkgs/pkgs/tools/misc/twspace-crawler/default.nix
index df1ef6e6e2c2..34a1c72e2048 100644
--- a/nixpkgs/pkgs/tools/misc/twspace-crawler/default.nix
+++ b/nixpkgs/pkgs/tools/misc/twspace-crawler/default.nix
@@ -19,5 +19,6 @@ buildNpmPackage rec {
     changelog = "https://github.com/HitomaruKonpaku/twspace-crawler/blob/${src.rev}/CHANGELOG.md";
     license = licenses.isc;
     maintainers = [ maintainers.marsam ];
+    mainProgram = "twspace-crawler";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/twurl/default.nix b/nixpkgs/pkgs/tools/misc/twurl/default.nix
index dccb67fbaf6c..ff332e88de91 100644
--- a/nixpkgs/pkgs/tools/misc/twurl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/twurl/default.nix
@@ -13,5 +13,6 @@ bundlerApp {
     license     = "MIT";
     maintainers = with maintainers; [ brecht ];
     platforms   = platforms.unix;
+    mainProgram = "twurl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/txtw/default.nix b/nixpkgs/pkgs/tools/misc/txtw/default.nix
index e8a14b57634a..9f8783491b11 100644
--- a/nixpkgs/pkgs/tools/misc/txtw/default.nix
+++ b/nixpkgs/pkgs/tools/misc/txtw/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ lihop ];
     license = licenses.unlicense;
     platforms = platforms.linux;
+    mainProgram = "txtw";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tydra/default.nix b/nixpkgs/pkgs/tools/misc/tydra/default.nix
index fd8e8e6ee5a8..551519695c43 100644
--- a/nixpkgs/pkgs/tools/misc/tydra/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tydra/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/Mange/tydra";
     license = licenses.mit;
     maintainers = with maintainers; [ Br1ght0ne ];
+    mainProgram = "tydra";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/tz/default.nix b/nixpkgs/pkgs/tools/misc/tz/default.nix
index c86d8a48c4ee..58cf17384ee3 100644
--- a/nixpkgs/pkgs/tools/misc/tz/default.nix
+++ b/nixpkgs/pkgs/tools/misc/tz/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/oz/tz";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ siraben ];
+    mainProgram = "tz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ugs/default.nix b/nixpkgs/pkgs/tools/misc/ugs/default.nix
index aae9daddae9e..395a9e42009c 100644
--- a/nixpkgs/pkgs/tools/misc/ugs/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ugs/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.gpl3;
     platforms = platforms.all;
+    mainProgram = "ugs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/uhubctl/default.nix b/nixpkgs/pkgs/tools/misc/uhubctl/default.nix
index 39db9c09785f..e148e03f820e 100644
--- a/nixpkgs/pkgs/tools/misc/uhubctl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/uhubctl/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ prusnak ];
     platforms = with platforms; linux ++ darwin;
+    mainProgram = "uhubctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/umlet/default.nix b/nixpkgs/pkgs/tools/misc/umlet/default.nix
index 67cf61ebe5a1..b9d3e5d31538 100644
--- a/nixpkgs/pkgs/tools/misc/umlet/default.nix
+++ b/nixpkgs/pkgs/tools/misc/umlet/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3;
     maintainers = with maintainers; [ oxzi ];
     platforms = platforms.all;
+    mainProgram = "umlet";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/unclutter/default.nix b/nixpkgs/pkgs/tools/misc/unclutter/default.nix
index b11df6655bf3..5d711c5fd03d 100644
--- a/nixpkgs/pkgs/tools/misc/unclutter/default.nix
+++ b/nixpkgs/pkgs/tools/misc/unclutter/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ domenkozar ];
     platforms = platforms.unix;
     license = lib.licenses.publicDomain;
+    mainProgram = "unclutter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/undocker/default.nix b/nixpkgs/pkgs/tools/misc/undocker/default.nix
index f80642f1e812..a2ce7dfb7aa1 100644
--- a/nixpkgs/pkgs/tools/misc/undocker/default.nix
+++ b/nixpkgs/pkgs/tools/misc/undocker/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     description = "A CLI tool to convert a Docker image to a flattened rootfs tarball";
     license = licenses.asl20;
     maintainers = with maintainers; [ jordanisaacs ];
+    mainProgram = "undocker";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/unparam/default.nix b/nixpkgs/pkgs/tools/misc/unparam/default.nix
index 3f87e0edd64b..6578f08c59ae 100644
--- a/nixpkgs/pkgs/tools/misc/unparam/default.nix
+++ b/nixpkgs/pkgs/tools/misc/unparam/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     homepage = "https://github.com/mvdan/unparam";
     license = licenses.bsd3;
     maintainers = with maintainers; [ SuperSandro2000 ];
+    mainProgram = "unparam";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/up/default.nix b/nixpkgs/pkgs/tools/misc/up/default.nix
index d9ce59f96572..9fa0c700b8c3 100644
--- a/nixpkgs/pkgs/tools/misc/up/default.nix
+++ b/nixpkgs/pkgs/tools/misc/up/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/akavel/up";
     maintainers = with maintainers; [ ma27 ];
     license = licenses.asl20;
+    mainProgram = "up";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/url-parser/default.nix b/nixpkgs/pkgs/tools/misc/url-parser/default.nix
index 418e35b03a9d..ae74dc7396f2 100644
--- a/nixpkgs/pkgs/tools/misc/url-parser/default.nix
+++ b/nixpkgs/pkgs/tools/misc/url-parser/default.nix
@@ -29,5 +29,6 @@ buildGoModule rec {
     changelog = "https://github.com/thegeeklab/url-parser/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar ];
+    mainProgram = "url-parser";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/urlencode/default.nix b/nixpkgs/pkgs/tools/misc/urlencode/default.nix
index 896f77398bd1..6b8097a6b527 100644
--- a/nixpkgs/pkgs/tools/misc/urlencode/default.nix
+++ b/nixpkgs/pkgs/tools/misc/urlencode/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/dead10ck/urlencode";
     license = licenses.mit;
     maintainers = with maintainers; [ l0b0 ];
+    mainProgram = "urlencode";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/usbimager/default.nix b/nixpkgs/pkgs/tools/misc/usbimager/default.nix
index ff4dea4a8c9e..b845062c1783 100644
--- a/nixpkgs/pkgs/tools/misc/usbimager/default.nix
+++ b/nixpkgs/pkgs/tools/misc/usbimager/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     platforms = with platforms; linux;
     # never built on aarch64-linux since first introduction in nixpkgs
     broken = stdenv.isLinux && stdenv.isAarch64;
+    mainProgram = "usbimager";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/usbmuxd/default.nix b/nixpkgs/pkgs/tools/misc/usbmuxd/default.nix
index 2e9c2318081e..5a391762cd08 100644
--- a/nixpkgs/pkgs/tools/misc/usbmuxd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/usbmuxd/default.nix
@@ -52,5 +52,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ infinisil ];
+    mainProgram = "usbmuxd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/usbmuxd2/default.nix b/nixpkgs/pkgs/tools/misc/usbmuxd2/default.nix
index 18014b60371f..fae54b4ec18c 100644
--- a/nixpkgs/pkgs/tools/misc/usbmuxd2/default.nix
+++ b/nixpkgs/pkgs/tools/misc/usbmuxd2/default.nix
@@ -90,5 +90,6 @@ clangStdenv.mkDerivation rec {
     license = licenses.lgpl3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ onny ];
+    mainProgram = "usbmuxd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/usbview/default.nix b/nixpkgs/pkgs/tools/misc/usbview/default.nix
index 2f417ea86de5..71a4ddeefd8d 100644
--- a/nixpkgs/pkgs/tools/misc/usbview/default.nix
+++ b/nixpkgs/pkgs/tools/misc/usbview/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     homepage = "http://www.kroah.com/linux-usb/";
     maintainers = with maintainers; [ shamilton ];
     platforms = platforms.linux;
+    mainProgram = "usbview";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/uwufetch/default.nix b/nixpkgs/pkgs/tools/misc/uwufetch/default.nix
index f86320a59b32..a7241e6488be 100644
--- a/nixpkgs/pkgs/tools/misc/uwufetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/uwufetch/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ lourkeur ];
+    mainProgram = "uwufetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/uwuify/default.nix b/nixpkgs/pkgs/tools/misc/uwuify/default.nix
index 2722610d0e3f..abcf5e9b23da 100644
--- a/nixpkgs/pkgs/tools/misc/uwuify/default.nix
+++ b/nixpkgs/pkgs/tools/misc/uwuify/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     platforms = lib.platforms.x86; # uses SSE instructions
     maintainers = with maintainers; [ siraben ];
+    mainProgram = "uwuify";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/valeronoi/default.nix b/nixpkgs/pkgs/tools/misc/valeronoi/default.nix
index 8fda179b3042..c7321b301520 100644
--- a/nixpkgs/pkgs/tools/misc/valeronoi/default.nix
+++ b/nixpkgs/pkgs/tools/misc/valeronoi/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ nova-madeline maeve ];
+    mainProgram = "valeronoi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vcs_query/default.nix b/nixpkgs/pkgs/tools/misc/vcs_query/default.nix
index 7e1387df1f82..ccfdc62b1296 100644
--- a/nixpkgs/pkgs/tools/misc/vcs_query/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vcs_query/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     description = "eMail query-command to use vCards in mutt and Vim";
     license = licenses.mit;
     maintainers = with maintainers; [ ma27 ];
+    mainProgram = "vcs_query";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vector/default.nix b/nixpkgs/pkgs/tools/misc/vector/default.nix
index fe58e934f55f..ddd6e32e16d4 100644
--- a/nixpkgs/pkgs/tools/misc/vector/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vector/default.nix
@@ -46,6 +46,8 @@ rustPlatform.buildRustPackage {
     hash = "sha256-vK+k+VbUVgJ8idlvuod5ExAkkeTYDk/135dyLRct0zs=";
   };
 
+  patches = [ ./vector-pr19075.patch ];
+
   cargoLock = {
     lockFile = ./Cargo.lock;
     outputHashes = {
diff --git a/nixpkgs/pkgs/tools/misc/vector/vector-pr19075.patch b/nixpkgs/pkgs/tools/misc/vector/vector-pr19075.patch
new file mode 100644
index 000000000000..96ab75edef37
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/vector/vector-pr19075.patch
@@ -0,0 +1,23 @@
+From 14cd9c12416b5c9ada55ced51e8f92fdce56a4b1 Mon Sep 17 00:00:00 2001
+From: Aaron Andersen <aaron@fosslib.net>
+Date: Tue, 7 Nov 2023 09:05:26 -0500
+Subject: [PATCH] fix(config): rustc warnings
+
+---
+ src/convert_config.rs | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/convert_config.rs b/src/convert_config.rs
+index f0a900cf421a0..d81b998c5ee1f 100644
+--- a/src/convert_config.rs
++++ b/src/convert_config.rs
+@@ -157,8 +157,7 @@ fn walk_dir_and_convert(
+             let new_output_dir = if entry_path.is_dir() {
+                 let last_component = entry_path
+                     .file_name()
+-                    .unwrap_or_else(|| panic!("Failed to get file_name for {entry_path:?}"))
+-                    .clone();
++                    .unwrap_or_else(|| panic!("Failed to get file_name for {entry_path:?}"));
+                 let new_dir = output_dir.join(last_component);
+ 
+                 if !new_dir.exists() {
diff --git a/nixpkgs/pkgs/tools/misc/veikk-linux-driver-gui/default.nix b/nixpkgs/pkgs/tools/misc/veikk-linux-driver-gui/default.nix
index a018604a84fc..28e3194f56ec 100644
--- a/nixpkgs/pkgs/tools/misc/veikk-linux-driver-gui/default.nix
+++ b/nixpkgs/pkgs/tools/misc/veikk-linux-driver-gui/default.nix
@@ -28,5 +28,6 @@ mkDerivation rec {
     license = licenses.gpl2Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ nicbk ];
+    mainProgram = "veikk-linux-driver-gui";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/via/default.nix b/nixpkgs/pkgs/tools/misc/via/default.nix
index 5fd808cd1d81..47f3df774378 100644
--- a/nixpkgs/pkgs/tools/misc/via/default.nix
+++ b/nixpkgs/pkgs/tools/misc/via/default.nix
@@ -37,5 +37,6 @@ appimageTools.wrapType2 {
     license = licenses.gpl3;
     maintainers = with maintainers; [ emilytrau ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "via";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/viddy/default.nix b/nixpkgs/pkgs/tools/misc/viddy/default.nix
index 37aa2acff036..280cf82c4b41 100644
--- a/nixpkgs/pkgs/tools/misc/viddy/default.nix
+++ b/nixpkgs/pkgs/tools/misc/viddy/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     homepage = "https://github.com/sachaos/viddy";
     license = licenses.mit;
     maintainers = with maintainers; [ j-hui ];
+    mainProgram = "viddy";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vimer/default.nix b/nixpkgs/pkgs/tools/misc/vimer/default.nix
index bbab2d64bb00..684ecfc5fe38 100644
--- a/nixpkgs/pkgs/tools/misc/vimer/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vimer/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.matthiasbeyer ];
     platforms = platforms.all;
+    mainProgram = "vimer";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/misc/vimwiki-markdown/default.nix b/nixpkgs/pkgs/tools/misc/vimwiki-markdown/default.nix
index 3375b86df0fc..b4200bede49c 100644
--- a/nixpkgs/pkgs/tools/misc/vimwiki-markdown/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vimwiki-markdown/default.nix
@@ -24,5 +24,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/WnP/vimwiki_markdown";
     license = licenses.mit;
     maintainers = with maintainers; [ seqizz ];
+    mainProgram = "vimwiki_markdown";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vivid/default.nix b/nixpkgs/pkgs/tools/misc/vivid/default.nix
index 01c432cd6a25..3115735ed9be 100644
--- a/nixpkgs/pkgs/tools/misc/vivid/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vivid/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = [ maintainers.dtzWill ];
     platforms = platforms.unix;
+    mainProgram = "vivid";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vix/default.nix b/nixpkgs/pkgs/tools/misc/vix/default.nix
index cf060218889a..9e759536d74c 100644
--- a/nixpkgs/pkgs/tools/misc/vix/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vix/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation {
     homepage = "http://actinid.org/vix/";
     license = licenses.gpl3;
     maintainers = [ maintainers.ehmry ];
+    mainProgram = "vix";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vmtouch/default.nix b/nixpkgs/pkgs/tools/misc/vmtouch/default.nix
index 276389205f05..120012019a72 100644
--- a/nixpkgs/pkgs/tools/misc/vmtouch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vmtouch/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.bsd3;
     maintainers = [ lib.maintainers.garrison ];
     platforms = lib.platforms.all;
+    mainProgram = "vmtouch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/void/default.nix b/nixpkgs/pkgs/tools/misc/void/default.nix
index 7057fed8ca13..1204206d34b6 100644
--- a/nixpkgs/pkgs/tools/misc/void/default.nix
+++ b/nixpkgs/pkgs/tools/misc/void/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/spacejam/void";
     license = licenses.gpl3;
     maintainers = with maintainers; [ spacekookie ];
+    mainProgram = "void";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vorbisgain/default.nix b/nixpkgs/pkgs/tools/misc/vorbisgain/default.nix
index b0b4e5e34e12..e5a85049df0a 100644
--- a/nixpkgs/pkgs/tools/misc/vorbisgain/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vorbisgain/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.unix;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "vorbisgain";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vrc-get/default.nix b/nixpkgs/pkgs/tools/misc/vrc-get/default.nix
index c0099d822e40..6026f9d6f734 100644
--- a/nixpkgs/pkgs/tools/misc/vrc-get/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vrc-get/default.nix
@@ -26,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/anatawa12/vrc-get";
     license = licenses.mit;
     maintainers = with maintainers; [ bddvlpr ];
+    mainProgram = "vrc-get";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vsh/default.nix b/nixpkgs/pkgs/tools/misc/vsh/default.nix
index cfe014d3f9aa..c061a14f2e30 100644
--- a/nixpkgs/pkgs/tools/misc/vsh/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vsh/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     homepage = "https://github.com/fishi0x01/vsh";
     license = licenses.mit;
     maintainers = with maintainers; [ fishi0x01 ];
+    mainProgram = "vsh";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vtm/default.nix b/nixpkgs/pkgs/tools/misc/vtm/default.nix
index a0acfcf7f7d6..ee7b301df861 100644
--- a/nixpkgs/pkgs/tools/misc/vtm/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vtm/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ ahuzik ];
+    mainProgram = "vtm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/vttest/default.nix b/nixpkgs/pkgs/tools/misc/vttest/default.nix
index 6b649cbb71d2..2eafd745263c 100644
--- a/nixpkgs/pkgs/tools/misc/vttest/default.nix
+++ b/nixpkgs/pkgs/tools/misc/vttest/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
     homepage = "https://invisible-island.net/vttest/";
     license = licenses.mit;
     platforms = platforms.all;
+    mainProgram = "vttest";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/misc/wagyu/default.nix b/nixpkgs/pkgs/tools/misc/wagyu/default.nix
index dfcefa56b6ff..39e1085d4c96 100644
--- a/nixpkgs/pkgs/tools/misc/wagyu/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wagyu/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/AleoHQ/wagyu";
     license = with licenses; [ mit asl20 ];
     maintainers = [ maintainers.offline ];
+    mainProgram = "wagyu";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/wakapi/default.nix b/nixpkgs/pkgs/tools/misc/wakapi/default.nix
index 66e4ca5125c1..9cf4efb0df33 100644
--- a/nixpkgs/pkgs/tools/misc/wakapi/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wakapi/default.nix
@@ -30,5 +30,6 @@ buildGoModule rec {
     description = "A minimalist self-hosted WakaTime-compatible backend for coding statistics";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ t4ccer ];
+    mainProgram = "wakapi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/wasm-tools/default.nix b/nixpkgs/pkgs/tools/misc/wasm-tools/default.nix
index 2249ea83d1ab..26d3d34e58c4 100644
--- a/nixpkgs/pkgs/tools/misc/wasm-tools/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wasm-tools/default.nix
@@ -26,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/bytecodealliance/wasm-tools";
     license = licenses.asl20;
     maintainers = with maintainers; [ ereslibre ];
+    mainProgram = "wasm-tools";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/watchexec/default.nix b/nixpkgs/pkgs/tools/misc/watchexec/default.nix
index a4d87973a242..e6b1a93f54c6 100644
--- a/nixpkgs/pkgs/tools/misc/watchexec/default.nix
+++ b/nixpkgs/pkgs/tools/misc/watchexec/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "watchexec";
-  version = "1.22.2";
+  version = "1.23.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-dO1vIzjsBrrMQ0H3Yv4X5rYPlCrWSlPbFmyooaODPeo=";
+    sha256 = "sha256-Lm0UWx4f57lo6rnolQp3x03tLYBsPgMx50RP3sKufek=";
   };
 
-  cargoHash = "sha256-6bLY9m6g7hSlYI3KrLS3fN4ATRkkbtq3Wf5xqS1G30s=";
+  cargoHash = "sha256-kkmELD9886/NRuYfAT9OTRa9CUNazdG4E9/D3djgk5E=";
 
   nativeBuildInputs = [ installShellFiles ];
 
@@ -35,5 +35,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://watchexec.github.io/";
     license = with licenses; [ asl20 ];
     maintainers = [ maintainers.michalrus ];
+    mainProgram = "watchexec";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/wayback-machine-archiver/default.nix b/nixpkgs/pkgs/tools/misc/wayback-machine-archiver/default.nix
index 71c0b63ad8e9..c3ebc937eb35 100644
--- a/nixpkgs/pkgs/tools/misc/wayback-machine-archiver/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wayback-machine-archiver/default.nix
@@ -27,5 +27,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/agude/wayback-machine-archiver";
     license = licenses.mit;
     maintainers = with maintainers; [ dandellion ];
+    mainProgram = "archiver";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/waylevel/default.nix b/nixpkgs/pkgs/tools/misc/waylevel/default.nix
index 78ebcf6c5a6e..b3b1ddfeeebf 100644
--- a/nixpkgs/pkgs/tools/misc/waylevel/default.nix
+++ b/nixpkgs/pkgs/tools/misc/waylevel/default.nix
@@ -26,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ dit7ya ];
     platforms = platforms.linux;
+    mainProgram = "waylevel";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/webcat/default.nix b/nixpkgs/pkgs/tools/misc/webcat/default.nix
index 52b9e78bccaa..7c8c56dc86c1 100644
--- a/nixpkgs/pkgs/tools/misc/webcat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/webcat/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     description = "The lightweight swiss army knife for websockets";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ montag451 ];
+    mainProgram = "webcat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/websocat/default.nix b/nixpkgs/pkgs/tools/misc/websocat/default.nix
index cfc225ea75f8..baef5b264502 100644
--- a/nixpkgs/pkgs/tools/misc/websocat/default.nix
+++ b/nixpkgs/pkgs/tools/misc/websocat/default.nix
@@ -37,5 +37,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/vi/websocat/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ thoughtpolice Br1ght0ne ];
+    mainProgram = "websocat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/wemux/default.nix b/nixpkgs/pkgs/tools/misc/wemux/default.nix
index 0eee60187f20..99adf8bb0823 100644
--- a/nixpkgs/pkgs/tools/misc/wemux/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wemux/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ bsima ];
+    mainProgram = "wemux";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/wit-bindgen/default.nix b/nixpkgs/pkgs/tools/misc/wit-bindgen/default.nix
index 990b51e3bf80..5cedb1b89922 100644
--- a/nixpkgs/pkgs/tools/misc/wit-bindgen/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wit-bindgen/default.nix
@@ -5,16 +5,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "wit-bindgen";
-  version = "0.13.0";
+  version = "0.14.0";
 
   src = fetchFromGitHub {
     owner = "bytecodealliance";
     repo = "wit-bindgen";
     rev = "wit-bindgen-cli-${version}";
-    hash = "sha256-IFMnuXHL8NVHxkV7oXM6WTE+LMZ2D4g1VdDv0J5V72A=";
+    hash = "sha256-yPmjlINQAXnzYtGVdNiJ/DEL4Xz2AtQxq5EXl5nWR08=";
   };
 
-  cargoHash = "sha256-9aocnv4msQ2/aIvN1HymKSuBxrtwdR9i31e7thtMh/k=";
+  cargoHash = "sha256-wROV2erysHrHJdbAy74z04ZCdlGHoICX8tKzKj2cq3E=";
 
   # 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/tools/misc/wlc/default.nix b/nixpkgs/pkgs/tools/misc/wlc/default.nix
index 73ae91c2e985..acd6eb5f3724 100644
--- a/nixpkgs/pkgs/tools/misc/wlc/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wlc/default.nix
@@ -32,5 +32,6 @@ buildPythonPackage rec {
     homepage = "https://github.com/WeblateOrg/wlc";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ paperdigits ];
+    mainProgram = "wlc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/woeusb/default.nix b/nixpkgs/pkgs/tools/misc/woeusb/default.nix
index a1d371eafd49..9add255896f7 100644
--- a/nixpkgs/pkgs/tools/misc/woeusb/default.nix
+++ b/nixpkgs/pkgs/tools/misc/woeusb/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ bjornfor ];
     platforms = platforms.linux;
+    mainProgram = "woeusb";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/woof/default.nix b/nixpkgs/pkgs/tools/misc/woof/default.nix
index c958d9f65a67..b73ad5615dd0 100644
--- a/nixpkgs/pkgs/tools/misc/woof/default.nix
+++ b/nixpkgs/pkgs/tools/misc/woof/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation {
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.unix;
     maintainers = with maintainers; [ matthiasbeyer ];
+    mainProgram = "woof";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/wootility/default.nix b/nixpkgs/pkgs/tools/misc/wootility/default.nix
index ddb3c770e641..a4f3cb2f92d8 100644
--- a/nixpkgs/pkgs/tools/misc/wootility/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wootility/default.nix
@@ -34,5 +34,6 @@ appimageTools.wrapType2 rec {
     platforms = [ "x86_64-linux" ];
     license = "unknown";
     maintainers = with maintainers; [ davidtwco ];
+    mainProgram = "wootility";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/wsl-open/default.nix b/nixpkgs/pkgs/tools/misc/wsl-open/default.nix
index e89ef91b4f9e..e4698ccbabd0 100644
--- a/nixpkgs/pkgs/tools/misc/wsl-open/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wsl-open/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ SuperSandro2000 ];
+    mainProgram = "wsl-open";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/wwcd/default.nix b/nixpkgs/pkgs/tools/misc/wwcd/default.nix
index 41c66d945f40..0e83ada195b0 100644
--- a/nixpkgs/pkgs/tools/misc/wwcd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wwcd/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     homepage = "https://git.sr.ht/~bitfehler/wwcd";
     license = licenses.mit;
     maintainers = with maintainers; [ laalsaas ];
+    mainProgram = "wwcd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/wyrd/default.nix b/nixpkgs/pkgs/tools/misc/wyrd/default.nix
index df8b4933aa69..4010a0b42d0f 100644
--- a/nixpkgs/pkgs/tools/misc/wyrd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/wyrd/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.prikhi ];
     platforms = platforms.linux;
+    mainProgram = "wyrd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/x11idle/default.nix b/nixpkgs/pkgs/tools/misc/x11idle/default.nix
index ee64f69897d2..e349b54eecae 100644
--- a/nixpkgs/pkgs/tools/misc/x11idle/default.nix
+++ b/nixpkgs/pkgs/tools/misc/x11idle/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.linux;
     maintainers = [ maintainers.swflint ];
+    mainProgram = "x11idle";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xcd/default.nix b/nixpkgs/pkgs/tools/misc/xcd/default.nix
index 7e3402104192..350da6c93925 100644
--- a/nixpkgs/pkgs/tools/misc/xcd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xcd/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.xfnw ];
     license = licenses.mit;
     platforms = platforms.unix;
+    mainProgram = "xcd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xcp/default.nix b/nixpkgs/pkgs/tools/misc/xcp/default.nix
index 9b06c11890dc..78282ece53d8 100644
--- a/nixpkgs/pkgs/tools/misc/xcp/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xcp/default.nix
@@ -2,24 +2,25 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "xcp";
-  version = "0.12.0";
+  version = "0.12.1";
 
   src = fetchFromGitHub {
     owner = "tarka";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-QCoH8N6HDpXQXWchccGIG/pbDx9qZ8YKM6VP6lxoYzU=";
+    sha256 = "sha256-P+KrqimZwbUVNAD5P+coBDSjqNnq18g/wSlhT8tWrkA=";
   };
 
   # no such file or directory errors
   doCheck = false;
 
-  cargoHash = "sha256-F51BHBUaQx1xg0Y2eVnXGRCMykbzk3q5IyJ528JyA5o=";
+  cargoHash = "sha256-ULHS2uOFh8y011qs51zQQUkq7drqD5TlQkMLAaJsFx8=";
 
   meta = with lib; {
     description = "An extended cp(1)";
     homepage = "https://github.com/tarka/xcp";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ lom ];
+    mainProgram = "xcp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xdaliclock/default.nix b/nixpkgs/pkgs/tools/misc/xdaliclock/default.nix
index 73e648cf83c5..7201ffcbbe99 100644
--- a/nixpkgs/pkgs/tools/misc/xdaliclock/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xdaliclock/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     platforms = with platforms; linux ++ freebsd;
     license = licenses.free; #TODO BSD on Gentoo, looks like MIT
     downloadPage = "http://www.jwz.org/xdaliclock/";
+    mainProgram = "xdaliclock";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xdg-ninja/default.nix b/nixpkgs/pkgs/tools/misc/xdg-ninja/default.nix
index a92a279a141f..351a7c0e8c0c 100644
--- a/nixpkgs/pkgs/tools/misc/xdg-ninja/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xdg-ninja/default.nix
@@ -32,5 +32,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ arcuru ];
+    mainProgram = "xdg-ninja";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xdiskusage/default.nix b/nixpkgs/pkgs/tools/misc/xdiskusage/default.nix
index 28620f3bf6ef..9db3563ca247 100644
--- a/nixpkgs/pkgs/tools/misc/xdiskusage/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xdiskusage/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = with lib.licenses; [ gpl2Plus ];
     maintainers = with lib.maintainers; [ fuzzdk ];
     platforms = with lib.platforms; linux;
+    mainProgram = "xdiskusage";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/xdo/default.nix b/nixpkgs/pkgs/tools/misc/xdo/default.nix
index 31df9552accd..268dfcd66e04 100644
--- a/nixpkgs/pkgs/tools/misc/xdo/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xdo/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
      maintainers = with maintainers; [ meisternu ];
      license = licenses.bsd2;
      platforms = platforms.linux;
+     mainProgram = "xdo";
    };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xdxf2slob/default.nix b/nixpkgs/pkgs/tools/misc/xdxf2slob/default.nix
index a24f9196efb9..e23d68f8fccb 100644
--- a/nixpkgs/pkgs/tools/misc/xdxf2slob/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xdxf2slob/default.nix
@@ -18,5 +18,6 @@ python3Packages.buildPythonApplication {
     homepage = "https://github.com/itkach/xdxf2slob/";
     license = licenses.gpl3;
     platforms = platforms.all;
+    mainProgram = "xdxf2slob";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xflux/default.nix b/nixpkgs/pkgs/tools/misc/xflux/default.nix
index 55a72dc4a734..5cfda2df174f 100644
--- a/nixpkgs/pkgs/tools/misc/xflux/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xflux/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation {
     license = lib.licenses.unfree;
     platforms = lib.platforms.linux;
     maintainers = [ lib.maintainers.paholg ];
+    mainProgram = "xflux";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xfstests/default.nix b/nixpkgs/pkgs/tools/misc/xfstests/default.nix
index e06aa0cc5725..c894f3b9f32e 100644
--- a/nixpkgs/pkgs/tools/misc/xfstests/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xfstests/default.nix
@@ -107,5 +107,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.dezgeg ];
     platforms = platforms.linux;
+    mainProgram = "xfstests-check";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xiccd/default.nix b/nixpkgs/pkgs/tools/misc/xiccd/default.nix
index 7569045fa4f1..4ffb5b689e3b 100644
--- a/nixpkgs/pkgs/tools/misc/xiccd/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xiccd/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ abbradar ];
     platforms = platforms.linux;
+    mainProgram = "xiccd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xilinx-bootgen/default.nix b/nixpkgs/pkgs/tools/misc/xilinx-bootgen/default.nix
index f6619e025d3e..7f9fb0e2e175 100644
--- a/nixpkgs/pkgs/tools/misc/xilinx-bootgen/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xilinx-bootgen/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     platforms = platforms.linux;
     maintainers = [ maintainers.flokli ];
+    mainProgram = "bootgen";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xjobs/default.nix b/nixpkgs/pkgs/tools/misc/xjobs/default.nix
index 5edb365a3327..9dfa605fbc47 100644
--- a/nixpkgs/pkgs/tools/misc/xjobs/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xjobs/default.nix
@@ -61,5 +61,6 @@ stdenv.mkDerivation rec {
       It works similar to xargs, but starts several processes simultaneously
       and gives only one line of arguments to each utility call.
     '';
+    mainProgram = "xjobs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xmonad-log/default.nix b/nixpkgs/pkgs/tools/misc/xmonad-log/default.nix
index acd4a9e1d46d..9ba7941b45f7 100644
--- a/nixpkgs/pkgs/tools/misc/xmonad-log/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xmonad-log/default.nix
@@ -21,5 +21,6 @@ buildGoPackage rec {
     license = licenses.mit;
     platforms = platforms.unix;
     maintainers = with maintainers; [ joko ];
+    mainProgram = "xmonad-log";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xq/default.nix b/nixpkgs/pkgs/tools/misc/xq/default.nix
index c02321a6a7c3..129a572a40aa 100644
--- a/nixpkgs/pkgs/tools/misc/xq/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xq/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/MiSawa/xq";
     license = licenses.mit;
     maintainers = with maintainers; [ matthewcroughan ];
+    mainProgram = "xq";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xtitle/default.nix b/nixpkgs/pkgs/tools/misc/xtitle/default.nix
index e3454538bf84..94e650144956 100644
--- a/nixpkgs/pkgs/tools/misc/xtitle/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xtitle/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ meisternu ];
     license = "Custom";
     platforms = platforms.linux;
+    mainProgram = "xtitle";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/xxv/default.nix b/nixpkgs/pkgs/tools/misc/xxv/default.nix
index e5852e5f51b0..0068de3c9245 100644
--- a/nixpkgs/pkgs/tools/misc/xxv/default.nix
+++ b/nixpkgs/pkgs/tools/misc/xxv/default.nix
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     homepage    = "https://chrisvest.github.io/xxv/";
     license     = with licenses; [ gpl3 ];
     maintainers = with maintainers; [ lilyball ];
+    mainProgram = "xxv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/yafetch/default.nix b/nixpkgs/pkgs/tools/misc/yafetch/default.nix
index 4ebaea963c29..49611df587af 100644
--- a/nixpkgs/pkgs/tools/misc/yafetch/default.nix
+++ b/nixpkgs/pkgs/tools/misc/yafetch/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ivar ashley ];
     platforms = platforms.linux;
+    mainProgram = "yafetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/yai/default.nix b/nixpkgs/pkgs/tools/misc/yai/default.nix
index 916328cdcde6..958b88bc2297 100644
--- a/nixpkgs/pkgs/tools/misc/yai/default.nix
+++ b/nixpkgs/pkgs/tools/misc/yai/default.nix
@@ -34,5 +34,6 @@ buildGoModule rec {
     '';
     license = licenses.mit;
     maintainers = with maintainers; [ georgesalkhouri ];
+    mainProgram = "yai";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/yajsv/default.nix b/nixpkgs/pkgs/tools/misc/yajsv/default.nix
index aaeba02ae35e..d6293c74399d 100644
--- a/nixpkgs/pkgs/tools/misc/yajsv/default.nix
+++ b/nixpkgs/pkgs/tools/misc/yajsv/default.nix
@@ -29,5 +29,6 @@ buildGoModule {
     homepage = "https://github.com/neilpa/yajsv";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ rycee ];
+    mainProgram = "yajsv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/yank/default.nix b/nixpkgs/pkgs/tools/misc/yank/default.nix
index 9579b3fa3f50..50d883759130 100644
--- a/nixpkgs/pkgs/tools/misc/yank/default.nix
+++ b/nixpkgs/pkgs/tools/misc/yank/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.dochang ];
     platforms = platforms.unix;
+    mainProgram = "yank";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/misc/yle-dl/default.nix b/nixpkgs/pkgs/tools/misc/yle-dl/default.nix
index 8db40b7c0b2e..75855109e200 100644
--- a/nixpkgs/pkgs/tools/misc/yle-dl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/yle-dl/default.nix
@@ -33,5 +33,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dezgeg ];
     platforms = platforms.unix;
+    mainProgram = "yle-dl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/you-get/default.nix b/nixpkgs/pkgs/tools/misc/you-get/default.nix
index 3bccdf28df3c..225c37e4ba46 100644
--- a/nixpkgs/pkgs/tools/misc/you-get/default.nix
+++ b/nixpkgs/pkgs/tools/misc/you-get/default.nix
@@ -48,5 +48,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/soimort/you-get/raw/v${version}/CHANGELOG.rst";
     license = licenses.mit;
     maintainers = with maintainers; [ ryneeverett ];
+    mainProgram = "you-get";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/youtube-dl/default.nix b/nixpkgs/pkgs/tools/misc/youtube-dl/default.nix
index 4aee6bdeb5f5..77a6eceb8a2f 100644
--- a/nixpkgs/pkgs/tools/misc/youtube-dl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/youtube-dl/default.nix
@@ -91,5 +91,6 @@ buildPythonPackage rec {
     license = licenses.publicDomain;
     maintainers = with maintainers; [ bluescreen303 fpletz ];
     platforms = with platforms; linux ++ darwin;
+    mainProgram = "youtube-dl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ytarchive/default.nix b/nixpkgs/pkgs/tools/misc/ytarchive/default.nix
index 8cd082746447..d2c836402e50 100644
--- a/nixpkgs/pkgs/tools/misc/ytarchive/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ytarchive/default.nix
@@ -26,5 +26,6 @@ buildGoModule rec {
     description = "Garbage Youtube livestream downloader";
     license = licenses.mit;
     maintainers = [ maintainers.marsam ];
+    mainProgram = "ytarchive";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ytcast/default.nix b/nixpkgs/pkgs/tools/misc/ytcast/default.nix
index 163329a60da1..86a84e6c8d90 100644
--- a/nixpkgs/pkgs/tools/misc/ytcast/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ytcast/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     homepage = "https://github.com/MarcoLucidi01/ytcast";
     license = licenses.mit;
     maintainers = with maintainers; [ waelwindows ];
+    mainProgram = "ytcast";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ytfzf/default.nix b/nixpkgs/pkgs/tools/misc/ytfzf/default.nix
index 92b9864c3589..905c7776f1c2 100644
--- a/nixpkgs/pkgs/tools/misc/ytfzf/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ytfzf/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.all;
     maintainers = with maintainers; [ dotlambda ];
+    mainProgram = "ytfzf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/ytmdl/default.nix b/nixpkgs/pkgs/tools/misc/ytmdl/default.nix
index 9e20b1480e18..73c7ce2aae7a 100644
--- a/nixpkgs/pkgs/tools/misc/ytmdl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/ytmdl/default.nix
@@ -54,5 +54,6 @@ python3Packages.buildPythonApplication rec {
     description = "YouTube Music Downloader";
     license = licenses.mit;
     maintainers = with maintainers; [ j0hax ];
+    mainProgram = "ytmdl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/yubico-piv-tool/default.nix b/nixpkgs/pkgs/tools/misc/yubico-piv-tool/default.nix
index a8a7dfd3ee68..eee35ea8c9d4 100644
--- a/nixpkgs/pkgs/tools/misc/yubico-piv-tool/default.nix
+++ b/nixpkgs/pkgs/tools/misc/yubico-piv-tool/default.nix
@@ -70,5 +70,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     platforms = platforms.all;
     maintainers = with maintainers; [ viraptor anthonyroussel ];
+    mainProgram = "yubico-piv-tool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/yubikey-personalization-gui/default.nix b/nixpkgs/pkgs/tools/misc/yubikey-personalization-gui/default.nix
index 66f43ad9bfca..a63ab7a7ce19 100644
--- a/nixpkgs/pkgs/tools/misc/yubikey-personalization-gui/default.nix
+++ b/nixpkgs/pkgs/tools/misc/yubikey-personalization-gui/default.nix
@@ -39,5 +39,6 @@ mkDerivation rec {
     description = "A QT based cross-platform utility designed to facilitate reconfiguration of the Yubikey";
     license = licenses.bsd2;
     platforms = platforms.unix;
+    mainProgram = "yubikey-personalization-gui";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/yutto/default.nix b/nixpkgs/pkgs/tools/misc/yutto/default.nix
index bdc2ba94179f..a9b5e224e07a 100644
--- a/nixpkgs/pkgs/tools/misc/yutto/default.nix
+++ b/nixpkgs/pkgs/tools/misc/yutto/default.nix
@@ -44,5 +44,6 @@ buildPythonApplication rec {
     homepage = "https://github.com/yutto-dev/yutto";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ linsui ];
+    mainProgram = "yutto";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/zabbixctl/default.nix b/nixpkgs/pkgs/tools/misc/zabbixctl/default.nix
index e42ccb86c417..ce45196fdba7 100644
--- a/nixpkgs/pkgs/tools/misc/zabbixctl/default.nix
+++ b/nixpkgs/pkgs/tools/misc/zabbixctl/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     homepage = "https://github.com/kovetskiy/zabbixctl";
     license = licenses.mit;
     maintainers = with maintainers; [ mmahut ];
+    mainProgram = "zabbixctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/zalgo/default.nix b/nixpkgs/pkgs/tools/misc/zalgo/default.nix
index 71cc7f8b7ddb..0ca9f3366ce4 100644
--- a/nixpkgs/pkgs/tools/misc/zalgo/default.nix
+++ b/nixpkgs/pkgs/tools/misc/zalgo/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.unfree;
     platforms = platforms.unix;
     maintainers = with maintainers; [ djanatyn ];
+    mainProgram = "zalgo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/zellij/default.nix b/nixpkgs/pkgs/tools/misc/zellij/default.nix
index 624fa1d15d5d..160bb2bab62d 100644
--- a/nixpkgs/pkgs/tools/misc/zellij/default.nix
+++ b/nixpkgs/pkgs/tools/misc/zellij/default.nix
@@ -16,16 +16,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "zellij";
-  version = "0.39.1";
+  version = "0.39.2";
 
   src = fetchFromGitHub {
     owner = "zellij-org";
     repo = "zellij";
     rev = "v${version}";
-    hash = "sha256-nT4P/ZlquJz48T8LCRQd5menL8vtGMBSUgZNJYx0Pn4=";
+    hash = "sha256-FSLbRfxSWY0a9H9iHT3oQ2SXwB70AwyH0Cm8sDZGaUk=";
   };
 
-  cargoHash = "sha256-jp3FS+sEvQY0DtVPCkJjAZlEc2bJOiA20+Pdt//yat4=";
+  cargoHash = "sha256-a5dFtK5czOGqE6mKeeI0kkY2da1kS3IRZ1NTluZ9Syc=";
 
   nativeBuildInputs = [
     mandown
diff --git a/nixpkgs/pkgs/tools/misc/zf/default.nix b/nixpkgs/pkgs/tools/misc/zf/default.nix
index 1b441687d316..cf63e211d261 100644
--- a/nixpkgs/pkgs/tools/misc/zf/default.nix
+++ b/nixpkgs/pkgs/tools/misc/zf/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.mit;
     platforms = lib.platforms.unix;
     maintainers = with lib.maintainers; [ dit7ya figsoda mmlb ];
+    mainProgram = "zf";
   };
 })
diff --git a/nixpkgs/pkgs/tools/misc/zitadel-tools/default.nix b/nixpkgs/pkgs/tools/misc/zitadel-tools/default.nix
index 51defb87e932..cd5ae370805b 100644
--- a/nixpkgs/pkgs/tools/misc/zitadel-tools/default.nix
+++ b/nixpkgs/pkgs/tools/misc/zitadel-tools/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     homepage = "https://github.com/zitadel/zitadel-tools";
     license = licenses.asl20;
     maintainers = with maintainers; [ janik ];
+    mainProgram = "zitadel-tools";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/zotero-translation-server/default.nix b/nixpkgs/pkgs/tools/misc/zotero-translation-server/default.nix
index 21428cf12458..d44ec426fee5 100644
--- a/nixpkgs/pkgs/tools/misc/zotero-translation-server/default.nix
+++ b/nixpkgs/pkgs/tools/misc/zotero-translation-server/default.nix
@@ -31,5 +31,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/zotero/translation-server";
     license = licenses.agpl3Only;
     maintainers = [ maintainers.marsam ];
+    mainProgram = "translation-server";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/zsh-history-to-fish/default.nix b/nixpkgs/pkgs/tools/misc/zsh-history-to-fish/default.nix
index ddb8098cdaaf..4e8da001f835 100644
--- a/nixpkgs/pkgs/tools/misc/zsh-history-to-fish/default.nix
+++ b/nixpkgs/pkgs/tools/misc/zsh-history-to-fish/default.nix
@@ -29,5 +29,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/rsalmei/zsh-history-to-fish";
     license = licenses.mit;
     maintainers = with maintainers; [ alanpearce ];
+    mainProgram = "zsh-history-to-fish";
   };
 }
diff --git a/nixpkgs/pkgs/tools/misc/zthrottle/default.nix b/nixpkgs/pkgs/tools/misc/zthrottle/default.nix
index 2743dbf76bbb..012ffbccd4ae 100644
--- a/nixpkgs/pkgs/tools/misc/zthrottle/default.nix
+++ b/nixpkgs/pkgs/tools/misc/zthrottle/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.unlicense;
     maintainers = [ maintainers.ckie ];
     platforms = platforms.unix;
+    mainProgram = "zthrottle";
   };
 }
diff --git a/nixpkgs/pkgs/tools/networking/aardvark-dns/default.nix b/nixpkgs/pkgs/tools/networking/aardvark-dns/default.nix
index ea43200b5349..8ecc0442ecc3 100644
--- a/nixpkgs/pkgs/tools/networking/aardvark-dns/default.nix
+++ b/nixpkgs/pkgs/tools/networking/aardvark-dns/default.nix
@@ -6,16 +6,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "aardvark-dns";
-  version = "1.8.0";
+  version = "1.9.0";
 
   src = fetchFromGitHub {
     owner = "containers";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-7nuLHhkVwMc2RYq3rS9bZl39asjFAnsHxnecPypT1HM=";
+    hash = "sha256-ZpZlmAlHtlg7a/81TEGRj80Z6Vahk0CFgQmjU9W/tc8=";
   };
 
-  cargoHash = "sha256-WwM4lPWQmfsBjL4M/j3sZkLtH+Wdy9LTv4M4AF0Z6oo=";
+  cargoHash = "sha256-6OMiLcSTndX/c5xHe896PMuRpvT21jFpDfCxH15UQIA=";
 
   passthru.tests = { inherit (nixosTests) podman; };
 
diff --git a/nixpkgs/pkgs/tools/networking/airgeddon/default.nix b/nixpkgs/pkgs/tools/networking/airgeddon/default.nix
index 5574a877c0d0..cba25cae74f0 100644
--- a/nixpkgs/pkgs/tools/networking/airgeddon/default.nix
+++ b/nixpkgs/pkgs/tools/networking/airgeddon/default.nix
@@ -161,7 +161,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/v1s1t0r1sh3r3/airgeddon";
     changelog = "https://github.com/v1s1t0r1sh3r3/airgeddon/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ pedrohlc ];
+    maintainers = with maintainers; [ ];
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/tools/networking/boundary/default.nix b/nixpkgs/pkgs/tools/networking/boundary/default.nix
index 7aeed0b339b4..e867f2f8ac8f 100644
--- a/nixpkgs/pkgs/tools/networking/boundary/default.nix
+++ b/nixpkgs/pkgs/tools/networking/boundary/default.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   pname = "boundary";
-  version = "0.14.1";
+  version = "0.14.2";
 
   src =
     let
@@ -15,10 +15,10 @@ stdenv.mkDerivation rec {
         aarch64-darwin = "darwin_arm64";
       };
       sha256 = selectSystem {
-        x86_64-linux = "sha256-z4pBC/igKpwe1zJpOP8VqBOybtIq0wVaz+rfOwPzht4=";
-        aarch64-linux = "sha256-f3ofThBmBfV6Fr9FHfAsNz6w1Od0QM9fE8tFVB01PzM=";
-        x86_64-darwin = "sha256-iU/t35ibkTjgNV3E0xzdrMw63TKVzSlJjhZTxGzHSz0=";
-        aarch64-darwin = "sha256-213e3J2e9fvuoGPkeeKV46eWxR0nP+uh0f+INeZG738=";
+        x86_64-linux = "sha256-UR34PX3GChOTM4ROcvlghXOv4M8CYgiCvQaR/BRRvzs=";
+        aarch64-linux = "sha256-5q5Zz+/klgwbBvE40aMCw+ulv+g9Yhpcsn31PPCp9S4=";
+        x86_64-darwin = "sha256-NH1/QKqmaKGL35verE2sRXUwXePJoQk5kiUEIA5Xxn8=";
+        aarch64-darwin = "sha256-PpZ1dbT57+cdmLTvxo0/HY0lKoa+/N4cSfTNhbE6LLo=";
       };
     in
     fetchzip {
diff --git a/nixpkgs/pkgs/tools/networking/dd-agent/datadog-agent.nix b/nixpkgs/pkgs/tools/networking/dd-agent/datadog-agent.nix
index 8a40b290ae48..aac49a7b83b2 100644
--- a/nixpkgs/pkgs/tools/networking/dd-agent/datadog-agent.nix
+++ b/nixpkgs/pkgs/tools/networking/dd-agent/datadog-agent.nix
@@ -64,6 +64,7 @@ in buildGoModule rec {
     "process"
     "log"
     "secrets"
+    "zlib"
   ]
   ++ lib.optionals withSystemd [ "systemd" ]
   ++ extraTags;
diff --git a/nixpkgs/pkgs/tools/networking/ddclient/default.nix b/nixpkgs/pkgs/tools/networking/ddclient/default.nix
index 53401cf4acf3..ec84c7c526cb 100644
--- a/nixpkgs/pkgs/tools/networking/ddclient/default.nix
+++ b/nixpkgs/pkgs/tools/networking/ddclient/default.nix
@@ -5,7 +5,7 @@ let
 in
 perlPackages.buildPerlPackage rec {
   pname = "ddclient";
-  version = "3.11.1";
+  version = "3.11.2";
 
   outputs = [ "out" ];
 
@@ -13,7 +13,7 @@ perlPackages.buildPerlPackage rec {
     owner = "ddclient";
     repo = "ddclient";
     rev = "v${version}";
-    sha256 = "sha256-OM+JW3HP0llzyJNqmP5PLZ30TOvC2nA1bWwOspTbZZM=";
+    sha256 = "sha256-d1G+AM28nBpMWh1QBjm78KKeOL5b5arxERYRCXohwBg=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/tools/networking/ddns-go/default.nix b/nixpkgs/pkgs/tools/networking/ddns-go/default.nix
index fb4adc99fa3c..84f63e579e62 100644
--- a/nixpkgs/pkgs/tools/networking/ddns-go/default.nix
+++ b/nixpkgs/pkgs/tools/networking/ddns-go/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "ddns-go";
-  version = "5.6.4";
+  version = "5.6.6";
 
   src = fetchFromGitHub {
     owner = "jeessy2";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-wE4xzAH31yQ8xrA0dI7f961KNwK84gRSit+XNoW37pc=";
+    hash = "sha256-4OBY2Bj23uOBOAHKmOpecFXu0Lr8sLrwiU3/BdHpGOQ=";
   };
 
   vendorHash = "sha256-e4mmUneFZCsteSrxfSeeky/pFc0sgNs0eRVnZQuG1ZI=";
diff --git a/nixpkgs/pkgs/tools/networking/httptunnel/default.nix b/nixpkgs/pkgs/tools/networking/httptunnel/default.nix
index 13ef64175358..c8ff4fa7719d 100644
--- a/nixpkgs/pkgs/tools/networking/httptunnel/default.nix
+++ b/nixpkgs/pkgs/tools/networking/httptunnel/default.nix
@@ -1,17 +1,27 @@
-{ lib, stdenv, fetchurl }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+}:
 
 stdenv.mkDerivation rec {
-  version = "3.3";
+  version = "3.3-unstable-2023-05-08";
   pname = "httptunnel";
 
-  src = fetchurl {
-    url    = "http://www.nocrew.org/software/httptunnel/${pname}-${version}.tar.gz";
-    sha256 = "0mn5s6p68n32xzadz6ds5i6bp44dyxzkq68r1yljlv470jr84bql";
+  src = fetchFromGitHub {
+    owner = "larsbrinkhoff";
+    repo = "httptunnel";
+    rev = "d8f91af976c97a6006a5bd1ad7149380c39ba454";
+    hash = "sha256-fUaVHE3nxq3fU7DYCvaQTOoMzax/qFH8cMegFLLybNk=";
   };
 
+  nativeBuildInputs = [
+    autoreconfHook
+  ];
+
   meta = with lib; {
     description = "Creates a bidirectional virtual data connection tunnelled in HTTP requests";
-    homepage    = "http://www.nocrew.org/software/httptunnel";
+    homepage    = "http://www.gnu.org/software/httptunnel/httptunnel.html";
     license     = licenses.gpl2;
     maintainers = with maintainers; [ koral ];
     platforms   = platforms.unix;
diff --git a/nixpkgs/pkgs/tools/networking/hysteria/default.nix b/nixpkgs/pkgs/tools/networking/hysteria/default.nix
index bcfd588245e4..dd088b1ec539 100644
--- a/nixpkgs/pkgs/tools/networking/hysteria/default.nix
+++ b/nixpkgs/pkgs/tools/networking/hysteria/default.nix
@@ -4,16 +4,16 @@
 }:
 buildGoModule rec {
   pname = "hysteria";
-  version = "2.2.0";
+  version = "2.2.2";
 
   src = fetchFromGitHub {
     owner = "apernet";
     repo = pname;
     rev = "app/v${version}";
-    hash = "sha256-v9W1/1AIcYKYxVnFFXZdwQC50FWJCMQ0OXCmlfmXWQk=";
+    hash = "sha256-5j24wIZ4LloE9t0sv5p+oiYmexOaORASNN9JylXxrk4=";
   };
 
-  vendorHash = "sha256-/lFDCOkwkBKq1GJA1F7Lyhw++X1G1pld6JXNEdKue/E=";
+  vendorHash = "sha256-ErU1yEtSuMVkoJv9hyaE4OZS5o7GxuleoK0Q9BI2skw=";
   proxyVendor = true;
 
   ldflags = [
diff --git a/nixpkgs/pkgs/tools/networking/ipfetch/default.nix b/nixpkgs/pkgs/tools/networking/ipfetch/default.nix
index b9b675366e56..f264deaa8a35 100644
--- a/nixpkgs/pkgs/tools/networking/ipfetch/default.nix
+++ b/nixpkgs/pkgs/tools/networking/ipfetch/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Neofetch but for ip addresses";
+    homepage = "https://github.com/trakBan/ipfetch";
     license = licenses.gpl3Only;
     platforms = platforms.all;
     maintainers = with maintainers; [ annaaurora ];
diff --git a/nixpkgs/pkgs/tools/networking/ipinfo/default.nix b/nixpkgs/pkgs/tools/networking/ipinfo/default.nix
index 663c898935da..16b68e4801c6 100644
--- a/nixpkgs/pkgs/tools/networking/ipinfo/default.nix
+++ b/nixpkgs/pkgs/tools/networking/ipinfo/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "ipinfo";
-  version = "3.1.2";
+  version = "3.2.0";
 
   src = fetchFromGitHub {
     owner = pname;
     repo = "cli";
     rev = "refs/tags/${pname}-${version}";
-    hash = "sha256-KCdKfZs1u3ZLaG+Lmod/vV0T0LaW8hs4ReGlVA7A9pA=";
+    hash = "sha256-bqA8Y3mVHSwhUcvr3biWbH6K73MYmo3f7wSMS4J+Bk8=";
   };
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/tools/networking/kea/default.nix b/nixpkgs/pkgs/tools/networking/kea/default.nix
index 2e642b17f87c..574afb68e237 100644
--- a/nixpkgs/pkgs/tools/networking/kea/default.nix
+++ b/nixpkgs/pkgs/tools/networking/kea/default.nix
@@ -23,11 +23,11 @@
 
 stdenv.mkDerivation rec {
   pname = "kea";
-  version = "2.4.0"; # only even minor versions are stable
+  version = "2.4.1"; # only even minor versions are stable
 
   src = fetchurl {
     url = "https://ftp.isc.org/isc/${pname}/${version}/${pname}-${version}.tar.gz";
-    hash = "sha256-OjPNCNwzGf9UTmu/LAQpBCEG9AUevhFdwbsmJclQA/c=";
+    hash = "sha256-gVxh9cJxyqSh2zHdZW61Cn9uqXPaNpD3yFgUCOGAExo=";
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/tools/networking/maubot/allow-building-plugins-from-nix-store.patch b/nixpkgs/pkgs/tools/networking/maubot/allow-building-plugins-from-nix-store.patch
deleted file mode 100644
index 1df88b92aa51..000000000000
--- a/nixpkgs/pkgs/tools/networking/maubot/allow-building-plugins-from-nix-store.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/maubot/cli/commands/build.py b/maubot/cli/commands/build.py
-index ec3ac26..4de85f2 100644
---- a/maubot/cli/commands/build.py
-+++ b/maubot/cli/commands/build.py
-@@ -84,7 +84,7 @@ def read_output_path(output: str, meta: PluginMeta) -> str | None:
- 
- 
- def write_plugin(meta: PluginMeta, output: str | IO) -> None:
--    with zipfile.ZipFile(output, "w") as zip:
-+    with zipfile.ZipFile(output, "w", strict_timestamps=False) as zip:
-         meta_dump = BytesIO()
-         yaml.dump(meta.serialize(), meta_dump)
-         zip.writestr("maubot.yaml", meta_dump.getvalue())
diff --git a/nixpkgs/pkgs/tools/networking/maubot/default.nix b/nixpkgs/pkgs/tools/networking/maubot/default.nix
index e2b9e543a8b4..acee6f1dedb3 100644
--- a/nixpkgs/pkgs/tools/networking/maubot/default.nix
+++ b/nixpkgs/pkgs/tools/networking/maubot/default.nix
@@ -1,6 +1,7 @@
 { lib
 , fetchPypi
 , fetchpatch
+, callPackage
 , runCommand
 , python3
 , encryptionSupport ? true
@@ -55,8 +56,6 @@ let
         url = "https://github.com/maubot/maubot/commit/283f0a3ed5dfae13062b6f0fd153fbdc477f4381.patch";
         sha256 = "0yn5357z346qzy5v5g124mgiah1xsi9yyfq42zg028c8paiw8s8x";
       })
-      # allow running "mbc build" in a nix derivation
-      ./allow-building-plugins-from-nix-store.patch
     ];
 
     propagatedBuildInputs = with python.pkgs; [
@@ -88,21 +87,41 @@ let
       rm $out/example-config.yaml
     '';
 
-    passthru = {
-      inherit python;
+    # Setuptools is trying to do python -m maubot test
+    dontUseSetuptoolsCheck = true;
+
+    pythonImportsCheck = [
+      "maubot"
+    ];
+
+    passthru = let
+      wrapper = callPackage ./wrapper.nix {
+        unwrapped = maubot;
+        python3 = python;
+      };
+    in
+    {
       tests = {
         simple = runCommand "${pname}-tests" { } ''
           ${maubot}/bin/mbc --help > $out
         '';
       };
-    };
 
-    # Setuptools is trying to do python -m maubot test
-    dontUseSetuptoolsCheck = true;
+      inherit python;
 
-    pythonImportsCheck = [
-      "maubot"
-    ];
+      plugins = callPackage ./plugins {
+        maubot = maubot;
+        python3 = python;
+      };
+
+      withPythonPackages = pythonPackages: wrapper { inherit pythonPackages; };
+
+      # This adds the plugins to lib/maubot-plugins
+      withPlugins = plugins: wrapper { inherit plugins; };
+
+      # This changes example-config.yaml in module directory
+      withBaseConfig = baseConfig: wrapper { inherit baseConfig; };
+    };
 
     meta = with lib; {
       description = "A plugin-based Matrix bot system written in Python";
diff --git a/nixpkgs/pkgs/tools/networking/maubot/plugins/default.nix b/nixpkgs/pkgs/tools/networking/maubot/plugins/default.nix
new file mode 100644
index 000000000000..b60589b9df7e
--- /dev/null
+++ b/nixpkgs/pkgs/tools/networking/maubot/plugins/default.nix
@@ -0,0 +1,68 @@
+{ lib
+, fetchgit
+, fetchFromGitHub
+, fetchFromGitLab
+, fetchFromGitea
+, stdenvNoCC
+, callPackage
+, ensureNewerSourcesForZipFilesHook
+, maubot
+, python3
+, poetry
+, formats
+}:
+
+let
+  # pname: plugin id (example: xyz.maubot.echo)
+  # version: plugin version
+  # other attributes are passed directly to stdenv.mkDerivation (you at least need src)
+  buildMaubotPlugin = attrs@{ version, pname, base_config ? null, ... }:
+    stdenvNoCC.mkDerivation (builtins.removeAttrs attrs [ "base_config" ] // {
+      pluginName = "${pname}-v${version}.mbp";
+      nativeBuildInputs = (attrs.nativeBuildInputs or [ ]) ++ [
+        ensureNewerSourcesForZipFilesHook
+        maubot
+      ];
+      buildPhase = ''
+        runHook preBuild
+
+        mbc build
+
+        runHook postBuild
+      '';
+
+      postPatch = lib.optionalString (base_config != null) ''
+        [ -e base-config.yaml ] || (echo "base-config.yaml doesn't exist, can't override it" && exit 1)
+        cp "${if builtins.isPath base_config || lib.isDerivation base_config then base_config
+          else if builtins.isString base_config then builtins.toFile "base-config.yaml" base_config
+          else (formats.yaml { }).generate "base-config.yaml" base_config}" base-config.yaml
+      '' + attrs.postPatch or "";
+
+      installPhase = ''
+        runHook preInstall
+
+        mkdir -p $out/lib/maubot-plugins
+        install -m 444 $pluginName $out/lib/maubot-plugins
+
+        runHook postInstall
+      '';
+    });
+
+  generated = import ./generated.nix {
+    inherit lib fetchgit fetchFromGitHub fetchFromGitLab
+      fetchFromGitea python3 poetry buildMaubotPlugin;
+  };
+in
+generated // {
+  inherit buildMaubotPlugin;
+
+  allOfficialPlugins =
+    builtins.filter
+      (x: x.isOfficial && !x.meta.broken)
+      (builtins.attrValues generated);
+
+  allPlugins =
+    builtins.filter
+      (x: !x.meta.broken)
+      (builtins.attrValues generated);
+}
diff --git a/nixpkgs/pkgs/tools/networking/maubot/plugins/generated.json b/nixpkgs/pkgs/tools/networking/maubot/plugins/generated.json
new file mode 100644
index 000000000000..555de6c05821
--- /dev/null
+++ b/nixpkgs/pkgs/tools/networking/maubot/plugins/generated.json
@@ -0,0 +1,2225 @@
+{
+  "URLDownload": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://codeberg.org/LukeLR/matrix-url-download/releases",
+        "description": "A plugin for the maubot bot framework implementing URL downloads in matrix rooms.",
+        "downloadPage": "https://codeberg.org/LukeLR/matrix-url-download/releases",
+        "homepage": "https://codeberg.org/LukeLR/matrix-url-download"
+      }
+    },
+    "gitea": {
+      "domain": "codeberg.org",
+      "hash": "sha256-JLYhoQKxsYO46mqRJZEcWTHck6bli6itYGu8ZPbxyjg=",
+      "owner": "LukeLR",
+      "repo": "matrix-url-download",
+      "rev": "3a006d98faa6950edab1a45b7a8c6a6d7d908bff"
+    },
+    "manifest": {
+      "config": true,
+      "database": true,
+      "database_type": "asyncpg",
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "de.lukelr.urldownload",
+      "license": "LGPL-3.0-only",
+      "main_class": "URLDownloadBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "urldownload"
+      ],
+      "version": "0.0.3"
+    }
+  },
+  "activity-tracker": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/williamkray/maubot-kickbot/releases",
+        "description": "A plugin that minimally tracks user activity within a space. Useful for kicking inactive users from a private community.",
+        "downloadPage": "https://github.com/williamkray/maubot-kickbot/releases",
+        "homepage": "https://github.com/williamkray/maubot-kickbot"
+      }
+    },
+    "github": {
+      "hash": "sha256-TLaGpLrTR4TLR0TjY3v9FFST8JxEP4swJ7kzt0fDwJI=",
+      "owner": "williamkray",
+      "repo": "maubot-kickbot",
+      "rev": "a4c31c7a1492585f2155705be8cab7e3f73f6b69"
+    },
+    "manifest": {
+      "database": true,
+      "database_type": "asyncpg",
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.jobmachine.kickbot",
+      "license": "MIT",
+      "main_class": "KickBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "kickbot"
+      ],
+      "version": "0.0.10"
+    }
+  },
+  "alertbot": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/moan0s/alertbot/blob/v1.1.1/CHANGELOG.md",
+        "description": "A bot that recives monitoring alerts via alertmanager and forwards them to a matrix room.",
+        "downloadPage": "https://github.com/moan0s/alertbot/releases",
+        "homepage": "https://github.com/moan0s/alertbot"
+      }
+    },
+    "github": {
+      "hash": "sha256-hA4Wl1mrIuThQVHTPhMAVsvdbhhx/rHqpOResWO8xiI=",
+      "owner": "moan0s",
+      "repo": "alertbot",
+      "rev": "v1.1.1"
+    },
+    "manifest": {
+      "id": "de.hyteck.alertbot",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "AlertBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "alertbot"
+      ],
+      "version": "1.1.1",
+      "webapp": true
+    }
+  },
+  "altalias": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/altalias/releases",
+        "description": "A bot that lets users publish alternate aliases in rooms.",
+        "downloadPage": "https://github.com/maubot/altalias/releases",
+        "homepage": "https://github.com/maubot/altalias"
+      }
+    },
+    "github": {
+      "hash": "sha256-+qW3CX2ae86jc5l/7poyLs2cQycLjft9l3rul9eYby4=",
+      "owner": "maubot",
+      "repo": "altalias",
+      "rev": "b07b7866c9647612bfe784700b37087855432028"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.altalias",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "AltAliasBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "altalias"
+      ],
+      "version": "1.0.0"
+    }
+  },
+  "alternatingcaps": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/rom4nik/maubot-alternatingcaps/releases",
+        "description": "A bot repeating last message using aLtErNaTiNg cApS.",
+        "downloadPage": "https://github.com/rom4nik/maubot-alternatingcaps/releases",
+        "homepage": "https://github.com/rom4nik/maubot-alternatingcaps"
+      }
+    },
+    "github": {
+      "hash": "sha256-O3FhZ6US4iACEzEKdHLjBZfOJlHNGEeLSrHdqWULFvk=",
+      "owner": "rom4nik",
+      "repo": "maubot-alternatingcaps",
+      "rev": "v0.1.2"
+    },
+    "manifest": {
+      "id": "pl.rom4nik.maubot.alternatingcaps",
+      "license": "MIT",
+      "main_class": "AlternatingCaps",
+      "modules": [
+        "alternatingcaps"
+      ],
+      "version": "0.1.2"
+    }
+  },
+  "animemanga": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/coffeebank/coffee-maubot/releases",
+        "description": "An anime/manga bot for Matrix. Search anime, manga (manhwa/manhua), and light novels from Anilist. See series info, status, and episodes/chapters.",
+        "downloadPage": "https://github.com/coffeebank/coffee-maubot/releases",
+        "homepage": "https://github.com/coffeebank/coffee-maubot/tree/master/animemanga"
+      },
+      "postPatch": "cd animemanga"
+    },
+    "github": {
+      "hash": "sha256-k+M/Wk4nyXUZBJxmxQr64dPp3rK7i1oQeLFtncle3dI=",
+      "owner": "coffeebank",
+      "repo": "coffee-maubot",
+      "rev": "b25112508d65f7560910e67d3074dd60f4048821"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "coffee.maubot.animemanga",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "AnimeMangaBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "animemanga"
+      ],
+      "version": "0.1.1.216"
+    }
+  },
+  "antithread": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/antithread/releases",
+        "description": "A bot that redacts all messages in threads.",
+        "downloadPage": "https://github.com/maubot/antithread/releases",
+        "homepage": "https://github.com/maubot/antithread"
+      }
+    },
+    "github": {
+      "hash": "sha256-O6rxvxR62DboRGaNevJRCZynGl3xthRICaxRCvLScdM=",
+      "owner": "maubot",
+      "repo": "antithread",
+      "rev": "0577b8eefcf01925452678b9fe380aac4270c672"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "id": "xyz.maubot.antithread",
+      "license": "MIT",
+      "main_class": "AntiThreadBot",
+      "modules": [
+        "antithread"
+      ],
+      "version": "1.0.0"
+    }
+  },
+  "autoreply": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/babolivier/maubot-autoreply/releases",
+        "description": "A bot that sends automated replies when you're away, and shows you a summary of missed messages when you come back.",
+        "downloadPage": "https://github.com/babolivier/maubot-autoreply/releases",
+        "homepage": "https://github.com/babolivier/maubot-autoreply"
+      }
+    },
+    "github": {
+      "hash": "sha256-ULOL5C1tzH4g0IWu+GmMdl3+aCZK0n/G4I8wIvd7f6U=",
+      "owner": "babolivier",
+      "repo": "maubot-autoreply",
+      "rev": "v1.0.0"
+    },
+    "manifest": {
+      "config": true,
+      "database": true,
+      "database_type": "asyncpg",
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "bzh.abolivier.autoreply",
+      "license": "Apache-2.0",
+      "main_class": "AutoReplyBot",
+      "maubot": "v0.1.0",
+      "modules": [
+        "autoreply"
+      ],
+      "version": "1.0.0"
+    }
+  },
+  "bard": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/ser/maubot-bard/releases",
+        "description": "Allow your maubot instance to return queries from Google(TM) Bard(TM) pseudoAI",
+        "downloadPage": "https://github.com/ser/maubot-bard/releases",
+        "homepage": "https://github.com/ser/maubot-bard/",
+        "license": "MIT"
+      }
+    },
+    "github": {
+      "hash": "sha256-E8pz71wfH+SmFNzBcPUrnqK0xs7wlyB6SaRXH/PDqKw=",
+      "owner": "ser",
+      "repo": "maubot-bard",
+      "rev": "4ff3ce8d86ed19c973dee89228779fed74811341"
+    },
+    "manifest": {
+      "config": true,
+      "dependencies": [
+        "bardapi"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "sergevictor.eu.maubot.bard",
+      "main_class": "BardPlugin",
+      "modules": [
+        "bard"
+      ],
+      "version": "0.99.100"
+    }
+  },
+  "characterai": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/Matthieu-LAURENT39/maubot-characterai/releases",
+        "description": "Chat with characters from [character.ai](https://character.ai/) in your Matrix rooms! Very customizable.",
+        "downloadPage": "https://github.com/Matthieu-LAURENT39/maubot-characterai/releases",
+        "homepage": "https://github.com/Matthieu-LAURENT39/maubot-characterai"
+      }
+    },
+    "github": {
+      "hash": "sha256-nyVz0PDyNGAIFCxakWzEe8AG/PU+HlZJQQ85SL1bEvs=",
+      "owner": "Matthieu-LAURENT39",
+      "repo": "maubot-characterai",
+      "rev": "v0.2.1"
+    },
+    "manifest": {
+      "config": true,
+      "database": true,
+      "database_type": "asyncpg",
+      "dependencies": [
+        "characterai"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "com.github.Matthieu-LAURENT39.maubot-characterai",
+      "license": "MIT",
+      "main_class": "CAIBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "cai"
+      ],
+      "version": "0.2.1"
+    }
+  },
+  "chatgpt": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/williamkray/maubot-chatgpt/releases",
+        "description": "ChatGPT plugin for maubot. Multi-user aware for use in group rooms! Customize your prompts to \"train\" your assistant contextually.",
+        "downloadPage": "https://github.com/williamkray/maubot-chatgpt/releases",
+        "homepage": "https://github.com/williamkray/maubot-chatgpt",
+        "license": "MIT"
+      }
+    },
+    "github": {
+      "hash": "sha256-iRo4oFOOXgISALFskPZUonV4cBn7HmBACdi5uhgQq8o=",
+      "owner": "williamkray",
+      "repo": "maubot-chatgpt",
+      "rev": "f3974dc3818da170a3f1e091359d31f3140245e0"
+    },
+    "manifest": {
+      "config": true,
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.jobmachine.chatgpt",
+      "main_class": "GPTPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "gpt"
+      ],
+      "version": "0.0.9"
+    }
+  },
+  "choose": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/coffeebank/coffee-maubot/releases",
+        "description": "Have the bot choose for you ( item1 | item2 | item3 ) with a divider",
+        "downloadPage": "https://github.com/coffeebank/coffee-maubot/releases",
+        "homepage": "https://github.com/coffeebank/coffee-maubot/tree/master/choose"
+      },
+      "postPatch": "cd choose"
+    },
+    "github": {
+      "hash": "sha256-k+M/Wk4nyXUZBJxmxQr64dPp3rK7i1oQeLFtncle3dI=",
+      "owner": "coffeebank",
+      "repo": "coffee-maubot",
+      "rev": "b25112508d65f7560910e67d3074dd60f4048821"
+    },
+    "manifest": {
+      "database": false,
+      "id": "coffee.maubot.choose",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "ChooseBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "choose"
+      ],
+      "version": "0.1.0.3"
+    }
+  },
+  "commitstrip": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/commitstrip/releases",
+        "description": "A bot to view CommitStrips.",
+        "downloadPage": "https://github.com/maubot/commitstrip/releases",
+        "homepage": "https://github.com/maubot/commitstrip"
+      }
+    },
+    "github": {
+      "hash": "sha256-P5u4oDmsMj4r48JZIZ1Cg8cX11aimv9dGI+J0lJrY34=",
+      "owner": "maubot",
+      "repo": "commitstrip",
+      "rev": "28ab63c2725aa989a151f5659cb37a674b002a80"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "database": true,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.commitstrip",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "CommitBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "commitstrip"
+      ],
+      "version": "1.0.0"
+    }
+  },
+  "create-room": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/williamkray/maubot-createroom/releases",
+        "description": "A plugin that creates new rooms and automatically sets them to be part of a private Matrix Space.",
+        "downloadPage": "https://github.com/williamkray/maubot-createroom/releases",
+        "homepage": "https://github.com/williamkray/maubot-createroom"
+      }
+    },
+    "github": {
+      "hash": "sha256-x1eoUX8u1IR/hLgS8YcpSoTByl+m3GoTW3fnFMDs1XA=",
+      "owner": "williamkray",
+      "repo": "maubot-createroom",
+      "rev": "4eecdcffa6c06276287c2a3d4e65905a72ad18ad"
+    },
+    "manifest": {
+      "config": true,
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.jobmachine.createspaceroom",
+      "license": "MIT",
+      "main_class": "CreateSpaceRoom",
+      "maubot": "0.1.0",
+      "modules": [
+        "createspaceroom"
+      ],
+      "version": "0.1.2"
+    }
+  },
+  "dice": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/dice/releases",
+        "description": "A combined dice rolling and calculator bot.",
+        "downloadPage": "https://github.com/maubot/dice/releases",
+        "homepage": "https://github.com/maubot/dice"
+      }
+    },
+    "github": {
+      "hash": "sha256-xnqcxOXHhsHR9RjLaOa6QZOx87V6kLQJW+mRWF/S5eM=",
+      "owner": "maubot",
+      "repo": "dice",
+      "rev": "v1.1.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.dice",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "DiceBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "dice"
+      ],
+      "version": "1.1.0"
+    }
+  },
+  "disruptor": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/disruptor/releases",
+        "description": "A bot that disrupts monologues with cat pictures.",
+        "downloadPage": "https://github.com/maubot/disruptor/releases",
+        "homepage": "https://github.com/maubot/disruptor"
+      }
+    },
+    "github": {
+      "hash": "sha256-/wm/CNl4XzRBClhW+jOp9S7P/nIz65aOtt+E9AnIPNA=",
+      "owner": "maubot",
+      "repo": "disruptor",
+      "rev": "v0.2.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.disruptor",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "DisruptorBot",
+      "maubot": "0.4.1",
+      "modules": [
+        "disruptor"
+      ],
+      "version": "0.2.0"
+    }
+  },
+  "echo": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/echo/releases",
+        "description": "A bot that echoes pings and other stuff.\n\nSee [#ping:maunium.net](https://matrix.to/#/#ping:maunium.net) for a room\nwith lots of echo bots.\n",
+        "downloadPage": "https://github.com/maubot/echo/releases",
+        "homepage": "https://github.com/maubot/echo"
+      }
+    },
+    "github": {
+      "hash": "sha256-/ajDs2vpWqejxDF7naXtKi1nYRs2lJpuc0R0dV7oVHI=",
+      "owner": "maubot",
+      "repo": "echo",
+      "rev": "v1.4.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "id": "xyz.maubot.echo",
+      "license": "MIT",
+      "main_class": "EchoBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "echo"
+      ],
+      "version": "1.4.0"
+    }
+  },
+  "exec": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/exec/releases",
+        "description": "A bot that executes code.",
+        "downloadPage": "https://github.com/maubot/exec/releases",
+        "homepage": "https://github.com/maubot/exec"
+      }
+    },
+    "github": {
+      "hash": "sha256-bwy3eB7ULYTGeJXtTNFMfry9dWQmnTjcU6HWdRznWxc=",
+      "owner": "maubot",
+      "repo": "exec",
+      "rev": "475d0fe70dc30e1c14e29028694fd4ac38690932"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.exec",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "ExecBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "exec"
+      ],
+      "version": "0.1.0"
+    }
+  },
+  "factorial": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/factorial/releases",
+        "description": "A bot to calculate unexpected factorials.",
+        "downloadPage": "https://github.com/maubot/factorial/releases",
+        "homepage": "https://github.com/maubot/factorial"
+      }
+    },
+    "github": {
+      "hash": "sha256-XHAwAloJZpFdY0kRrUjkEGJoryHK4PSQgBf2QH9C/6o=",
+      "owner": "maubot",
+      "repo": "factorial",
+      "rev": "v3.0.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "id": "xyz.maubot.factorial",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "FactorialBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "factorial"
+      ],
+      "version": "3.0.0"
+    }
+  },
+  "gifme": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/williamkray/maubot-gifme/releases",
+        "description": "Superior gif responses. Save your own library of image or video responses.\nAllows fallback behavior to Giphy or Tenor, optionally saves quotes from\nusers for comedic effect or to be used as an FAQ bot!\n",
+        "downloadPage": "https://github.com/williamkray/maubot-gifme/releases",
+        "homepage": "https://github.com/williamkray/maubot-gifme"
+      }
+    },
+    "github": {
+      "hash": "sha256-5MHLtm3qktUyvWyuwQEUQWL8fxszZ6h/hHClLLr0Uvs=",
+      "owner": "williamkray",
+      "repo": "maubot-gifme",
+      "rev": "6dbbb9ebce903887b62f95b04f4640779762e57a"
+    },
+    "manifest": {
+      "database": true,
+      "database_type": "asyncpg",
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.jobmachine.gifme",
+      "license": "MIT",
+      "main_class": "GifMe",
+      "maubot": "0.4.0",
+      "modules": [
+        "gifme"
+      ],
+      "version": "0.1.0"
+    }
+  },
+  "giphy": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/TomCasavant/GiphyMaubot/releases",
+        "description": "A bot that generates a gif (from giphy) given search terms.",
+        "downloadPage": "https://github.com/TomCasavant/GiphyMaubot/releases",
+        "homepage": "https://github.com/TomCasavant/GiphyMaubot"
+      }
+    },
+    "github": {
+      "hash": "sha256-bY9jCHwI2UZwn+W02hSEAD0aRRsM7cAeeYpnk3jTTBY=",
+      "owner": "TomCasavant",
+      "repo": "GiphyMaubot",
+      "rev": "3.3.0"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "casavant.tom.giphy",
+      "license": "MIT",
+      "main_class": "GiphyPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "giphy"
+      ],
+      "version": "3.3.0"
+    }
+  },
+  "github": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/github/releases",
+        "description": "A GitHub client and webhook receiver.",
+        "downloadPage": "https://github.com/maubot/github/releases",
+        "homepage": "https://github.com/maubot/github"
+      }
+    },
+    "github": {
+      "hash": "sha256-Qc0KH8iGqMDa+1BXaB5fHtRIcsZRpTF2IufGMEXqV6Q=",
+      "owner": "maubot",
+      "repo": "github",
+      "rev": "v0.1.2"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "config": true,
+      "database": true,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.github",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "GitHubBot",
+      "maubot": "0.3.0",
+      "modules": [
+        "github"
+      ],
+      "version": "0.1.2",
+      "webapp": true
+    }
+  },
+  "gitlab": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/gitlab/releases",
+        "description": "A GitLab client and webhook receiver.",
+        "downloadPage": "https://github.com/maubot/gitlab/releases",
+        "homepage": "https://github.com/maubot/gitlab"
+      }
+    },
+    "github": {
+      "hash": "sha256-lkHGR+uLnT3f7prWDAbJplwzwAyOfMCwf8B2LeiJzIo=",
+      "owner": "maubot",
+      "repo": "gitlab",
+      "rev": "v0.2.1"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "config": true,
+      "database": true,
+      "extra_files": [
+        "base-config.yaml",
+        "templates/macros.html",
+        "templates/messages/*.html",
+        "templates/mixins/*.html"
+      ],
+      "id": "xyz.maubot.gitlab",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "GitlabBot",
+      "maubot": "0.1.2",
+      "modules": [
+        "gitlab_matrix"
+      ],
+      "soft_dependencies": [
+        "python-gitlab"
+      ],
+      "version": "0.2.1",
+      "webapp": true
+    }
+  },
+  "hasswebhookbot": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/v411e/hasswebhookbot/releases",
+        "description": "A bot receiving webhooks from [Home Assistant](https://github.com/home-assistant).",
+        "downloadPage": "https://github.com/v411e/hasswebhookbot/releases",
+        "homepage": "https://github.com/v411e/hasswebhookbot"
+      }
+    },
+    "github": {
+      "hash": "sha256-Tjr2sbFMpasBy4dR1Lqxt/jnO3ay26XY2d263JkFyKg=",
+      "owner": "v411e",
+      "repo": "hasswebhookbot",
+      "rev": "v0.0.15"
+    },
+    "manifest": {
+      "config": true,
+      "database": true,
+      "dependencies": [
+        "Markdown",
+        "pytz"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "com.valentinriess.hasswebhook",
+      "license": "MIT",
+      "main_class": "HassWebhook",
+      "maubot": "0.1.0",
+      "modules": [
+        "hasswebhook"
+      ],
+      "soft_dependencies": [
+        "Pillow"
+      ],
+      "version": "0.0.15",
+      "webapp": true
+    }
+  },
+  "hateheif": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/ser/maubot-hateheif/releases",
+        "description": "A bot which sends converted HEIF into JPEG. Works in encrypted and unencrypted rooms.",
+        "downloadPage": "https://github.com/ser/maubot-hateheif/releases",
+        "homepage": "https://github.com/ser/maubot-hateheif/"
+      }
+    },
+    "github": {
+      "hash": "sha256-twvVeMD2nRwpazc21inbdr6mUjMXJ4T6v5ieNrwB+O4=",
+      "owner": "ser",
+      "repo": "maubot-hateheif",
+      "rev": "52cf166960ac3fb71d291e13d5f3621caa9d7af1"
+    },
+    "manifest": {
+      "config": true,
+      "dependencies": [
+        "pillow-heif"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "eu.sergevictor.hateheif",
+      "license": "MIT",
+      "main_class": "HateHeifBot",
+      "modules": [
+        "hateheif"
+      ],
+      "version": "0.99.100"
+    }
+  },
+  "help": {
+    "attrs": {
+      "meta": {
+        "description": "A plugin to add a `!help` command to maubot. Returns all built-in help commands for all plugins loaded in the client instance.",
+        "homepage": "https://git.skeg1.se/vondassendorf/maubot_mauhelp"
+      }
+    },
+    "gitlab": {
+      "domain": "git.skeg1.se",
+      "hash": "sha256-xQ0GzdWPHstMSEOXwmW/DFxClK/oEwfyTrm752S5iFQ=",
+      "owner": "vondassendorf",
+      "repo": "maubot_mauhelp",
+      "rev": "v0.2.0"
+    },
+    "manifest": {
+      "database": false,
+      "id": "se.skeg1.mauhelp",
+      "license": "MIT",
+      "main_class": "MauHelp",
+      "maubot": "0.3.1",
+      "modules": [
+        "mauhelp"
+      ],
+      "version": "0.2.0"
+    }
+  },
+  "holopin": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/itrich/HolopinMaubot/releases",
+        "description": "A plugin to issue [Holopin](https://holopin.io) badges to users.",
+        "downloadPage": "https://github.com/itrich/HolopinMaubot/releases",
+        "homepage": "https://github.com/itrich/HolopinMaubot"
+      }
+    },
+    "github": {
+      "hash": "sha256-fQDa4e2hN5WFXwPVqefCU9YBzXHxvtXntAta0oZxp5M=",
+      "owner": "itrich",
+      "repo": "HolopinMaubot",
+      "rev": "v0.0.1"
+    },
+    "manifest": {
+      "config": true,
+      "database": false,
+      "dependencies": null,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "net.itrich.maubot.holopin",
+      "license": "MIT",
+      "main_class": "HolopinPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "holopin"
+      ],
+      "soft_dependencies": null,
+      "version": "0.0.1",
+      "webapp": false
+    }
+  },
+  "invite": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/williamkray/maubot-invite/releases",
+        "description": "A bot to generate invitation tokens from [matrix-registration](https://github.com/ZerataX/matrix-registration).",
+        "downloadPage": "https://github.com/williamkray/maubot-invite/releases",
+        "homepage": "https://github.com/williamkray/maubot-invite"
+      }
+    },
+    "github": {
+      "hash": "sha256-VQufveYgxVOoMWtfNJ8LYWvjbFtboSNZzdRn7MA7DLA=",
+      "owner": "williamkray",
+      "repo": "maubot-invite",
+      "rev": "v0.3.1"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.jobmachine.invitebot",
+      "license": "MIT",
+      "main_class": "Invite",
+      "maubot": "0.1.0",
+      "modules": [
+        "invite"
+      ],
+      "version": "0.3.1"
+    }
+  },
+  "jadict": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/coffeebank/coffee-maubot/releases",
+        "description": "A Japanese dictionary Matrix bot for searching and translating Japanese vocabulary (Hiragana, Katakana, Kanji, Romaji). Searches Jisho using Jisho API.",
+        "downloadPage": "https://github.com/coffeebank/coffee-maubot/releases",
+        "homepage": "https://github.com/coffeebank/coffee-maubot/tree/master/jadict"
+      },
+      "postPatch": "cd jadict"
+    },
+    "github": {
+      "hash": "sha256-k+M/Wk4nyXUZBJxmxQr64dPp3rK7i1oQeLFtncle3dI=",
+      "owner": "coffeebank",
+      "repo": "coffee-maubot",
+      "rev": "b25112508d65f7560910e67d3074dd60f4048821"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "coffee.maubot.jadict",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "JadictBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "jadict"
+      ],
+      "version": "0.1.0.10"
+    }
+  },
+  "join": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/williamkray/maubot-join/releases",
+        "description": "A plugin that restricts who can convince your bot to join new rooms to certain users.",
+        "downloadPage": "https://github.com/williamkray/maubot-join/releases",
+        "homepage": "https://github.com/williamkray/maubot-join"
+      }
+    },
+    "github": {
+      "hash": "sha256-aqpL+KO5p0hre7RCUZrM270Ah+cR4cQxZn7LTXLT79k=",
+      "owner": "williamkray",
+      "repo": "maubot-join",
+      "rev": "1b57758dfe3a2191588bb903ea546328146e69d8"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.jobmachine.join",
+      "license": "MIT",
+      "main_class": "Join",
+      "maubot": "0.1.0",
+      "modules": [
+        "join"
+      ],
+      "version": "0.3.0"
+    }
+  },
+  "karma": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/karma/releases",
+        "description": "A user karma tracker bot.",
+        "downloadPage": "https://github.com/maubot/karma/releases",
+        "homepage": "https://github.com/maubot/karma"
+      }
+    },
+    "github": {
+      "hash": "sha256-7CK4NReLhU/d0FXTWj9eM7C5yL9nXkM+vpPExv4VPfE=",
+      "owner": "maubot",
+      "repo": "karma",
+      "rev": "v1.0.1"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "database": true,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.karma",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "KarmaBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "karma"
+      ],
+      "version": "1.0.1"
+    }
+  },
+  "ldap-ad-inviterbot": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/SAPUCC/inviterbot/blob/v0.1.5/CHANGELOG.md",
+        "description": "A plugin to sync users from Microsoft Azure AD and LDAP into matrix rooms. (Membership, Power-Levels)",
+        "downloadPage": "https://github.com/SAPUCC/inviterbot/releases",
+        "homepage": "https://github.com/SAPUCC/inviterbot",
+        "license": "GPL-3.0-or-later"
+      }
+    },
+    "github": {
+      "hash": "sha256-Ve420Mfa+Ikxp0P/8b6rZIu54VOfKhH3sWDNNMClj9E=",
+      "owner": "SAPUCC",
+      "repo": "inviterbot",
+      "rev": "v0.1.5"
+    },
+    "manifest": {
+      "config": true,
+      "database": false,
+      "dependencies": [
+        null
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "de.in4md-service.inviterbot",
+      "license": "GPLv3",
+      "main_class": "InviterBot",
+      "maubot": "0.2.0",
+      "modules": [
+        "inviter"
+      ],
+      "version": "0.1.5"
+    }
+  },
+  "local-stt": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/ElishaAz/mau_local_stt/releases",
+        "description": "A Maubot to transcribe audio messages in matrix rooms using local open-source libraries",
+        "downloadPage": "https://github.com/ElishaAz/mau_local_stt/releases",
+        "homepage": "https://github.com/ElishaAz/mau_local_stt",
+        "license": "GPL-3.0-only"
+      }
+    },
+    "github": {
+      "hash": "sha256-EyDJ4RtQjBl7BQ7Y/0LWfX4zkVVqBOqjnhb9tXhFxio=",
+      "owner": "ElishaAz",
+      "repo": "mau_local_stt",
+      "rev": "v1.0.2"
+    },
+    "manifest": {
+      "config": true,
+      "dependencies": [
+        "whispercpp",
+        "numpy",
+        "vosk"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "com.elishaaz.maulocalstt",
+      "license": "GPLv3",
+      "main_class": "MauLocalSTT",
+      "maubot": "0.1.0",
+      "modules": [
+        "maulocalstt"
+      ],
+      "version": "1.0.2"
+    }
+  },
+  "manhole": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/manhole/releases",
+        "description": "A plugin that lets you access a Python shell inside maubot.",
+        "downloadPage": "https://github.com/maubot/manhole/releases",
+        "homepage": "https://github.com/maubot/manhole"
+      }
+    },
+    "github": {
+      "hash": "sha256-F3Nrl6NOUmwDuBsCxIfopRnLU9rltdaCJL/OcNGzw1Q=",
+      "owner": "maubot",
+      "repo": "manhole",
+      "rev": "47f1f7501b5b353a0fa74bf5929cead559496174"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.manhole",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "ManholeBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "manhole"
+      ],
+      "version": "1.0.0"
+    }
+  },
+  "media": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/media/releases",
+        "description": "A bot that replies with the MXC URI of images you send it.",
+        "downloadPage": "https://github.com/maubot/media/releases",
+        "homepage": "https://github.com/maubot/media"
+      }
+    },
+    "github": {
+      "hash": "sha256-00zESMN2WxKYPAQbpyvDpkyJIFkILLOP+m256k0Avzk=",
+      "owner": "maubot",
+      "repo": "media",
+      "rev": "v1.0.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "id": "xyz.maubot.media",
+      "license": "MIT",
+      "main_class": "MediaBot",
+      "modules": [
+        "media"
+      ],
+      "version": "1.0.0"
+    }
+  },
+  "metric": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/edwardsdean/maubot_metric_bot/releases",
+        "description": "A bot that will reply to a message that contains imperial units and replace them with metric units.",
+        "downloadPage": "https://github.com/edwardsdean/maubot_metric_bot/releases",
+        "homepage": "https://github.com/edwardsdean/maubot_metric_bot"
+      }
+    },
+    "github": {
+      "hash": "sha256-qtGGCaATIzJMRhLWzFN0kSa6P/tlckCkxatKEfXyi0E=",
+      "owner": "edwardsdean",
+      "repo": "maubot_metric_bot",
+      "rev": "0.0.4"
+    },
+    "manifest": {
+      "database": false,
+      "id": "me.edwardsdean.maubot.metric",
+      "license": "MIT",
+      "main_class": "MetricPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "metric"
+      ],
+      "version": "0.0.4"
+    }
+  },
+  "ntfy": {
+    "attrs": {
+      "meta": {
+        "description": "A bot for subscribing to [ntfy](https://ntfy.sh) topics and posting messages to Matrix.",
+        "homepage": "https://gitlab.com/999eagle/maubot-ntfy"
+      }
+    },
+    "gitlab": {
+      "hash": "sha256-6522dVqhGoPc/qjz65D3kXHks5LLb3yVe0K5abqdXrw=",
+      "owner": "999eagle",
+      "repo": "maubot-ntfy",
+      "rev": "256aa8f315cbb184eba0256c2ec818abbdd2d408"
+    },
+    "manifest": {
+      "config": true,
+      "database": true,
+      "database_type": "asyncpg",
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "cloud.catgirl.ntfy",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "NtfyBot",
+      "maubot": "0.3.0",
+      "modules": [
+        "ntfy"
+      ],
+      "soft_dependencies": [
+        "emoji>=2.0"
+      ],
+      "version": "0.1.0"
+    }
+  },
+  "ovgumensabot": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/v411e/ovgumensabot/releases",
+        "description": "A bot that automatically sends meals from OvGU canteen every day.",
+        "downloadPage": "https://github.com/v411e/ovgumensabot/releases",
+        "homepage": "https://github.com/v411e/ovgumensabot"
+      }
+    },
+    "github": {
+      "hash": "sha256-nuOLUPwE0F15FgOtbq3+qmNNd2eHRrRNJPMM+v1Ksy0=",
+      "owner": "v411e",
+      "repo": "ovgumensabot",
+      "rev": "v0.0.8"
+    },
+    "manifest": {
+      "database": true,
+      "dependencies": [
+        "requests",
+        "beautifulsoup4"
+      ],
+      "extra_files": [
+        "LICENSE.txt"
+      ],
+      "id": "com.valentinriess.mensa",
+      "license": "MIT",
+      "main_class": "MensaBot",
+      "maubot": "0.2.0",
+      "modules": [
+        "ovgumensabot"
+      ],
+      "version": "0.0.8"
+    }
+  },
+  "pingcheck": {
+    "attrs": {
+      "meta": {
+        "description": "A bot to ping the echo bot and send rtt to Icinga passive check.",
+        "homepage": "https://edugit.org/nik/maubot-pingcheck"
+      }
+    },
+    "gitlab": {
+      "domain": "edugit.org",
+      "hash": "sha256-ljNi4si7ZkcCidO5l9jJcgdrj4P8RESB1wznxJvzPNQ=",
+      "owner": "nik",
+      "repo": "maubot-pingcheck",
+      "rev": "0.1.0"
+    },
+    "manifest": {
+      "dependencie": [
+        "requests"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.pingcheck",
+      "license": "MIT",
+      "main_class": "PingcheckBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "pingcheck"
+      ],
+      "version": "0.1.0"
+    }
+  },
+  "pocket": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/jaywink/maubot-pocket/blob/v0.2.5/CHANGELOG.md",
+        "description": "A bot integrating with Pocket to fetch articles and archive them.",
+        "downloadPage": "https://github.com/jaywink/maubot-pocket/releases",
+        "homepage": "https://github.com/jaywink/maubot-pocket"
+      }
+    },
+    "github": {
+      "hash": "sha256-I3+nfdkW9WkscsAYN2E1jEyoVujaN/zOTJ8HLReqq44=",
+      "owner": "jaywink",
+      "repo": "maubot-pocket",
+      "rev": "v0.2.5"
+    },
+    "manifest": {
+      "database": true,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "me.jasonrobinson.pocket",
+      "license": "MIT",
+      "main_class": "PocketPlugin",
+      "maubot": "0.3.1",
+      "modules": [
+        "pocket"
+      ],
+      "version": "0.2.5",
+      "webapp": true
+    }
+  },
+  "poll": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/TomCasavant/PollMaubot/releases",
+        "description": "A bot that will create a simple poll for users in a room.",
+        "downloadPage": "https://github.com/TomCasavant/PollMaubot/releases",
+        "homepage": "https://github.com/TomCasavant/PollMaubot"
+      }
+    },
+    "github": {
+      "hash": "sha256-o+9DP9QHZEibmAhy13/fJn72r8hLPY1uuOrTXchjRmw=",
+      "owner": "TomCasavant",
+      "repo": "PollMaubot",
+      "rev": "3.0.1"
+    },
+    "manifest": {
+      "database": false,
+      "id": "casavant.tom.poll",
+      "license": "MIT",
+      "main_class": "PollPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "poll"
+      ],
+      "version": "3.0.1"
+    }
+  },
+  "random-quote": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/itrich/QuoteMaubot/releases",
+        "description": "A plugin to answer with a random quote from a configurable list.",
+        "downloadPage": "https://github.com/itrich/QuoteMaubot/releases",
+        "homepage": "https://github.com/itrich/QuoteMaubot"
+      }
+    },
+    "github": {
+      "hash": "sha256-NJ6sUC7L4f7ERDAKNcs2RD8q4mGzW0d4rhxh+wqzhVw=",
+      "owner": "itrich",
+      "repo": "QuoteMaubot",
+      "rev": "v0.0.1"
+    },
+    "manifest": {
+      "config": true,
+      "database": false,
+      "dependencies": null,
+      "extra_files": null,
+      "id": "net.itrich.maubot.quote",
+      "license": "MIT",
+      "main_class": "QuotePlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "quote"
+      ],
+      "soft_dependencies": null,
+      "version": "0.0.1",
+      "webapp": false
+    }
+  },
+  "random-subreddit-post": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/williamkray/maubot-reddit/releases",
+        "description": "A plugin that returns a random post from a given subreddit.",
+        "downloadPage": "https://github.com/williamkray/maubot-reddit/releases",
+        "homepage": "https://github.com/williamkray/maubot-reddit"
+      }
+    },
+    "github": {
+      "hash": "sha256-xinkSNTWTdKSNE0YFLS3yy26HbqD+I11Z8dGVh/tHNw=",
+      "owner": "williamkray",
+      "repo": "maubot-reddit",
+      "rev": "v0.3.6"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.jobmachine.reddit",
+      "license": "MIT",
+      "main_class": "Post",
+      "maubot": "0.1.0",
+      "modules": [
+        "reddit"
+      ],
+      "version": "0.3.6"
+    }
+  },
+  "reactbot": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/reactbot/releases",
+        "description": "A bot that responds to messages that match predefined rules.",
+        "downloadPage": "https://github.com/maubot/reactbot/releases",
+        "homepage": "https://github.com/maubot/reactbot"
+      }
+    },
+    "github": {
+      "hash": "sha256-ARN9zbOFJCVoqz6ooLRm9DDKUZpbQf7KcfsfoOxeeLE=",
+      "owner": "maubot",
+      "repo": "reactbot",
+      "rev": "v2.2.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.reactbot",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "ReactBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "reactbot"
+      ],
+      "version": "2.2.0"
+    }
+  },
+  "redactbot": {
+    "attrs": {
+      "meta": {
+        "description": "A bot that immediately redacts any posted file (except for whitelisted types).",
+        "homepage": "https://gitlab.com/sspaeth/redactbot"
+      }
+    },
+    "gitlab": {
+      "hash": "sha256-uIcXnD3nXVT7mA9SgdyrXGIZuW4CgnCVbCP7TxxnziM=",
+      "owner": "sspaeth",
+      "repo": "redactbot",
+      "rev": "2bca49b14024844c0aa53b9c4802ef6f8702d99d"
+    },
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.redactbot",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "RedactBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "redactbot"
+      ],
+      "version": "2.2.0"
+    }
+  },
+  "reminder": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/reminder/releases",
+        "description": "A bot to remind you about things.",
+        "downloadPage": "https://github.com/maubot/reminder/releases",
+        "homepage": "https://github.com/maubot/reminder"
+      }
+    },
+    "github": {
+      "hash": "sha256-BCyeWl5xPKvUGWkrnuGh498gKxfhfNZ7oBrsZzpKxkg=",
+      "owner": "maubot",
+      "repo": "reminder",
+      "rev": "v0.2.2"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "database": true,
+      "dependencies": [
+        "python-dateutil",
+        "pytz"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.reminder",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "ReminderBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "reminder"
+      ],
+      "version": "0.2.2"
+    }
+  },
+  "reminder-agenda": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/MxMarx/reminder/releases",
+        "description": "Create reminders, recurring reminders, and agenda items. A maubot port of [matrix-reminder-bot](https://github.com/anoadragon453/matrix-reminder-bot/tree/master) combined with [maubot/reminder](https://github.com/maubot/reminder)",
+        "downloadPage": "https://github.com/MxMarx/reminder/releases",
+        "homepage": "https://github.com/MxMarx/reminder"
+      }
+    },
+    "github": {
+      "hash": "sha256-3I2EIbyGgtj1NblLAEKCVLSDFnT25YRAp5RXvFHdu2w=",
+      "owner": "MxMarx",
+      "repo": "reminder",
+      "rev": "v0.1.1"
+    },
+    "manifest": {
+      "database": true,
+      "database_type": "asyncpg",
+      "dependencies": [
+        "pytz",
+        "dateparser",
+        "apscheduler"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.bytemarx.reminder",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "ReminderBot",
+      "maubot": "0.4.1",
+      "modules": [
+        "reminder"
+      ],
+      "soft_dependencies": [
+        "cron_descriptor"
+      ],
+      "version": "0.1.1"
+    }
+  },
+  "rss": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/rss/releases",
+        "description": "A bot that posts RSS feed updates to Matrix.",
+        "downloadPage": "https://github.com/maubot/rss/releases",
+        "homepage": "https://github.com/maubot/rss"
+      }
+    },
+    "github": {
+      "hash": "sha256-p/xJpJbzsOeQGcowvOhJSclPtmZyNyBaZBz+mexVqIY=",
+      "owner": "maubot",
+      "repo": "rss",
+      "rev": "v0.3.2"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "database": true,
+      "database_type": "asyncpg",
+      "dependencies": [
+        "feedparser>=5.1"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.rss",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "RSSBot",
+      "maubot": "0.3.0",
+      "modules": [
+        "rss"
+      ],
+      "version": "0.3.2"
+    }
+  },
+  "satwcomic": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/satwcomic/releases",
+        "description": "A bot to view SatWComics.",
+        "downloadPage": "https://github.com/maubot/satwcomic/releases",
+        "homepage": "https://github.com/maubot/satwcomic"
+      }
+    },
+    "github": {
+      "hash": "sha256-TyXrPUUQdLC0IXbpQquA9eegzDoBm1g2WaeQuqhYPco=",
+      "owner": "maubot",
+      "repo": "satwcomic",
+      "rev": "0241bce4807ce860578e2f4fde76bb043bcebe95"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "database": true,
+      "dependencies": [
+        "pyquery"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.satwcomic",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "SatWBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "satwcomic"
+      ],
+      "soft_dependencies": [
+        "Pillow"
+      ],
+      "version": "1.0.0"
+    }
+  },
+  "sed": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/sed/releases",
+        "description": "A bot to do sed-like replacements.",
+        "downloadPage": "https://github.com/maubot/sed/releases",
+        "homepage": "https://github.com/maubot/sed"
+      }
+    },
+    "github": {
+      "hash": "sha256-raVUYEEuNHDFEE+b/yb8DyokFOrbVn0miul+2tJbR+s=",
+      "owner": "maubot",
+      "repo": "sed",
+      "rev": "v1.1.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "id": "xyz.maubot.sed",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "SedBot",
+      "modules": [
+        "sed"
+      ],
+      "version": "1.1.0"
+    }
+  },
+  "send-custom-html": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/coffeebank/coffee-maubot/releases",
+        "description": "Have the bot send a message as custom HTML. Test and preview formatted HTML body in Matrix.",
+        "downloadPage": "https://github.com/coffeebank/coffee-maubot/releases",
+        "homepage": "https://github.com/coffeebank/coffee-maubot/tree/master/send-custom-html"
+      },
+      "postPatch": "cd send-custom-html"
+    },
+    "github": {
+      "hash": "sha256-k+M/Wk4nyXUZBJxmxQr64dPp3rK7i1oQeLFtncle3dI=",
+      "owner": "coffeebank",
+      "repo": "coffee-maubot",
+      "rev": "b25112508d65f7560910e67d3074dd60f4048821"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "coffee.maubot.sendcustomhtml",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "SendCustomHtmlBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "sendcustomhtml"
+      ],
+      "version": "0.1.0.6"
+    }
+  },
+  "social-media-download": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/ggogel/SocialMediaDownloadMaubot/releases",
+        "description": "A bot that that downloads content from various social media websites given a link.",
+        "downloadPage": "https://github.com/ggogel/SocialMediaDownloadMaubot/releases",
+        "homepage": "https://github.com/ggogel/SocialMediaDownloadMaubot"
+      }
+    },
+    "github": {
+      "hash": "sha256-RMyQzGz2Z4m9FN0Nt5E6Tj0yZarysygCtvEZDfG143M=",
+      "owner": "ggogel",
+      "repo": "SocialMediaDownloadMaubot",
+      "rev": "1.2.0"
+    },
+    "manifest": {
+      "config": true,
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "me.gogel.maubot.socialmediadownload",
+      "license": "MIT",
+      "main_class": "socialmediadownload/SocialMediaDownloadPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "instaloader",
+        "socialmediadownload"
+      ],
+      "version": "1.2.0"
+    }
+  },
+  "songwhip": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/songwhip/releases",
+        "description": "A bot to post Songwhip links.",
+        "downloadPage": "https://github.com/maubot/songwhip/releases",
+        "homepage": "https://github.com/maubot/songwhip"
+      }
+    },
+    "github": {
+      "hash": "sha256-oghM1IECN88KhwRhGZCTJo4uMwc495sWNHeK9KaK4FU=",
+      "owner": "maubot",
+      "repo": "songwhip",
+      "rev": "c8d00999ab77a77d0036ee6c71b2cf11583f8edd"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "id": "xyz.maubot.songwhip",
+      "license": "MIT",
+      "main_class": "SongwhipBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "songwhip"
+      ],
+      "version": "0.1.0"
+    }
+  },
+  "subreddit-linkifier": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/TomCasavant/RedditMaubot/releases",
+        "description": "A bot that condescendingly corrects a user when they enter an r/subreddit without providing a link to that subreddit.",
+        "downloadPage": "https://github.com/TomCasavant/RedditMaubot/releases",
+        "homepage": "https://github.com/TomCasavant/RedditMaubot"
+      }
+    },
+    "github": {
+      "hash": "sha256-4F59gCmSl7FNWTys5c9r4Ha0gschDyiYjsX7emhRwuU=",
+      "owner": "TomCasavant",
+      "repo": "RedditMaubot",
+      "rev": "1.5.0"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "casavant.tom.reddit",
+      "license": "MIT",
+      "main_class": "RedditPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "reddit"
+      ],
+      "version": "1.5.0"
+    }
+  },
+  "supportportal": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/supportportal/releases",
+        "description": "A bot to manage customer support on Matrix.",
+        "downloadPage": "https://github.com/maubot/supportportal/releases",
+        "homepage": "https://github.com/maubot/supportportal"
+      }
+    },
+    "github": {
+      "hash": "sha256-9CmA9KfkOkzqTycAGE8jaZuDwS7IvFwWGUer3iR8ooM=",
+      "owner": "maubot",
+      "repo": "supportportal",
+      "rev": "v0.1.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "config": true,
+      "database": true,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.supportportal",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "SupportPortalBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "supportportal"
+      ],
+      "version": "0.1.0"
+    }
+  },
+  "tex": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/tex/releases",
+        "description": "A bot that renders LaTeX.",
+        "downloadPage": "https://github.com/maubot/tex/releases",
+        "homepage": "https://github.com/maubot/tex"
+      }
+    },
+    "github": {
+      "hash": "sha256-6Iq/rOiMQiFtKvAYeYuF+2xXVcR7VIxQTejbpYBpy2A=",
+      "owner": "maubot",
+      "repo": "tex",
+      "rev": "a6617da41409b5fc5960dc8de06046bbac091318"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "dependencies": [
+        "matplotlib",
+        "Pillow"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.tex",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "TexBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "tex"
+      ],
+      "version": "0.1.0"
+    }
+  },
+  "ticker": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/williamkray/maubot-ticker/releases",
+        "description": "A bot to return financial data about a stock or cryptocurrency.",
+        "downloadPage": "https://github.com/williamkray/maubot-ticker/releases",
+        "homepage": "https://github.com/williamkray/maubot-ticker"
+      }
+    },
+    "github": {
+      "hash": "sha256-o/AjzuNaVzHKnpV10p19vDJthEUZ75nAg3KT0Ff3LEg=",
+      "owner": "williamkray",
+      "repo": "maubot-ticker",
+      "rev": "v0.0.6"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.jobmachine.tickerbot",
+      "license": "MIT",
+      "main_class": "TickerBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "tickerbot"
+      ],
+      "version": "0.0.6"
+    }
+  },
+  "timein": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/coffeebank/coffee-maubot/releases",
+        "description": "Get the time in specific cities. Check timezones.  !timein New York  (Python 3.9+) (Python <3.9 requires pytz, fuzzywuzzy)",
+        "downloadPage": "https://github.com/coffeebank/coffee-maubot/releases",
+        "homepage": "https://github.com/coffeebank/coffee-maubot/tree/master/timein"
+      },
+      "postPatch": "cd timein"
+    },
+    "github": {
+      "hash": "sha256-k+M/Wk4nyXUZBJxmxQr64dPp3rK7i1oQeLFtncle3dI=",
+      "owner": "coffeebank",
+      "repo": "coffee-maubot",
+      "rev": "b25112508d65f7560910e67d3074dd60f4048821"
+    },
+    "manifest": {
+      "database": false,
+      "dependencies": [
+        "pytz",
+        "fuzzywuzzy"
+      ],
+      "id": "coffee.maubot.timein",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "TimeinBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "timein"
+      ],
+      "version": "0.1.0.6"
+    }
+  },
+  "tmdb": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://codeberg.org/lomion/tmdb-bot/releases",
+        "description": "A bot that posts information about movies fetched from TheMovieDB.org.",
+        "downloadPage": "https://codeberg.org/lomion/tmdb-bot/releases",
+        "homepage": "https://codeberg.org/lomion/tmdb-bot",
+        "license": "AGPL-3.0-only"
+      }
+    },
+    "gitea": {
+      "domain": "codeberg.org",
+      "hash": "sha256-QeKpIukLCeJOxi/+H+Hukf7mA38gvf8q37o4FOuigAU=",
+      "owner": "lomion",
+      "repo": "tmdb-bot",
+      "rev": "rel.1.3.0"
+    },
+    "manifest": {
+      "database": true,
+      "id": "lomion.tmdb",
+      "license": "AGPL 3.0",
+      "main_class": "TmdbBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "tmdb"
+      ],
+      "version": "1.3.0"
+    }
+  },
+  "token": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/yoxcu/maubot-token/releases",
+        "description": "A maubot to create and manage your synapse user registration tokens.",
+        "downloadPage": "https://github.com/yoxcu/maubot-token/releases",
+        "homepage": "https://github.com/yoxcu/maubot-token"
+      }
+    },
+    "github": {
+      "hash": "sha256-8ZAH9Kn0EQYY9gLx48gF+aEsFOdlZlrbUIvLMP0uwi4=",
+      "owner": "yoxcu",
+      "repo": "maubot-token",
+      "rev": "v1.1.0"
+    },
+    "manifest": {
+      "config": true,
+      "database": false,
+      "extra_files": [
+        "base-config.yaml",
+        "LICENSE"
+      ],
+      "id": "de.yoxcu.token",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "TokenBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "tokenbot"
+      ],
+      "version": "1.1.0"
+    }
+  },
+  "translate": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/translate/releases",
+        "description": "A bot to translate words.",
+        "downloadPage": "https://github.com/maubot/translate/releases",
+        "homepage": "https://github.com/maubot/translate"
+      }
+    },
+    "github": {
+      "hash": "sha256-eaiTNjnBa0r2zeCzYZH/k04dGftBSGuGaDvwOGKKZDA=",
+      "owner": "maubot",
+      "repo": "translate",
+      "rev": "v0.1.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.translate",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "TranslatorBot",
+      "modules": [
+        "translate"
+      ],
+      "version": "0.1.0"
+    }
+  },
+  "trump": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/jeffcasavant/MaubotTrumpTweet/releases",
+        "description": "A bot that generates a Trump tweet with the given content.",
+        "downloadPage": "https://github.com/jeffcasavant/MaubotTrumpTweet/releases",
+        "homepage": "https://github.com/jeffcasavant/MaubotTrumpTweet"
+      }
+    },
+    "github": {
+      "hash": "sha256-WlrFt+uj6E7Ecg+3KW6fjrMXSUP5YFA5ZyitvBON3pA=",
+      "owner": "jeffcasavant",
+      "repo": "MaubotTrumpTweet",
+      "rev": "v1.1.2"
+    },
+    "isPoetry": true,
+    "manifest": {
+      "database": false,
+      "dependencies": [
+        "Pillow>=9.0.1, <10.0.0"
+      ],
+      "extra_files": [
+        "res/font/Roboto-Black.ttf",
+        "res/font/Roboto-Regular.ttf",
+        "res/img/avatars/cartoon0.jpg",
+        "res/img/avatars/cartoon1.jpg",
+        "res/img/avatars/cartoon2.jpg",
+        "res/img/avatars/cartoon3.jpg",
+        "res/img/avatars/cartoon4.jpg",
+        "res/img/avatars/cartoon5.jpg",
+        "res/img/avatars/cartoon6.jpg",
+        "res/img/avatars/cartoon7.jpg",
+        "res/img/avatars/cartoon8.jpg",
+        "res/img/avatars/cartoon9.jpg",
+        "res/img/avatars/default.png",
+        "res/img/avatars/real0.jpg",
+        "res/img/avatars/real1.jpg",
+        "res/img/avatars/real10.jpg",
+        "res/img/avatars/real11.jpg",
+        "res/img/avatars/real12.jpg",
+        "res/img/avatars/real13.jpg",
+        "res/img/avatars/real14.jpg",
+        "res/img/avatars/real15.jpeg",
+        "res/img/avatars/real16.jpg",
+        "res/img/avatars/real17.jpg",
+        "res/img/avatars/real18.jpg",
+        "res/img/avatars/real19.jpeg",
+        "res/img/avatars/real2.jpg",
+        "res/img/avatars/real20.jpg",
+        "res/img/avatars/real21.jpg",
+        "res/img/avatars/real22.jpg",
+        "res/img/avatars/real23.jpg",
+        "res/img/avatars/real24.jpg",
+        "res/img/avatars/real25.jpg",
+        "res/img/avatars/real26.jpg",
+        "res/img/avatars/real27.jpg",
+        "res/img/avatars/real28.jpeg",
+        "res/img/avatars/real29.jpg",
+        "res/img/avatars/real3.jpeg",
+        "res/img/avatars/real4.jpg",
+        "res/img/avatars/real5.jpg",
+        "res/img/avatars/real6.jpeg",
+        "res/img/avatars/real7.jpg",
+        "res/img/avatars/real8.jpeg",
+        "res/img/avatars/real9.jpg",
+        "res/img/like.png",
+        "res/img/reply.png",
+        "res/img/retweet.png",
+        "res/img/trump.jpg",
+        "res/img/verified.png"
+      ],
+      "id": "casavant.jeff.trumptweet",
+      "license": "MIT",
+      "main_class": "TrumpTweetPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "trumptweet"
+      ],
+      "version": "1.1.2"
+    }
+  },
+  "twilio": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/jeffcasavant/MaubotTwilio/releases",
+        "description": "Maubot-based SMS bridge.",
+        "downloadPage": "https://github.com/jeffcasavant/MaubotTwilio/releases",
+        "homepage": "https://github.com/jeffcasavant/MaubotTwilio"
+      }
+    },
+    "github": {
+      "hash": "sha256-b1M9+uXVq3yb4IgcoL/5YqRZ8a13HfyqMw6QFBuBLAM=",
+      "owner": "jeffcasavant",
+      "repo": "MaubotTwilio",
+      "rev": "0.1.0"
+    },
+    "manifest": {
+      "database": true,
+      "dependencies": [
+        "maubot==0.1.0b1",
+        "mautrix==0.5.0b2"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.casavant.jeff.twilio",
+      "license": "MIT",
+      "main_class": "TwilioPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "twilio_plugin"
+      ],
+      "version": "0.1.0",
+      "webapp": true
+    }
+  },
+  "urban": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/dvdgsng/UrbanMaubot/releases",
+        "description": "A bot that fetches definitions from [Urban Dictionary](https://www.urbandictionary.com/).",
+        "downloadPage": "https://github.com/dvdgsng/UrbanMaubot/releases",
+        "homepage": "https://github.com/dvdgsng/UrbanMaubot"
+      }
+    },
+    "github": {
+      "hash": "sha256-JQ2PpsH/Nno7XqcF1HpZHM/Qv/gta/xGPjfIKtY+pxM=",
+      "owner": "dvdgsng",
+      "repo": "UrbanMaubot",
+      "rev": "1.0.2"
+    },
+    "manifest": {
+      "id": "com.dvdgsng.maubot.urban",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "UrbanDictBot",
+      "modules": [
+        "urban"
+      ],
+      "version": "1.0.2"
+    }
+  },
+  "urlpreview": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/coffeebank/coffee-maubot/releases",
+        "description": "Add URL preview embeds to Matrix! A bot that responds to links with a link preview embed, using Matrix API to fetch meta tags. Supports fetching JSON previews.",
+        "downloadPage": "https://github.com/coffeebank/coffee-maubot/releases",
+        "homepage": "https://github.com/coffeebank/coffee-maubot/tree/master/urlpreview"
+      },
+      "postPatch": "cd urlpreview"
+    },
+    "github": {
+      "hash": "sha256-k+M/Wk4nyXUZBJxmxQr64dPp3rK7i1oQeLFtncle3dI=",
+      "owner": "coffeebank",
+      "repo": "coffee-maubot",
+      "rev": "b25112508d65f7560910e67d3074dd60f4048821"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "coffee.maubot.urlpreview",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "UrlPreviewBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "urlpreview"
+      ],
+      "version": "0.3.4.26"
+    }
+  },
+  "weather": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/kellya/maubot-weather/blob/v0.4.1/CHANGELOG.md",
+        "description": "A bot to get the weather from wttr.in and return a single line of text for the location specified.",
+        "downloadPage": "https://github.com/kellya/maubot-weather/releases",
+        "homepage": "https://github.com/kellya/maubot-weather"
+      }
+    },
+    "github": {
+      "hash": "sha256-DHMsemVbiXONeg45IpeaP477fbgkftz5mZdI6OhRHOI=",
+      "owner": "kellya",
+      "repo": "maubot-weather",
+      "rev": "v0.4.1"
+    },
+    "manifest": {
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "com.arachnitech.weather",
+      "license": "MIT",
+      "main_class": "WeatherBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "weather"
+      ],
+      "version": "0.4.1"
+    }
+  },
+  "webhook": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/jkhsjdhjs/maubot-webhook/releases",
+        "description": "Send messages to rooms via user-defined webhooks.",
+        "downloadPage": "https://github.com/jkhsjdhjs/maubot-webhook/releases",
+        "homepage": "https://github.com/jkhsjdhjs/maubot-webhook"
+      }
+    },
+    "github": {
+      "hash": "sha256-GGbd7PvW2P0u1h7Cp1GMuEg3uQ0osZBWWHzSW524aBc=",
+      "owner": "jkhsjdhjs",
+      "repo": "maubot-webhook",
+      "rev": "v0.2.0"
+    },
+    "manifest": {
+      "config": true,
+      "dependencies": [
+        "Jinja2~=3.1"
+      ],
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "me.jkhsjdhjs.maubot.webhook",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "WebhookPlugin",
+      "maubot": "0.3.1",
+      "modules": [
+        "plugin"
+      ],
+      "version": "0.2.0",
+      "webapp": true
+    }
+  },
+  "welcome": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/williamkray/maubot-welcome/releases",
+        "description": "A plugin that greets new people with a configurable message when they join a room.",
+        "downloadPage": "https://github.com/williamkray/maubot-welcome/releases",
+        "homepage": "https://github.com/williamkray/maubot-welcome"
+      }
+    },
+    "github": {
+      "hash": "sha256-8BIDj/kHys/Pw1n1lLtxjYOstI/UG5UAlxD+3rpKj0Q=",
+      "owner": "williamkray",
+      "repo": "maubot-welcome",
+      "rev": "a6d3e6cbea87056a1d4694f5379c9ae9d9cdf1c5"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "org.jobmachine.welcome",
+      "license": "MIT",
+      "main_class": "Greeter",
+      "maubot": "0.1.0",
+      "modules": [
+        "welcome"
+      ],
+      "version": "0.0.4"
+    }
+  },
+  "wolframalpha": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/ggogel/WolframAlphaMaubot/releases",
+        "description": "A bot that allows requesting information from [WolframAlpha](https://www.wolframalpha.com/).",
+        "downloadPage": "https://github.com/ggogel/WolframAlphaMaubot/releases",
+        "homepage": "https://github.com/ggogel/WolframAlphaMaubot"
+      }
+    },
+    "github": {
+      "hash": "sha256-2GJPAHc9xY7uznALpjzxkpAX16PBxMMSl3QMzjudA+w=",
+      "owner": "ggogel",
+      "repo": "WolframAlphaMaubot",
+      "rev": "v0.0.4"
+    },
+    "manifest": {
+      "database": false,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "me.gogel.maubot.wolframalpha",
+      "license": "MIT",
+      "main_class": "WolframAlphaPlugin",
+      "maubot": "0.1.0",
+      "modules": [
+        "wolframalpha"
+      ],
+      "version": "0.0.4"
+    }
+  },
+  "xkcd": {
+    "attrs": {
+      "meta": {
+        "changelog": "https://github.com/maubot/xkcd/releases",
+        "description": "A bot to view xkcd comics.",
+        "downloadPage": "https://github.com/maubot/xkcd/releases",
+        "homepage": "https://github.com/maubot/xkcd"
+      }
+    },
+    "github": {
+      "hash": "sha256-dtst/QuIZrMjk5RdbXjTksCbGwf8HCBsECDWtp70W1U=",
+      "owner": "maubot",
+      "repo": "xkcd",
+      "rev": "v1.2.0"
+    },
+    "isOfficial": true,
+    "manifest": {
+      "config": true,
+      "database": true,
+      "extra_files": [
+        "base-config.yaml"
+      ],
+      "id": "xyz.maubot.xkcd",
+      "license": "AGPL-3.0-or-later",
+      "main_class": "XKCDBot",
+      "maubot": "0.1.0",
+      "modules": [
+        "xkcd"
+      ],
+      "soft_dependencies": [
+        "python-magic>=0.4",
+        "Pillow>=5.1"
+      ],
+      "version": "1.2.0"
+    }
+  }
+}
diff --git a/nixpkgs/pkgs/tools/networking/maubot/plugins/generated.nix b/nixpkgs/pkgs/tools/networking/maubot/plugins/generated.nix
new file mode 100644
index 000000000000..241151eb6ca0
--- /dev/null
+++ b/nixpkgs/pkgs/tools/networking/maubot/plugins/generated.nix
@@ -0,0 +1,74 @@
+{ lib
+, fetchgit
+, fetchFromGitHub
+, fetchFromGitLab
+, fetchFromGitea
+, python3
+, poetry
+, buildMaubotPlugin
+}:
+
+let
+  json = builtins.fromJSON (builtins.readFile ./generated.json);
+in
+
+lib.flip builtins.mapAttrs json (name: entry:
+let
+  inherit (entry) manifest;
+
+  resolveDeps = deps: map
+    (name:
+      let
+        packageName = builtins.head (builtins.match "([^~=<>]*).*" name);
+        lower = lib.toLower packageName;
+        dash = builtins.replaceStrings ["_"] ["-"] packageName;
+        lowerDash = builtins.replaceStrings ["_"] ["-"] lower;
+      in
+        python3.pkgs.${packageName}
+        or python3.pkgs.${lower}
+        or python3.pkgs.${dash}
+        or python3.pkgs.${lowerDash}
+        or null)
+    (builtins.filter (x: x != "maubot" && x != null) deps);
+
+  reqDeps = resolveDeps (lib.toList (manifest.dependencies or null));
+  optDeps = resolveDeps (lib.toList (manifest.soft_dependencies or null));
+in
+
+lib.makeOverridable buildMaubotPlugin (entry.attrs // {
+  pname = manifest.id;
+  inherit (manifest) version;
+
+  src =
+    if entry?github then fetchFromGitHub entry.github
+    else if entry?git then fetchgit entry.git
+    else if entry?gitlab then fetchFromGitLab entry.gitlab
+    else if entry?gitea then fetchFromGitea entry.gitea
+    else throw "Invalid generated entry for ${manifest.id}: missing source";
+
+  propagatedBuildInputs = builtins.filter (x: x != null) (reqDeps ++ optDeps);
+
+  passthru.isOfficial = entry.isOfficial or false;
+
+  meta = entry.attrs.meta // {
+    license =
+      let
+        spdx = entry.attrs.meta.license or manifest.license or "unfree";
+        spdxLicenses = builtins.listToAttrs
+          (map (x: lib.nameValuePair x.spdxId x) (builtins.filter (x: x?spdxId) (builtins.attrValues lib.licenses)));
+      in
+      spdxLicenses.${spdx};
+    broken = builtins.any (x: x == null) reqDeps;
+  };
+} // lib.optionalAttrs (entry.isPoetry or false) {
+  nativeBuildInputs = [
+    poetry
+    (python3.withPackages (p: with p; [ toml ruamel-yaml isort ]))
+  ];
+
+  preBuild = lib.optionalString (entry?attrs.preBuild) (entry.attrs.preBuild + "\n") + ''
+    export HOME=$(mktemp -d)
+    [[ ! -d scripts ]] || patchShebangs --build scripts
+    make maubot.yaml
+  '';
+}))
diff --git a/nixpkgs/pkgs/tools/networking/maubot/plugins/update.py b/nixpkgs/pkgs/tools/networking/maubot/plugins/update.py
new file mode 100755
index 000000000000..a430753870fb
--- /dev/null
+++ b/nixpkgs/pkgs/tools/networking/maubot/plugins/update.py
@@ -0,0 +1,200 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i python3 -p git nurl "(python3.withPackages (ps: with ps; [ toml gitpython requests ruamel-yaml ]))"
+
+import git
+import json
+import os
+import subprocess
+import ruamel.yaml
+import sys
+import toml
+import zipfile
+
+from typing import Dict, List
+
+HOSTNAMES = {
+    'git.skeg1.se': 'gitlab',
+    'edugit.org': 'gitlab',
+    'codeberg.org': 'gitea',
+}
+PLUGINS: Dict[str, dict] = {}
+
+yaml = ruamel.yaml.YAML(typ='safe')
+
+TMP = os.environ.get('TEMPDIR', '/tmp')
+
+def process_repo(path: str, official: bool):
+    global PLUGINS
+    with open(path, 'rt') as f:
+        data = yaml.load(f)
+    name, repourl, license, desc = data['name'], data['repo'], data['license'], data['description']
+    origurl = repourl
+    if '/' in name or ' ' in name:
+        name = os.path.split(path)[-1].removesuffix('.yaml')
+    name = name.replace('_', '-')
+    if name in PLUGINS.keys():
+        raise ValueError(f'Duplicate plugin {name}, refusing to continue')
+    repodir = os.path.join(TMP, 'maubot-plugins', name)
+    plugindir = repodir
+    if '/tree/' in repourl:
+        repourl, rev_path = repourl.split('/tree/')
+        rev, subdir = rev_path.strip('/').split('/')
+        plugindir = os.path.join(plugindir, subdir)
+    else:
+        rev = None
+        subdir = None
+
+    if repourl.startswith('http:'):
+        repourl = 'https' + repourl[4:]
+    repourl = repourl.rstrip('/')
+    if not os.path.exists(repodir):
+        print('Fetching', name)
+        repo = git.Repo.clone_from(repourl + '.git', repodir)
+    else:
+        repo = git.Repo(repodir)
+    tags = sorted(repo.tags, key=lambda t: t.commit.committed_datetime)
+    tags = list(filter(lambda x: 'rc' not in str(x), tags))
+    if tags:
+        repo.git.checkout(tags[-1])
+        rev = str(tags[-1])
+    else:
+        rev = str(repo.commit('HEAD'))
+    ret: dict = {'attrs':{}}
+    if subdir:
+        ret['attrs']['postPatch'] = f'cd {subdir}'
+    domain, query = repourl.removeprefix('https://').split('/', 1)
+    hash = subprocess.run([
+        'nurl',
+        '--hash',
+        f'file://{repodir}',
+        rev
+    ], capture_output=True, check=True).stdout.decode('utf-8')
+    ret['attrs']['meta'] = {
+        'description': desc,
+        'homepage': origurl,
+    }
+    if domain.endswith('github.com'):
+        owner, repo = query.split('/')
+        ret['github'] = {
+            'owner': owner,
+            'repo': repo,
+            'rev': rev,
+            'hash': hash,
+        }
+        ret['attrs']['meta']['downloadPage'] = f'{repourl}/releases'
+        ret['attrs']['meta']['changelog'] = f'{repourl}/releases'
+        repobase = f'{repourl}/blob/{rev}'
+    elif HOSTNAMES.get(domain, 'gitea' if 'gitea.' in domain or 'forgejo.' in domain else None) == 'gitea':
+        owner, repo = query.split('/')
+        ret['gitea'] = {
+            'domain': domain,
+            'owner': owner,
+            'repo': repo,
+            'rev': rev,
+            'hash': hash,
+        }
+        repobase = f'{repourl}/src/commit/{rev}'
+        ret['attrs']['meta']['downloadPage'] = f'{repourl}/releases'
+        ret['attrs']['meta']['changelog'] = f'{repourl}/releases'
+    elif HOSTNAMES.get(domain, 'gitlab' if 'gitlab.' in domain else None) == 'gitlab':
+        owner, repo = query.split('/')
+        ret['gitlab'] = {
+            'owner': owner,
+            'repo': repo,
+            'rev': rev,
+            'hash': hash,
+        }
+        if domain != 'gitlab.com':
+            ret['gitlab']['domain'] = domain
+        repobase = f'{repourl}/-/blob/{rev}'
+    else:
+        raise ValueError(f'Is {domain} Gitea or Gitlab, or something else? Please specify in the Python script!')
+    if os.path.exists(os.path.join(plugindir, 'CHANGELOG.md')):
+        ret['attrs']['meta']['changelog'] = f'{repobase}/CHANGELOG.md'
+    if os.path.exists(os.path.join(plugindir, 'maubot.yaml')):
+        with open(os.path.join(plugindir, 'maubot.yaml'), 'rt') as f:
+            ret['manifest'] = yaml.load(f)
+    elif os.path.exists(os.path.join(plugindir, 'pyproject.toml')):
+        ret['isPoetry'] = True
+        with open(os.path.join(plugindir, 'pyproject.toml'), 'rt') as f:
+            data = toml.load(f)
+        deps = []
+        for key, val in data['tool']['poetry'].get('dependencies', {}).items():
+            if key in ['maubot', 'mautrix', 'python']:
+                continue
+            reqs = []
+            for req in val.split(','):
+                reqs.extend(poetry_to_pep(req))
+            deps.append(key + ', '.join(reqs))
+        ret['manifest'] = data['tool']['maubot']
+        ret['manifest']['id'] = data['tool']['poetry']['name']
+        ret['manifest']['version'] = data['tool']['poetry']['version']
+        ret['manifest']['license'] = data['tool']['poetry']['license']
+        if deps:
+            ret['manifest']['dependencies'] = deps
+    else:
+        raise ValueError(f'No maubot.yaml or pyproject.toml found in {repodir}')
+    # normalize non-spdx-conformant licenses this way
+    # (and fill out missing license info)
+    if 'license' not in ret['manifest'] or ret['manifest']['license'] in ['GPLv3', 'AGPL 3.0']:
+        ret['attrs']['meta']['license'] = license
+    elif ret['manifest']['license'] != license:
+        print(f"Warning: licenses for {repourl} don't match! {ret['manifest']['license']} != {license}")
+    if official:
+        ret['isOfficial'] = official
+    PLUGINS[name] = ret
+
+def next_incomp(ver_s: str) -> str:
+    ver = ver_s.split('.')
+    zero = False
+    for i in range(len(ver)):
+        try:
+            seg = int(ver[i])
+        except ValueError:
+            if zero:
+                ver = ver[:i]
+                break
+            continue
+        if zero:
+            ver[i] = '0'
+        elif seg:
+            ver[i] = str(seg + 1)
+            zero = True
+    return '.'.join(ver)
+
+def poetry_to_pep(ver_req: str) -> List[str]:
+    if '*' in ver_req:
+        raise NotImplementedError('Wildcard poetry versions not implemented!')
+    if ver_req.startswith('^'):
+        return ['>=' + ver_req[1:], '<' + next_incomp(ver_req[1:])]
+    if ver_req.startswith('~'):
+        return ['~=' + ver_req[1:]]
+    return [ver_req]
+
+def main():
+    cache_path = os.path.join(TMP, 'maubot-plugins')
+    if not os.path.exists(cache_path):
+        os.makedirs(cache_path)
+        git.Repo.clone_from('https://github.com/maubot/plugins.maubot.xyz', os.path.join(cache_path, '_repo'))
+    else:
+        pass
+
+    repodir = os.path.join(cache_path, '_repo')
+
+    for suffix, official in (('official', True), ('thirdparty', False)):
+        directory = os.path.join(repodir, 'data', 'plugins', suffix)
+        for plugin_name in os.listdir(directory):
+            process_repo(os.path.join(directory, plugin_name), official)
+
+    if os.path.isdir('pkgs/tools/networking/maubot/plugins'):
+        generated = 'pkgs/tools/networking/maubot/plugins/generated.json'
+    else:
+        script_dir = os.path.dirname(os.path.realpath(__file__))
+        generated = os.path.join(script_dir, 'generated.json')
+
+    with open(generated, 'wt') as file:
+        json.dump(PLUGINS, file, indent='  ', separators=(',', ': '), sort_keys=True)
+        file.write('\n')
+
+if __name__ == '__main__':
+    main()
diff --git a/nixpkgs/pkgs/tools/networking/maubot/wrapper.nix b/nixpkgs/pkgs/tools/networking/maubot/wrapper.nix
new file mode 100644
index 000000000000..baa0c29052e9
--- /dev/null
+++ b/nixpkgs/pkgs/tools/networking/maubot/wrapper.nix
@@ -0,0 +1,70 @@
+{ lib
+, symlinkJoin
+, runCommand
+, unwrapped
+, python3
+, formats
+}:
+
+let wrapper = { pythonPackages ? (_: [ ]), plugins ? (_: [ ]), baseConfig ? null }:
+  let
+    plugins' = plugins unwrapped.plugins;
+    extraPythonPackages = builtins.concatLists (map (p: p.propagatedBuildInputs or [ ]) plugins');
+  in
+  symlinkJoin {
+    name = "${unwrapped.pname}-with-plugins-${unwrapped.version}";
+
+    inherit unwrapped;
+    paths = lib.optional (baseConfig != null) unwrapped ++ plugins';
+    pythonPath = lib.optional (baseConfig == null) unwrapped ++ pythonPackages python3.pkgs ++ extraPythonPackages;
+
+    nativeBuildInputs = [ python3.pkgs.wrapPython ];
+
+    postBuild = ''
+      rm -f $out/nix-support/propagated-build-inputs
+      rmdir $out/nix-support || true
+      ${lib.optionalString (baseConfig != null) ''
+        rm $out/${python3.sitePackages}/maubot/example-config.yaml
+        substituteAll ${(formats.yaml { }).generate "example-config.yaml" (lib.recursiveUpdate baseConfig {
+          plugin_directories = lib.optionalAttrs (plugins' != []) {
+            load = [ "@out@/lib/maubot-plugins" ] ++ (baseConfig.plugin_directories.load or []);
+          };
+          # Normally it should be set to false by default to take it from package
+          # root, but aiohttp doesn't follow symlinks when serving static files
+          # unless follow_symlinks=True is passed. Instead of patching maubot, use
+          # this non-invasive approach
+          # XXX: would patching maubot be better? See:
+          # https://github.com/maubot/maubot/blob/75879cfb9370aade6fa0e84e1dde47222625139a/maubot/server.py#L106
+          server.override_resource_path =
+            if builtins.isNull (baseConfig.server.override_resource_path or null)
+            then "${unwrapped}/${python3.sitePackages}/maubot/management/frontend/build"
+            else baseConfig.server.override_resource_path;
+        })})} $out/${python3.sitePackages}/maubot/example-config.yaml
+        rm -rf $out/bin
+      ''}
+      mkdir -p $out/bin
+      cp $unwrapped/bin/.mbc-wrapped $out/bin/mbc
+      cp $unwrapped/bin/.maubot-wrapped $out/bin/maubot
+      wrapPythonProgramsIn "$out/bin" "${lib.optionalString (baseConfig != null) "$out "}$pythonPath"
+    '';
+
+    passthru = {
+      inherit unwrapped;
+      python = python3;
+      withPythonPackages = filter: wrapper {
+        pythonPackages = pkgs: pythonPackages pkgs ++ filter pkgs;
+        inherit plugins baseConfig;
+      };
+      withPlugins = filter: wrapper {
+        plugins = pkgs: plugins pkgs ++ filter pkgs;
+        inherit pythonPackages baseConfig;
+      };
+      withBaseConfig = baseConfig: wrapper {
+        inherit baseConfig pythonPackages plugins;
+      };
+    };
+
+    meta.priority = (unwrapped.meta.priority or 0) - 1;
+  };
+in
+wrapper
diff --git a/nixpkgs/pkgs/tools/networking/muffet/default.nix b/nixpkgs/pkgs/tools/networking/muffet/default.nix
index 19458f6461bb..133eaf3b27ba 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.2";
+  version = "2.9.3";
 
   src = fetchFromGitHub {
     owner = "raviqqe";
     repo = "muffet";
     rev = "v${version}";
-    hash = "sha256-M+yId2cNTO1n+E0UmMJK7aLmeDdXnI3McqTxL5EvB+A=";
+    hash = "sha256-w9PoKGxZdP/sKdlTlnWBMqDPDLUvcYubkCyNHUm3AAc=";
   };
 
-  vendorHash = "sha256-NTQlhLlSPh9+Il08T9I2qc+BqIo9RniOFG9Dgeez1QA=";
+  vendorHash = "sha256-2an4xj1gqQqj9NrSdTAss7hn6SiWoiq3RQ2xxUlSuaE=";
 
   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 b9a9aa78d6fc..c74d08029986 100644
--- a/nixpkgs/pkgs/tools/networking/netbird/default.nix
+++ b/nixpkgs/pkgs/tools/networking/netbird/default.nix
@@ -30,16 +30,16 @@ let
 in
 buildGoModule rec {
   pname = "netbird";
-  version = "0.24.2";
+  version = "0.24.3";
 
   src = fetchFromGitHub {
     owner = "netbirdio";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-/gSQiBlcOeQQud8rXPIjY88+jjC0/6S+OTmFqhQxQVM=";
+    hash = "sha256-r/2P0QeILO0t5GIXD6yrqdUdOpPzNfBIniPhKdlJ+0g=";
   };
 
-  vendorHash = "sha256-mSK5qQqPd6pTDLIBUa2MK8nNdi1VzNRU+GEaW+lGLpY=";
+  vendorHash = "sha256-FTr36gndWTrpEKo7KXdZJIR7aM0jrEOTFm1JlxokRaw=";
 
   nativeBuildInputs = [ installShellFiles ] ++ lib.optional ui pkg-config;
 
@@ -89,7 +89,7 @@ buildGoModule rec {
       '')
       modules) + lib.optionalString (stdenv.isLinux && ui) ''
     mkdir -p $out/share/pixmaps
-    cp $src/client/ui/disconnected.png $out/share/pixmaps/netbird.png
+    cp $src/client/ui/netbird-systemtray-default.png $out/share/pixmaps/netbird.png
 
     mkdir -p $out/share/applications
     cp $src/client/ui/netbird.desktop $out/share/applications/netbird.desktop
diff --git a/nixpkgs/pkgs/tools/networking/netifd/default.nix b/nixpkgs/pkgs/tools/networking/netifd/default.nix
index 315d58403825..25aada6e3c44 100644
--- a/nixpkgs/pkgs/tools/networking/netifd/default.nix
+++ b/nixpkgs/pkgs/tools/networking/netifd/default.nix
@@ -18,6 +18,6 @@ stdenv.mkDerivation {
     homepage = "https://git.openwrt.org/?p=project/netifd.git;a=summary";
     license = licenses.lgpl21Only;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
+    maintainers = with maintainers; [ mkg20001 ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/networking/ngrep/default.nix b/nixpkgs/pkgs/tools/networking/ngrep/default.nix
index bee8678d1c93..c44f6e1eb832 100644
--- a/nixpkgs/pkgs/tools/networking/ngrep/default.nix
+++ b/nixpkgs/pkgs/tools/networking/ngrep/default.nix
@@ -44,10 +44,12 @@ stdenv.mkDerivation rec {
       more common packet sniffing tools, such as tcpdump and snoop.
     '';
     homepage = "https://github.com/jpr5/ngrep/";
-    # <ngrep>/doc/README.txt says that ngrep itself is licensed under a
-    # 'BSD-like' license but that the 'regex' library (in the ngrep tarball) is
-    # GPLv2.
-    license = "ngrep";  # Some custom BSD-style, see LICENSE.txt
+    license = {
+      shortName = "ngrep";  # BSD-style, see README.md and LICENSE
+      url = "https://github.com/jpr5/ngrep/blob/master/LICENSE";
+      free = true;
+      redistributable = true;
+    };
     platforms = with platforms; linux ++ darwin;
     maintainers = [ maintainers.bjornfor ];
   };
diff --git a/nixpkgs/pkgs/tools/networking/ockam/default.nix b/nixpkgs/pkgs/tools/networking/ockam/default.nix
index fe5ba72caf68..fe0bbf374635 100644
--- a/nixpkgs/pkgs/tools/networking/ockam/default.nix
+++ b/nixpkgs/pkgs/tools/networking/ockam/default.nix
@@ -12,7 +12,7 @@
 
 let
   pname = "ockam";
-  version = "0.90.0";
+  version = "0.105.0";
 in
 rustPlatform.buildRustPackage {
   inherit pname version;
@@ -21,10 +21,10 @@ rustPlatform.buildRustPackage {
     owner = "build-trust";
     repo = pname;
     rev = "ockam_v${version}";
-    sha256 = "sha256-IblL87YSSTew4UOZEkbPrQ1Zy9x33mfxGG1kg1atxrs=";
+    sha256 = "sha256-YS98elkf1iIslC1dAf+Os2VoA0pmHmkQN0//PtBRBcM=";
   };
 
-  cargoHash = "sha256-/fKqUOa1Dos01IKyIZIjWwpZNXKh+cVoq4s2TUFWkBw=";
+  cargoHash = "sha256-aW+Pc2C7vohUAByrzBiOaJlBPfSLAv0FrOxRiB1AM9k=";
   nativeBuildInputs = [ git pkg-config ];
   buildInputs = [ openssl dbus ]
     ++ lib.optionals stdenv.isDarwin [ Security ];
diff --git a/nixpkgs/pkgs/tools/networking/oha/default.nix b/nixpkgs/pkgs/tools/networking/oha/default.nix
index 3fd3bc49c916..03028ca580a1 100644
--- a/nixpkgs/pkgs/tools/networking/oha/default.nix
+++ b/nixpkgs/pkgs/tools/networking/oha/default.nix
@@ -9,16 +9,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "oha";
-  version = "0.6.5";
+  version = "1.0.0";
 
   src = fetchFromGitHub {
     owner = "hatoo";
     repo = pname;
     rev = "refs/tags/v${version}";
-    sha256 = "sha256-eC0EiBD0FQ/Ucvjh5q1htZLVmpzzOzKAVmHW6/Krc0Q=";
+    sha256 = "sha256-QZEDp+XCc3ZWQ1UTlMUpdvJCbuO6VCYnJj1Jj9o+Ovs=";
   };
 
-  cargoSha256 = "sha256-AmFDi5l55tJ3yZwTH4DyxOsium8WoSW7JVmn1L+lRpU=";
+  cargoSha256 = "sha256-JEbsAJ9NbWw03qYUQqLx7sA04Xq990zdBuludVbxoIg=";
 
   nativeBuildInputs = lib.optionals stdenv.isLinux [
     pkg-config
diff --git a/nixpkgs/pkgs/tools/networking/ooniprobe-cli/default.nix b/nixpkgs/pkgs/tools/networking/ooniprobe-cli/default.nix
index baf0ba802c0f..b677b1d1ca01 100644
--- a/nixpkgs/pkgs/tools/networking/ooniprobe-cli/default.nix
+++ b/nixpkgs/pkgs/tools/networking/ooniprobe-cli/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "ooniprobe-cli";
-  version = "3.19.0";
+  version = "3.19.1";
 
   src = fetchFromGitHub {
     owner = "ooni";
     repo = "probe-cli";
     rev = "v${version}";
-    hash = "sha256-W3C4KbZnOdljofnlYZk/F6E77/AXjdNTRoWrtoEVfqg=";
+    hash = "sha256-sYIp5zl49waERfTYPfNjbyzep7p4sRlweDVcuTtWB28=";
   };
 
-  vendorHash = "sha256-wEhh0nMdFH9wLfNSxYvbkbtu69cNEmVpQDk57/gdnw8=";
+  vendorHash = "sha256-6RyK0oy9Lcuh2TXpQqAqmrA+bS9hug6+il7L1z+kYvs=";
 
   subPackages = [ "cmd/ooniprobe" ];
 
diff --git a/nixpkgs/pkgs/tools/networking/opendrop/default.nix b/nixpkgs/pkgs/tools/networking/opendrop/default.nix
index 6a8937215105..a617eadfc410 100644
--- a/nixpkgs/pkgs/tools/networking/opendrop/default.nix
+++ b/nixpkgs/pkgs/tools/networking/opendrop/default.nix
@@ -1,24 +1,37 @@
 { lib
 , buildPythonApplication
-, fetchPypi
+, fetchFromGitHub
 , fleep
+, ifaddr
 , libarchive-c
 , pillow
 , requests-toolbelt
 , setuptools
-, zeroconf }:
+, zeroconf
+, pytestCheckHook
+, openssl
+}:
 
 buildPythonApplication rec {
   pname = "opendrop";
   version = "0.13.0";
+  format = "setuptools";
 
-  src = fetchPypi {
-    inherit version pname;
-    sha256 = "sha256-FE1oGpL6C9iBhI8Zj71Pm9qkObJvSeU2gaBZwK1bTQc=";
+  src = fetchFromGitHub {
+    owner = "seemoo-lab";
+    repo = "opendrop";
+    rev = "v${version}";
+    hash = "sha256-4FeVQO7Z6t9mjIgesdjKx4Mi+Ro5EVGJpEFjCvB2SlA=";
   };
 
+  nativeBuildInputs = [
+    # Tests fail if I put it on buildInputs
+    openssl
+  ];
+
   propagatedBuildInputs = [
     fleep
+    ifaddr
     libarchive-c
     pillow
     requests-toolbelt
@@ -26,16 +39,26 @@ buildPythonApplication rec {
     zeroconf
   ];
 
-  # There are tests, but getting the following error:
-  # nix_run_setup: error: argument action: invalid choice: 'test' (choose from 'receive', 'find', 'send')
-  # Opendrop works as intended though
-  doCheck = false;
+  makeWrapperArgs = [
+    "--prefix PATH : ${lib.makeBinPath nativeBuildInputs}"
+  ];
+
+  checkInputs = [
+    pytestCheckHook
+  ];
+
+  preCheck = ''
+    # Solves PermissionError: [Errno 13] Permission denied: '/homeless-shelter'
+    export HOME=$(mktemp -d)
+  '';
 
   meta = with lib; {
     description = "An open Apple AirDrop implementation written in Python";
     homepage = "https://owlink.org/";
+    changelog = "https://github.com/seemoo-lab/opendrop/releases/tag/${src.rev}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ wolfangaukang ];
+    mainProgram = "opendrop";
     platforms = [ "x86_64-linux" ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/networking/opensnitch/daemon.nix b/nixpkgs/pkgs/tools/networking/opensnitch/daemon.nix
index 98c7f51ba71e..9825d25bbc5a 100644
--- a/nixpkgs/pkgs/tools/networking/opensnitch/daemon.nix
+++ b/nixpkgs/pkgs/tools/networking/opensnitch/daemon.nix
@@ -18,13 +18,13 @@
 
 buildGoModule rec {
   pname = "opensnitch";
-  version = "1.6.3";
+  version = "1.6.4";
 
   src = fetchFromGitHub {
     owner = "evilsocket";
     repo = "opensnitch";
     rev = "v${version}";
-    hash = "sha256-C8Uuz2FC7Zu07ZmFpp+ejpNxkyC3/mM9J2dc5FUKx64=";
+    hash = "sha256-fkRykhcjWZ4MDl2HZ1ZFaQmEeRYhiCBeUxG/Eu7D8NA=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/tools/networking/opensnitch/ui.nix b/nixpkgs/pkgs/tools/networking/opensnitch/ui.nix
index 86ceeb281cea..9e7903149070 100644
--- a/nixpkgs/pkgs/tools/networking/opensnitch/ui.nix
+++ b/nixpkgs/pkgs/tools/networking/opensnitch/ui.nix
@@ -7,13 +7,13 @@
 
 python3Packages.buildPythonApplication rec {
   pname = "opensnitch-ui";
-  version = "1.6.2";
+  version = "1.6.4";
 
   src = fetchFromGitHub {
     owner = "evilsocket";
     repo = "opensnitch";
     rev = "refs/tags/v${version}";
-    hash = "sha256-1ArwbewgZuoDF2lxY720yFQSsTuLR0WkS8vsTCr2FL4=";
+    hash = "sha256-fkRykhcjWZ4MDl2HZ1ZFaQmEeRYhiCBeUxG/Eu7D8NA=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/tools/networking/pgrok/build-deps/package.json b/nixpkgs/pkgs/tools/networking/pgrok/build-deps/package.json
index 3ace3f15e44c..b40bf794c6de 100644
--- a/nixpkgs/pkgs/tools/networking/pgrok/build-deps/package.json
+++ b/nixpkgs/pkgs/tools/networking/pgrok/build-deps/package.json
@@ -5,7 +5,7 @@
     "build": "tsc && vite build --outDir=dist --emptyOutDir",
     "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0"
   },
-  "version": "1.4.0",
+  "version": "1.4.1",
   "dependencies": {
     "axios": "~1.4.0",
     "react": "~18.2.0",
diff --git a/nixpkgs/pkgs/tools/networking/pgrok/default.nix b/nixpkgs/pkgs/tools/networking/pgrok/default.nix
index 21a62ba8ccd6..ab1c6d9f0a61 100644
--- a/nixpkgs/pkgs/tools/networking/pgrok/default.nix
+++ b/nixpkgs/pkgs/tools/networking/pgrok/default.nix
@@ -5,16 +5,16 @@
 }:
 buildGoModule rec {
   pname = "pgrok";
-  version = "1.4.0";
+  version = "1.4.1";
 
   src = fetchFromGitHub {
     owner = "pgrok";
     repo = "pgrok";
     rev = "v${version}";
-    hash = "sha256-2k3XLXmf1Xnx4HvS7sD/aq+78Z4I7uY4djV958n5TX4=";
+    hash = "sha256-P36rpFi5J+dF6FrVaPhqupG00h4kwr0qumt4ehL/7vU=";
   };
 
-  vendorHash = "sha256-M0xVHRh9NKPxmUEmx1dDQUZc8aXcdAfHisQAnt72RdY=";
+  vendorHash = "sha256-X5FjzliIJdfJnNaUXBjv1uq5tyjMVjBbnLCBH/P0LFM=";
 
   outputs = [ "out" "server" ];
 
diff --git a/nixpkgs/pkgs/tools/networking/q/default.nix b/nixpkgs/pkgs/tools/networking/q/default.nix
index 40d61afd65d8..3bf04806233c 100644
--- a/nixpkgs/pkgs/tools/networking/q/default.nix
+++ b/nixpkgs/pkgs/tools/networking/q/default.nix
@@ -2,16 +2,16 @@
 
 buildGoModule rec {
   pname = "q";
-  version = "0.13.5";
+  version = "0.15.1";
 
   src = fetchFromGitHub {
     owner = "natesales";
     repo = "q";
     rev = "v${version}";
-    sha256 = "sha256-3T72841HoZTjyzebSL7oWWwbvxBMKSX98usCrkZ4QuI=";
+    sha256 = "sha256-yItgytsPR/FkiERHhLTq1vNJbZ204DckEc3xK3PaPKM=";
   };
 
-  vendorHash = "sha256-VjwlNCmq5yAYlQRg+rKsN6EPDeb0FcnK5Y4MzBNO0Kg=";
+  vendorHash = "sha256-xLv2F/rOSjMTnTrLck/1E8Y0fTbpUutQIJGmqetqYjg=";
 
   doCheck = false; # tries to resolve DNS
 
diff --git a/nixpkgs/pkgs/tools/networking/requestly/default.nix b/nixpkgs/pkgs/tools/networking/requestly/default.nix
index 3a4128c0806d..b23336e6d0e9 100644
--- a/nixpkgs/pkgs/tools/networking/requestly/default.nix
+++ b/nixpkgs/pkgs/tools/networking/requestly/default.nix
@@ -5,11 +5,11 @@
 
 let
   pname = "requestly";
-  version = "1.5.12";
+  version = "1.5.13";
 
   src = fetchurl {
     url = "https://github.com/requestly/requestly-desktop-app/releases/download/v${version}/Requestly-${version}.AppImage";
-    hash = "sha256-HM3+j9E67J1bAklnDtSN5/rOK9Wn7N7h+qlPKR/E8Ns=";
+    hash = "sha256-DSOZBVBjIYO8BG3o7AUsH7h2KvSPlp9Lj9d3OwvBhfQ=";
   };
 
   appimageContents = appimageTools.extractType2 { inherit pname version src; };
diff --git a/nixpkgs/pkgs/tools/networking/sing-box/default.nix b/nixpkgs/pkgs/tools/networking/sing-box/default.nix
index 0d75f874a198..d29bbe1292db 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.6.5";
+  version = "1.7.0";
 
   src = fetchFromGitHub {
     owner = "SagerNet";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-djbRt4VdrZ2a0yLbNaFNhKIN0AwuCCJATIcwFhnw5aM=";
+    hash = "sha256-XD4xWOQumqbXMBbzHgCIgFIegUqJnFZsAvk1VZXX5rc=";
   };
 
-  vendorHash = "sha256-qoW9+t427k5Ea9BhAdWIh+utD7EnIU1OLKJfsmYlEt8=";
+  vendorHash = "sha256-U70FjJ0HO5dyFj50qpyjy+k2r7IR/6gOLDi2LM3M3No=";
 
   tags = [
     "with_quic"
diff --git a/nixpkgs/pkgs/tools/networking/tridactyl-native/default.nix b/nixpkgs/pkgs/tools/networking/tridactyl-native/default.nix
deleted file mode 100644
index 91043caa4354..000000000000
--- a/nixpkgs/pkgs/tools/networking/tridactyl-native/default.nix
+++ /dev/null
@@ -1,29 +0,0 @@
-{ lib, nimPackages, fetchFromGitHub }:
-
-nimPackages.buildNimPackage rec {
-  pname = "tridactyl-native";
-  version = "0.3.7";
-
-  src = fetchFromGitHub {
-    owner = "tridactyl";
-    repo = "native_messenger";
-    rev = "62f19dba573b924703829847feb1bfee68885514";
-    sha256 = "sha256-YGDVcfFcI9cRCCZ4BrO5xTuI9mrGq1lfbEITB7o3vQQ=";
-  };
-  buildInputs = with nimPackages; [ tempfile ];
-
-  installPhase = ''
-    mkdir -p "$out/lib/mozilla/native-messaging-hosts"
-    sed -i -e "s|REPLACE_ME_WITH_SED|$out/bin/native_main|" "tridactyl.json"
-    cp tridactyl.json "$out/lib/mozilla/native-messaging-hosts/"
-  '';
-
-  meta = with lib; {
-    description =
-      "Native messenger for Tridactyl, a vim-like Firefox webextension";
-    homepage = "https://github.com/tridactyl/native_messenger";
-    license = licenses.bsd2;
-    platforms = platforms.all;
-    maintainers = with maintainers; [ timokau dit7ya ];
-  };
-}
diff --git a/nixpkgs/pkgs/tools/networking/uqmi/default.nix b/nixpkgs/pkgs/tools/networking/uqmi/default.nix
index 31c004986355..8050909487da 100644
--- a/nixpkgs/pkgs/tools/networking/uqmi/default.nix
+++ b/nixpkgs/pkgs/tools/networking/uqmi/default.nix
@@ -28,6 +28,6 @@ stdenv.mkDerivation {
     homepage = "https://git.openwrt.org/?p=project/uqmi.git;a=summary";
     license = licenses.gpl2Plus;
     platforms = platforms.all;
-    maintainers = with maintainers; [ fpletz ];
+    maintainers = with maintainers; [ fpletz mkg20001 ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/networking/v2raya/default.nix b/nixpkgs/pkgs/tools/networking/v2raya/default.nix
index c861fd68c8bd..02f348a2df9a 100644
--- a/nixpkgs/pkgs/tools/networking/v2raya/default.nix
+++ b/nixpkgs/pkgs/tools/networking/v2raya/default.nix
@@ -11,13 +11,13 @@
 }:
 let
   pname = "v2raya";
-  version = "2.2.4";
+  version = "2.2.4.3";
 
   src = fetchFromGitHub {
     owner = "v2rayA";
     repo = "v2rayA";
     rev = "v${version}";
-    hash = "sha256-X2fCp9uVdt7fIW1C/tdRK1Tmr8mq6VBk6UBnt99E+1c=";
+    hash = "sha256-6643sdKVHOHrGRocTm881GCHoON4tlrKcNfOFMHwnQY=";
     postFetch = "sed -i -e 's/npmmirror/yarnpkg/g' $out/gui/yarn.lock";
   };
   guiSrc = "${src}/gui";
@@ -30,7 +30,7 @@ let
 
     offlineCache = fetchYarnDeps {
       yarnLock = "${guiSrc}/yarn.lock";
-      sha256 = "sha256-pB0B5Iy6dLfU5CL2E9OBQGJKLJqYQRwPxx9aaCDg1Qk=";
+      sha256 = "sha256-rZIcVLolTMdtN27W6gCw9uk9m4N5v9SZn2563+aN/gs=";
     };
 
     buildPhase = ''
@@ -62,7 +62,7 @@ buildGoModule {
   inherit pname version;
 
   src = "${src}/service";
-  vendorHash = "sha256-lK6oTI9o8oLXPPMFO/Q97tIsdRd9smUk1v7GwwCFitg=";
+  vendorHash = "sha256-wwDv2ThHwtnUpAnQoc0Ms0mGC44jRvABcE4K5MrF8S4=";
 
   ldflags = [
     "-s"
diff --git a/nixpkgs/pkgs/tools/networking/v2raya/package.json b/nixpkgs/pkgs/tools/networking/v2raya/package.json
index 3886aaa1616c..531c64b76311 100644
--- a/nixpkgs/pkgs/tools/networking/v2raya/package.json
+++ b/nixpkgs/pkgs/tools/networking/v2raya/package.json
@@ -9,9 +9,10 @@
     "lint": "vue-cli-service lint"
   },
   "resolutions": {
-    "@achrinza/node-ipc": "^10.1.9"
+    "@achrinza/node-ipc": "^10.1.10"
   },
   "dependencies": {
+    "@achrinza/node-ipc": "^10.1.10",
     "@mdi/font": "^5.8.55",
     "@nuintun/qrcode": "^3.3.0",
     "@vue/babel-preset-app": "^4.2.2",
diff --git a/nixpkgs/pkgs/tools/networking/wg-friendly-peer-names/default.nix b/nixpkgs/pkgs/tools/networking/wg-friendly-peer-names/default.nix
index eaa8efbcebdb..ebbd898576d3 100644
--- a/nixpkgs/pkgs/tools/networking/wg-friendly-peer-names/default.nix
+++ b/nixpkgs/pkgs/tools/networking/wg-friendly-peer-names/default.nix
@@ -6,13 +6,13 @@
 
 stdenv.mkDerivation {
   pname = "wg-friendly-peer-names";
-  version = "unstable-2021-11-08";
+  version = "unstable-2021-12-10";
 
   src = fetchFromGitHub {
     owner = "FlyveHest";
     repo = "wg-friendly-peer-names";
-    rev = "66b9b6b74ec77b9fec69b2a58296635321d4f5f1";
-    sha256 = "pH/b5rCHIqLxz/Fnx+Dm0m005qAUWBsczSU9vGEQ2RQ=";
+    rev = "b0c3e1a95c843dc9c6432895105b839ef9b362fc";
+    hash = "sha256-aGxrABmR+aQO35RYo/zI2037clnGOW0Tr16p7M1fQqc=";
   };
 
   installPhase = ''
diff --git a/nixpkgs/pkgs/tools/networking/wol/default.nix b/nixpkgs/pkgs/tools/networking/wol/default.nix
index 114a8457d5b2..14cf48ae0dbd 100644
--- a/nixpkgs/pkgs/tools/networking/wol/default.nix
+++ b/nixpkgs/pkgs/tools/networking/wol/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
     homepage = "https://sourceforge.net/projects/wake-on-lan/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ makefu ];
+    mainProgram = "wol";
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/tools/nix/fh/default.nix b/nixpkgs/pkgs/tools/nix/fh/default.nix
index c6e406aadab3..3ffeeaf23033 100644
--- a/nixpkgs/pkgs/tools/nix/fh/default.nix
+++ b/nixpkgs/pkgs/tools/nix/fh/default.nix
@@ -10,16 +10,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "fh";
-  version = "0.1.7";
+  version = "0.1.8";
 
   src = fetchFromGitHub {
     owner = "DeterminateSystems";
     repo = "fh";
     rev = "v${version}";
-    hash = "sha256-gyxlVSraZIVAyOaJk90fub4b8g1w4KXwqa1ecNAC7xA=";
+    hash = "sha256-O0WcLEtbb5m3RA3LyWbD++fFt0Bk/pP16yhxRb+cGkM=";
   };
 
-  cargoHash = "sha256-Tm/O9H0l37h+2zb4dgO6Z6CaYye8O+zVMrsUpWJ9okI=";
+  cargoHash = "sha256-cGBYDwrw4NsbtE5bhETQ+YuBXMy1i7vNQaoTiuHYBXQ=";
 
   nativeBuildInputs = [
     installShellFiles
@@ -42,6 +42,8 @@ rustPlatform.buildRustPackage rec {
       --zsh <($out/bin/fh completion zsh)
   '';
 
+  __darwinAllowLocalNetworking = true;
+
   meta = with lib; {
     description = "The official FlakeHub CLI";
     homepage = "https://github.com/DeterminateSystems/fh";
diff --git a/nixpkgs/pkgs/tools/nix/manix/default.nix b/nixpkgs/pkgs/tools/nix/manix/default.nix
index 6975e61fa6cb..082f99f4de74 100644
--- a/nixpkgs/pkgs/tools/nix/manix/default.nix
+++ b/nixpkgs/pkgs/tools/nix/manix/default.nix
@@ -1,25 +1,29 @@
-{ lib, stdenv, fetchFromGitHub, rustPlatform, Security }:
-
+{
+  lib,
+  stdenv,
+  fetchFromGitHub,
+  rustPlatform,
+  Security,
+}:
 rustPlatform.buildRustPackage rec {
   pname = "manix";
-  version = "0.6.3";
+  version = "0.7.1";
 
   src = fetchFromGitHub {
-    owner = "mlvzk";
-    repo  = pname;
-    rev = "v${version}";
-    sha256 = "1b7xi8c2drbwzfz70czddc4j33s7g1alirv12dwl91hbqxifx8qs";
+    repo = pname;
+    owner = "lecoqjacob";
+    rev = "${version}";
+    hash = "sha256-kTQbeOIGG1HmbsXKfXw5yCZ49kGufbGiCkkIRMTwcsg=";
   };
 
-  buildInputs = lib.optionals stdenv.isDarwin [ Security ];
-
-  cargoSha256 = "1yivx9vzk2fvncvlkwq5v11hb9llr1zlcmy69y12q6xnd9rd8x1b";
+  buildInputs = lib.optionals stdenv.isDarwin [Security];
+  cargoSha256 = "sha256-7SHUi1qH9Dr4Oi7A6gRmZqhAIr8RzLNU1l1x4WGtQYI=";
 
   meta = with lib; {
+    license = [licenses.mpl20];
+    platforms = platforms.unix;
+    homepage = "https://github.com/lecoqjacob/manix";
     description = "A Fast Documentation Searcher for Nix";
-    homepage    = "https://github.com/mlvzk/manix";
-    license     = [ licenses.mpl20 ];
-    maintainers = [ maintainers.mlvzk ];
-    platforms   = platforms.unix;
+    maintainers = [maintainers.lecoqjacob];
   };
 }
diff --git a/nixpkgs/pkgs/tools/nix/nar-serve/default.nix b/nixpkgs/pkgs/tools/nix/nar-serve/default.nix
index 5aa2e3bd9ced..f2c709a2e312 100644
--- a/nixpkgs/pkgs/tools/nix/nar-serve/default.nix
+++ b/nixpkgs/pkgs/tools/nix/nar-serve/default.nix
@@ -21,6 +21,6 @@ buildGoModule rec {
     description = "Serve NAR file contents via HTTP";
     homepage = "https://github.com/numtide/nar-serve";
     license = licenses.mit;
-    maintainers = with maintainers; [ rizary ];
+    maintainers = with maintainers; [ rizary zimbatm ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/nix/nix-output-monitor/generated-package.nix b/nixpkgs/pkgs/tools/nix/nix-output-monitor/generated-package.nix
index 7d993282601b..7c41b6e1b6af 100644
--- a/nixpkgs/pkgs/tools/nix/nix-output-monitor/generated-package.nix
+++ b/nixpkgs/pkgs/tools/nix/nix-output-monitor/generated-package.nix
@@ -1,147 +1,44 @@
 # This file has been autogenerate with cabal2nix.
 # Update via ./update.sh"
-{
-  mkDerivation,
-  ansi-terminal,
-  async,
-  attoparsec,
-  base,
-  bytestring,
-  cassava,
-  containers,
-  data-default,
-  directory,
-  extra,
-  fetchzip,
-  filepath,
-  hermes-json,
-  HUnit,
-  lib,
-  lock-file,
-  MemoTrie,
-  mtl,
-  nix-derivation,
-  optics,
-  random,
-  relude,
-  safe,
-  stm,
-  streamly-core,
-  strict,
-  strict-types,
-  terminal-size,
-  text,
-  time,
-  typed-process,
-  wcwidth,
-  word8,
+{ mkDerivation, ansi-terminal, async, attoparsec, base, bytestring
+, cassava, containers, data-default, directory, extra, fetchzip
+, filepath, hermes-json, HUnit, lib, lock-file, MemoTrie
+, nix-derivation, optics, random, relude, safe, stm, streamly-core
+, strict, strict-types, terminal-size, text, time, transformers
+, typed-process, unix, word8
 }:
 mkDerivation {
   pname = "nix-output-monitor";
-  version = "2.0.0.7";
+  version = "2.1.1";
   src = fetchzip {
-    url = "https://github.com/maralorn/nix-output-monitor/archive/refs/tags/v2.0.0.7.tar.gz";
-    sha256 = "1b2c9kfz80rv2r1s7h6iikyq3bn32h1fv2yq65wkhg3in7qg49jp";
+    url = "https://code.maralorn.de/maralorn/nix-output-monitor/archive/v2.1.1.tar.gz";
+    sha256 = "1k1gdx7yczz7xm096i8lk09zq6yw1yj8izx6czymfd4qqwj2y49l";
   };
   isLibrary = true;
   isExecutable = true;
   libraryHaskellDepends = [
-    ansi-terminal
-    async
-    attoparsec
-    base
-    bytestring
-    cassava
-    containers
-    data-default
-    directory
-    extra
-    filepath
-    hermes-json
-    lock-file
-    MemoTrie
-    mtl
-    nix-derivation
-    optics
-    relude
-    safe
-    stm
-    streamly-core
-    strict
-    strict-types
-    terminal-size
-    text
-    time
-    wcwidth
-    word8
+    ansi-terminal async attoparsec base bytestring cassava containers
+    data-default directory extra filepath hermes-json lock-file
+    MemoTrie nix-derivation optics relude safe stm streamly-core strict
+    strict-types terminal-size text time transformers word8
   ];
   executableHaskellDepends = [
-    ansi-terminal
-    async
-    attoparsec
-    base
-    bytestring
-    cassava
-    containers
-    data-default
-    directory
-    extra
-    filepath
-    hermes-json
-    lock-file
-    MemoTrie
-    mtl
-    nix-derivation
-    optics
-    relude
-    safe
-    stm
-    streamly-core
-    strict
-    strict-types
-    terminal-size
-    text
-    time
-    typed-process
-    wcwidth
-    word8
+    ansi-terminal async attoparsec base bytestring cassava containers
+    data-default directory extra filepath hermes-json lock-file
+    MemoTrie nix-derivation optics relude safe stm streamly-core strict
+    strict-types terminal-size text time transformers typed-process
+    unix word8
   ];
   testHaskellDepends = [
-    ansi-terminal
-    async
-    attoparsec
-    base
-    bytestring
-    cassava
-    containers
-    data-default
-    directory
-    extra
-    filepath
-    hermes-json
-    HUnit
-    lock-file
-    MemoTrie
-    mtl
-    nix-derivation
-    optics
-    random
-    relude
-    safe
-    stm
-    streamly-core
-    strict
-    strict-types
-    terminal-size
-    text
-    time
-    typed-process
-    wcwidth
-    word8
+    ansi-terminal async attoparsec base bytestring cassava containers
+    data-default directory extra filepath hermes-json HUnit lock-file
+    MemoTrie nix-derivation optics random relude safe stm streamly-core
+    strict strict-types terminal-size text time transformers
+    typed-process word8
   ];
   homepage = "https://github.com/maralorn/nix-output-monitor";
-  description = "Parses output of nix-build to show additional information";
+  description = "Processes output of Nix commands to show helpful and pretty information";
   license = lib.licenses.agpl3Plus;
   mainProgram = "nom";
-  maintainers = [lib.maintainers.maralorn];
+  maintainers = [ lib.maintainers.maralorn ];
 }
diff --git a/nixpkgs/pkgs/tools/nix/nix-output-monitor/update.sh b/nixpkgs/pkgs/tools/nix/nix-output-monitor/update.sh
index b25a65fca2d7..a83043df66ee 100755
--- a/nixpkgs/pkgs/tools/nix/nix-output-monitor/update.sh
+++ b/nixpkgs/pkgs/tools/nix/nix-output-monitor/update.sh
@@ -1,5 +1,5 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i bash -p cabal2nix curl jq alejandra
+#!nix-shell -i bash -p cabal2nix curl jq
 #
 # This script will update the nix-output-monitor derivation to the latest version using
 # cabal2nix.
@@ -12,7 +12,7 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
 derivation_file="${script_dir}/generated-package.nix"
 
 # This is the latest released version of nix-output-monitor on GitHub.
-new_version=$(curl --silent "https://api.github.com/repos/maralorn/nix-output-monitor/releases" | jq '.[0].tag_name' --raw-output)
+new_version=$(curl --silent "https://code.maralorn.de/api/v1/repos/maralorn/nix-output-monitor/releases" | jq '.[0].tag_name' --raw-output)
 
 echo "Updating nix-output-monitor to version $new_version."
 echo "Running cabal2nix and outputting to ${derivation_file}..."
@@ -24,9 +24,7 @@ EOF
 
 cabal2nix \
   --maintainer maralorn \
-  "https://github.com/maralorn/nix-output-monitor/archive/refs/tags/${new_version}.tar.gz" \
+  "https://code.maralorn.de/maralorn/nix-output-monitor/archive/${new_version}.tar.gz" \
   >> "$derivation_file"
 
-alejandra "${derivation_file}" | cat
-
 echo "Finished."
diff --git a/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py b/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py
index 85513ef48697..894daf9ca9c7 100644
--- a/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py
+++ b/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/md.py
@@ -365,7 +365,7 @@ def _attr_span_plugin(md: markdown_it.MarkdownIt) -> None:
                 return False
             id, classes = parsed_attrs
 
-            token = state.push("attr_span_begin", "span", 1) # type: ignore[no-untyped-call]
+            token = state.push("attr_span_begin", "span", 1)
             if id:
                 token.attrs['id'] = id
             if classes:
@@ -375,7 +375,7 @@ def _attr_span_plugin(md: markdown_it.MarkdownIt) -> None:
             state.posMax = label_end
             state.md.inline.tokenize(state)
 
-            state.push("attr_span_end", "span", -1) # type: ignore[no-untyped-call]
+            state.push("attr_span_end", "span", -1)
 
         state.pos = label_end + match.end() + 1
         state.posMax = input_end
diff --git a/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py b/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py
index 2813ffcf8bc0..d0229e074c54 100644
--- a/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py
+++ b/nixpkgs/pkgs/tools/nix/nixos-render-docs/src/nixos_render_docs/options.py
@@ -8,6 +8,7 @@ import xml.sax.saxutils as xml
 from abc import abstractmethod
 from collections.abc import Mapping, Sequence
 from markdown_it.token import Token
+from pathlib import Path
 from typing import Any, Generic, Optional
 from urllib.parse import quote
 
@@ -287,18 +288,27 @@ class ManpageConverter(BaseConverter[OptionsManpageRenderer]):
     _links_in_last_description: Optional[list[str]] = None
 
     def __init__(self, revision: str,
+                 header: list[str] | None,
+                 footer: list[str] | None,
                  *,
                  # only for parallel rendering
                  _options_by_id: Optional[dict[str, str]] = None):
         super().__init__(revision)
         self._options_by_id = _options_by_id or {}
         self._renderer = OptionsManpageRenderer({}, self._options_by_id)
+        self._header = header
+        self._footer = footer
 
     def _parallel_render_prepare(self) -> Any:
-        return (self._revision, { '_options_by_id': self._options_by_id })
+        return (
+            self._revision,
+            self._header,
+            self._footer,
+            { '_options_by_id': self._options_by_id },
+        )
     @classmethod
     def _parallel_render_init_worker(cls, a: Any) -> ManpageConverter:
-        return cls(a[0], **a[1])
+        return cls(a[0], a[1], a[2], **a[3])
 
     def _render_option(self, name: str, option: dict[str, Any]) -> RenderedOption:
         links = self._renderer.link_footnotes = []
@@ -342,26 +352,29 @@ class ManpageConverter(BaseConverter[OptionsManpageRenderer]):
     def finalize(self) -> str:
         result = []
 
-        result += [
-            r'''.TH "CONFIGURATION\&.NIX" "5" "01/01/1980" "NixOS" "NixOS Reference Pages"''',
-            r'''.\" disable hyphenation''',
-            r'''.nh''',
-            r'''.\" disable justification (adjust text to left margin only)''',
-            r'''.ad l''',
-            r'''.\" enable line breaks after slashes''',
-            r'''.cflags 4 /''',
-            r'''.SH "NAME"''',
-            self._render('{file}`configuration.nix` - NixOS system configuration specification'),
-            r'''.SH "DESCRIPTION"''',
-            r'''.PP''',
-            self._render('The file {file}`/etc/nixos/configuration.nix` contains the '
-                        'declarative specification of your NixOS system configuration. '
-                        'The command {command}`nixos-rebuild` takes this file and '
-                        'realises the system configuration specified therein.'),
-            r'''.SH "OPTIONS"''',
-            r'''.PP''',
-            self._render('You can use the following options in {file}`configuration.nix`.'),
-        ]
+        if self._header is not None:
+            result += self._header
+        else:
+            result += [
+                r'''.TH "CONFIGURATION\&.NIX" "5" "01/01/1980" "NixOS" "NixOS Reference Pages"''',
+                r'''.\" disable hyphenation''',
+                r'''.nh''',
+                r'''.\" disable justification (adjust text to left margin only)''',
+                r'''.ad l''',
+                r'''.\" enable line breaks after slashes''',
+                r'''.cflags 4 /''',
+                r'''.SH "NAME"''',
+                self._render('{file}`configuration.nix` - NixOS system configuration specification'),
+                r'''.SH "DESCRIPTION"''',
+                r'''.PP''',
+                self._render('The file {file}`/etc/nixos/configuration.nix` contains the '
+                            'declarative specification of your NixOS system configuration. '
+                            'The command {command}`nixos-rebuild` takes this file and '
+                            'realises the system configuration specified therein.'),
+                r'''.SH "OPTIONS"''',
+                r'''.PP''',
+                self._render('You can use the following options in {file}`configuration.nix`.'),
+            ]
 
         for (name, opt) in self._sorted_options():
             result += [
@@ -383,11 +396,14 @@ class ManpageConverter(BaseConverter[OptionsManpageRenderer]):
 
             result.append(".RE")
 
-        result += [
-            r'''.SH "AUTHORS"''',
-            r'''.PP''',
-            r'''Eelco Dolstra and the Nixpkgs/NixOS contributors''',
-        ]
+        if self._footer is not None:
+            result += self._footer
+        else:
+            result += [
+                r'''.SH "AUTHORS"''',
+                r'''.PP''',
+                r'''Eelco Dolstra and the Nixpkgs/NixOS contributors''',
+            ]
 
         return "\n".join(result)
 
@@ -573,6 +589,8 @@ def _build_cli_db(p: argparse.ArgumentParser) -> None:
 
 def _build_cli_manpage(p: argparse.ArgumentParser) -> None:
     p.add_argument('--revision', required=True)
+    p.add_argument("--header", type=Path)
+    p.add_argument("--footer", type=Path)
     p.add_argument("infile")
     p.add_argument("outfile")
 
@@ -603,7 +621,22 @@ def _run_cli_db(args: argparse.Namespace) -> None:
             f.write(md.finalize())
 
 def _run_cli_manpage(args: argparse.Namespace) -> None:
-    md = ManpageConverter(revision = args.revision)
+    header = None
+    footer = None
+
+    if args.header is not None:
+        with args.header.open() as f:
+            header = f.read().splitlines()
+
+    if args.footer is not None:
+        with args.footer.open() as f:
+            footer = f.read().splitlines()
+
+    md = ManpageConverter(
+        revision = args.revision,
+        header = header,
+        footer = footer,
+    )
 
     with open(args.infile, 'r') as f:
         md.add_options(json.load(f))
diff --git a/nixpkgs/pkgs/tools/package-management/akku/default.nix b/nixpkgs/pkgs/tools/package-management/akku/default.nix
index e1baf2e0b1eb..68ee94d3f94e 100644
--- a/nixpkgs/pkgs/tools/package-management/akku/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/akku/default.nix
@@ -37,5 +37,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ marsam ];
+    mainProgram = "akku";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/apk-tools/default.nix b/nixpkgs/pkgs/tools/package-management/apk-tools/default.nix
index 5b37982e83f5..4a460adfd0ff 100644
--- a/nixpkgs/pkgs/tools/package-management/apk-tools/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/apk-tools/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ qyliss ];
     license = licenses.gpl2Only;
     platforms = platforms.linux;
+    mainProgram = "apk";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/apkg/default.nix b/nixpkgs/pkgs/tools/package-management/apkg/default.nix
index 901a7aeff2b4..18b52f0bcdb8 100644
--- a/nixpkgs/pkgs/tools/package-management/apkg/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/apkg/default.nix
@@ -47,5 +47,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://pkg.labs.nic.cz/pages/apkg";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.vcunat /* close to upstream */ ];
+    mainProgram = "apkg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/apt/default.nix b/nixpkgs/pkgs/tools/package-management/apt/default.nix
deleted file mode 100644
index 6991a5a3cd64..000000000000
--- a/nixpkgs/pkgs/tools/package-management/apt/default.nix
+++ /dev/null
@@ -1,87 +0,0 @@
-{ lib
-, stdenv
-, fetchurl
-, bzip2
-, cmake
-, curl
-, db
-, docbook_xml_dtd_45
-, docbook_xsl
-, dpkg
-, gnutls
-, gtest
-, libgcrypt
-, libseccomp
-, libtasn1
-, libxslt
-, lz4
-, perlPackages
-, pkg-config
-, triehash
-, udev
-, xxHash
-, xz
-, zstd
-, withDocs ? true , w3m, doxygen
-, withNLS ? true , gettext
-}:
-
-stdenv.mkDerivation rec {
-  pname = "apt";
-  version = "2.7.6";
-
-  src = fetchurl {
-    url = "mirror://debian/pool/main/a/apt/apt_${version}.tar.xz";
-    hash = "sha256-hoP1Tv8L9U5R4CWzSL0HdND9Q3eZYW9IUSlWzxXAX2c=";
-  };
-
-  nativeBuildInputs = [
-    cmake
-    gtest
-    libxslt.bin
-    pkg-config
-    triehash
-  ];
-
-  buildInputs = [
-    bzip2
-    curl
-    db
-    dpkg
-    gnutls
-    libgcrypt
-    libseccomp
-    libtasn1
-    lz4
-    perlPackages.perl
-    udev
-    xxHash
-    xz
-    zstd
-  ] ++ lib.optionals withDocs [
-    docbook_xml_dtd_45
-    doxygen
-    perlPackages.Po4a
-    w3m
-  ] ++ lib.optionals withNLS [
-    gettext
-  ];
-
-  cmakeFlags = [
-    "-DBERKELEY_INCLUDE_DIRS=${db.dev}/include"
-    "-DDOCBOOK_XSL=${docbook_xsl}/share/xml/docbook-xsl"
-    "-DGNUTLS_INCLUDE_DIR=${gnutls.dev}/include"
-    "-DROOT_GROUP=root"
-    "-DUSE_NLS=${if withNLS then "ON" else "OFF"}"
-    "-DWITH_DOC=${if withDocs then "ON" else "OFF"}"
-  ];
-
-  meta = with lib; {
-    homepage = "https://salsa.debian.org/apt-team/apt";
-    description = "Command-line package management tools used on Debian-based systems";
-    changelog = "https://salsa.debian.org/apt-team/apt/-/raw/${version}/debian/changelog";
-    license = licenses.gpl2Plus;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ ];
-  };
-}
diff --git a/nixpkgs/pkgs/tools/package-management/apx/default.nix b/nixpkgs/pkgs/tools/package-management/apx/default.nix
index 8671cb611dc8..20f77dbfe442 100644
--- a/nixpkgs/pkgs/tools/package-management/apx/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/apx/default.nix
@@ -37,6 +37,7 @@ buildGoModule rec {
     homepage = "https://github.com/Vanilla-OS/apx";
     changelog = "https://github.com/Vanilla-OS/apx/releases/tag/v${version}";
     license = licenses.gpl3Only;
-    maintainers = with maintainers; [ dit7ya jgarcia ];
+    maintainers = with maintainers; [ dit7ya chewblacka ];
+    mainProgram = "apx";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/auditwheel/default.nix b/nixpkgs/pkgs/tools/package-management/auditwheel/default.nix
deleted file mode 100644
index 6ea176ab1ca4..000000000000
--- a/nixpkgs/pkgs/tools/package-management/auditwheel/default.nix
+++ /dev/null
@@ -1,59 +0,0 @@
-{ lib
-, bzip2
-, patchelf
-, python3
-, fetchPypi
-, gnutar
-, unzip
-}:
-
-python3.pkgs.buildPythonApplication rec {
-  pname = "auditwheel";
-  version = "5.1.2";
-  format = "setuptools";
-
-  src = fetchPypi {
-    inherit pname version;
-    hash = "sha256-PuWDABSTHqhK9c0GXGN7ZhTvoD2biL2Pv8kk5+0B1ro=";
-  };
-
-  nativeBuildInputs = with python3.pkgs; [
-    pbr
-  ];
-
-  propagatedBuildInputs = with python3.pkgs; [
-    pyelftools
-    setuptools
-  ];
-
-  nativeCheckInputs = with python3.pkgs; [
-    pretend
-    pytestCheckHook
-  ];
-
-  # Integration tests require docker and networking
-  disabledTestPaths = [
-    "tests/integration"
-  ];
-
-  # Ensure that there are no undeclared deps
-  postCheck = ''
-    PATH= PYTHONPATH= $out/bin/auditwheel --version > /dev/null
-  '';
-
-  makeWrapperArgs = [
-    "--prefix" "PATH" ":" (lib.makeBinPath [ bzip2 gnutar patchelf unzip ])
-  ];
-
-  meta = with lib; {
-    description = "Auditing and relabeling cross-distribution Linux wheels";
-    homepage = "https://github.com/pypa/auditwheel";
-    license = with licenses; [
-      mit  # auditwheel and nibabel
-      bsd2  # from https://github.com/matthew-brett/delocate
-      bsd3  # from https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-projects/pax-utils/lddtree.py
-    ];
-    maintainers = with maintainers; [ davhau ];
-    platforms = platforms.linux;
-  };
-}
diff --git a/nixpkgs/pkgs/tools/package-management/ciel/default.nix b/nixpkgs/pkgs/tools/package-management/ciel/default.nix
index d6040c4a0763..87ea364aa4c4 100644
--- a/nixpkgs/pkgs/tools/package-management/ciel/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/ciel/default.nix
@@ -67,5 +67,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ yisuidenghua ];
+    mainProgram = "ciel";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix b/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
index 9fd10a3aba08..461c0cacc06a 100644
--- a/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/disnix/DisnixWebService/default.nix
@@ -1,12 +1,25 @@
-{lib, stdenv, fetchurl, apacheAnt, jdk, axis2, dbus_java }:
+{lib, stdenv, fetchFromGitHub, fetchpatch, apacheAnt, jdk, axis2, dbus_java }:
 
 stdenv.mkDerivation rec {
   pname = "DisnixWebService";
   version = "0.10.1";
-  src = fetchurl {
-    url = "https://github.com/svanderburg/DisnixWebService/releases/download/DisnixWebService-${version}/DisnixWebService-${version}.tar.gz";
-    sha256 = "02jxbgn9a0c9cr6knzp78bp9wiywzczy89wav7yxhg79vff8a1gr";
+
+  src = fetchFromGitHub {
+    owner = "svanderburg";
+    repo = "DisnixWebService";
+    rev = "refs/tags/DisnixWebService-${version}";
+    hash = "sha256-zcYr2Ytx4pevSthTQLpnQ330wDxN9dWsZA20jbO6PxQ=";
   };
+
+  patches = [
+    # Correct the DisnixWebService build for compatibility with Axis2 1.8.1
+    # See https://github.com/svanderburg/DisnixWebService/pull/2
+    (fetchpatch {
+      url = "https://github.com/svanderburg/DisnixWebService/commit/cee99c6af744b5dda16728a70ebd2800f61871a0.patch";
+      hash = "sha256-4rSEN8AwivUXUCIUYFBRIoE19jVDv+Vpgakmy8fR06A=";
+    })
+  ];
+
   buildInputs = [ apacheAnt jdk ];
   PREFIX = "\${env.out}";
   AXIS2_LIB = "${axis2}/lib";
@@ -22,6 +35,8 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A SOAP interface and client for Disnix";
+    homepage = "https://github.com/svanderburg/DisnixWebService";
+    changelog = "https://github.com/svanderburg/DisnixWebService/blob/DisnixWebService-${version}/NEWS.txt";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.sander ];
     platforms = lib.platforms.linux;
diff --git a/nixpkgs/pkgs/tools/package-management/dnf5/default.nix b/nixpkgs/pkgs/tools/package-management/dnf5/default.nix
index 97c9ba29b6a7..f9a44a8a70b5 100644
--- a/nixpkgs/pkgs/tools/package-management/dnf5/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/dnf5/default.nix
@@ -3,9 +3,11 @@
 , fetchFromGitHub
 , cmake
 , createrepo_c
+, doxygen
 , gettext
 , help2man
 , pkg-config
+, python3Packages
 , cppunit
 , fmt
 , json_c
@@ -14,27 +16,45 @@
 , libsmartcols
 , libsolv
 , libxml2
+, libyaml
 , pcre2
 , rpm
 , sdbus-cpp
+, sphinx
 , sqlite
 , systemd
+, testers
 , toml11
 , zchunk
 }:
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "dnf5";
-  version = "5.1.7";
+  version = "5.1.8";
+
+  outputs = [ "out" "man" ];
 
   src = fetchFromGitHub {
     owner = "rpm-software-management";
     repo = "dnf5";
     rev = finalAttrs.version;
-    hash = "sha256-SXgl4YFWl1A3N2/IkDftvBl6Rwhnymxe8AqqaekGHTc=";
+    hash = "sha256-1g3g+6EborZd2ppPMZcy0Wjv07zetATHb/sCkuZz5UM=";
   };
 
-  nativeBuildInputs = [ cmake createrepo_c gettext help2man pkg-config ];
+  nativeBuildInputs = [
+    cmake
+    createrepo_c
+    doxygen
+    gettext
+    help2man
+    pkg-config
+    sphinx
+  ] ++ (with python3Packages; [
+    breathe
+    sphinx-autoapi
+    sphinx-rtd-theme
+  ]);
+
   buildInputs = [
     cppunit
     fmt
@@ -44,6 +64,7 @@ stdenv.mkDerivation (finalAttrs: {
     libsmartcols
     libsolv
     libxml2
+    libyaml
     pcre2.dev
     rpm
     sdbus-cpp
@@ -60,9 +81,6 @@ stdenv.mkDerivation (finalAttrs: {
     "-DWITH_PERL5=OFF"
     "-DWITH_PYTHON3=OFF"
     "-DWITH_RUBY=OFF"
-    "-DWITH_TESTS=OFF"
-    # TODO: fix man installation paths
-    "-DWITH_MAN=OFF"
     "-DWITH_PLUGIN_RHSM=OFF" # Red Hat Subscription Manager plugin
     # the cmake package does not handle absolute CMAKE_INSTALL_INCLUDEDIR correctly
     # (setting it to an absolute path causes include files to go to $out/$out/include,
@@ -71,6 +89,10 @@ stdenv.mkDerivation (finalAttrs: {
     "-DCMAKE_INSTALL_LIBDIR=lib"
   ];
 
+  postBuild = ''
+    make doc
+  '';
+
   prePatch = ''
     substituteInPlace dnf5daemon-server/dbus/CMakeLists.txt \
       --replace '/etc' "$out/etc" \
@@ -83,6 +105,10 @@ stdenv.mkDerivation (finalAttrs: {
 
   dontFixCmake = true;
 
+  passthru.tests = {
+    version = testers.testVersion { package = finalAttrs.finalPackage; };
+  };
+
   meta = with lib; {
     description = "Next-generation RPM package management system";
     homepage = "https://github.com/rpm-software-management/dnf5";
diff --git a/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix b/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix
index f86cdc55ecc1..3c77af2b82bf 100644
--- a/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/elm-github-install/default.nix
@@ -17,5 +17,6 @@ bundlerEnv rec {
     license     = licenses.unfree;
     maintainers = with maintainers; [ roberth nicknovitski ];
     platforms   = platforms.all;
+    mainProgram = "elm-install";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/emplace/default.nix b/nixpkgs/pkgs/tools/package-management/emplace/default.nix
index 07f17343cb7b..0a2656e12932 100644
--- a/nixpkgs/pkgs/tools/package-management/emplace/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/emplace/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/tversteeg/emplace";
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ Br1ght0ne ];
+    mainProgram = "emplace";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/fortran-fpm/default.nix b/nixpkgs/pkgs/tools/package-management/fortran-fpm/default.nix
index 6e7c68aa17f1..d8adb9249006 100644
--- a/nixpkgs/pkgs/tools/package-management/fortran-fpm/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/fortran-fpm/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.proofconstruction ];
     license = licenses.mit;
     platforms = platforms.all;
+    mainProgram = "fortran-fpm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/fpm/default.nix b/nixpkgs/pkgs/tools/package-management/fpm/default.nix
index 4eab1556d954..6be2687d67ad 100644
--- a/nixpkgs/pkgs/tools/package-management/fpm/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/fpm/default.nix
@@ -13,5 +13,6 @@ bundlerApp {
     license     = licenses.mit;
     maintainers = with maintainers; [ manveru nicknovitski ];
     platforms   = platforms.unix;
+    mainProgram = "fpm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/fusesoc/default.nix b/nixpkgs/pkgs/tools/package-management/fusesoc/default.nix
index 99926fd5c047..680cbc020945 100644
--- a/nixpkgs/pkgs/tools/package-management/fusesoc/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/fusesoc/default.nix
@@ -34,5 +34,6 @@ buildPythonPackage rec {
     description = "A package manager and build tools for HDL code";
     maintainers = with maintainers; [ genericnerdyusername ];
     license = licenses.bsd3;
+    mainProgram = "fusesoc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/gx/default.nix b/nixpkgs/pkgs/tools/package-management/gx/default.nix
index e53fdf48413f..3f757dde448c 100644
--- a/nixpkgs/pkgs/tools/package-management/gx/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/gx/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     homepage = "https://github.com/whyrusleeping/gx";
     license = licenses.mit;
     maintainers = with maintainers; [ zimbatm ];
+    mainProgram = "gx";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/holo-build/default.nix b/nixpkgs/pkgs/tools/package-management/holo-build/default.nix
index fca55807f516..41444e8533d5 100644
--- a/nixpkgs/pkgs/tools/package-management/holo-build/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/holo-build/default.nix
@@ -55,5 +55,6 @@ buildGoModule rec {
     homepage = "https://holocm.org/";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ];
+    mainProgram = "holo-build";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/home-manager/default.nix b/nixpkgs/pkgs/tools/package-management/home-manager/default.nix
index fa642cff5dd5..51767ba4946f 100644
--- a/nixpkgs/pkgs/tools/package-management/home-manager/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/home-manager/default.nix
@@ -88,5 +88,6 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ AndersonTorres ];
     platforms = lib.platforms.unix;
+    mainProgram = "home-manager";
   };
 })
diff --git a/nixpkgs/pkgs/tools/package-management/licensee/default.nix b/nixpkgs/pkgs/tools/package-management/licensee/default.nix
index fb33f498bbc3..b72c218cd16a 100644
--- a/nixpkgs/pkgs/tools/package-management/licensee/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/licensee/default.nix
@@ -13,5 +13,6 @@ bundlerApp {
     license     = licenses.mit;
     maintainers = [ maintainers.sternenseemann ];
     platforms   = platforms.unix;
+    mainProgram = "licensee";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/microdnf/default.nix b/nixpkgs/pkgs/tools/package-management/microdnf/default.nix
index be3041f253d8..79fcdf0300c2 100644
--- a/nixpkgs/pkgs/tools/package-management/microdnf/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/microdnf/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ rb2k ];
     platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "microdnf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/micromamba/default.nix b/nixpkgs/pkgs/tools/package-management/micromamba/default.nix
index b60edf0b0426..182f58ea9da8 100644
--- a/nixpkgs/pkgs/tools/package-management/micromamba/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/micromamba/default.nix
@@ -35,13 +35,13 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "micromamba";
-  version = "1.4.4";
+  version = "1.5.3";
 
   src = fetchFromGitHub {
     owner = "mamba-org";
     repo = "mamba";
     rev = "micromamba-" + version;
-    hash = "sha256-Z6hED0fiXzEKpVm8tUBR9ynqWCvHGXkXHzAXbbWlq9Y=";
+    hash = "sha256-/9CzcnPd1D8jSl/pfl54+8/728r+GCqWFXahl47MJ3g=";
   };
 
   nativeBuildInputs = [ cmake ];
@@ -74,5 +74,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     platforms = platforms.all;
     maintainers = with maintainers; [ mausch ];
+    mainProgram = "micromamba";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/morph/default.nix b/nixpkgs/pkgs/tools/package-management/morph/default.nix
index dfb41df33708..71c9c285f308 100644
--- a/nixpkgs/pkgs/tools/package-management/morph/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/morph/default.nix
@@ -33,5 +33,6 @@ buildGoModule rec {
     license = licenses.mit;
     homepage = "https://github.com/dbcdk/morph";
     maintainers = with maintainers; [adamt johanot];
+    mainProgram = "morph";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nfpm/default.nix b/nixpkgs/pkgs/tools/package-management/nfpm/default.nix
index 9d04dd026404..f61d49f493b6 100644
--- a/nixpkgs/pkgs/tools/package-management/nfpm/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nfpm/default.nix
@@ -40,5 +40,6 @@ buildGoModule rec {
     changelog = "https://github.com/goreleaser/nfpm/releases/tag/v${version}";
     maintainers = with maintainers; [ marsam techknowlogick caarlos0 ];
     license = with licenses; [ mit ];
+    mainProgram = "nfpm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/niff/default.nix b/nixpkgs/pkgs/tools/package-management/niff/default.nix
index 93406095df25..827d4353f283 100644
--- a/nixpkgs/pkgs/tools/package-management/niff/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/niff/default.nix
@@ -30,5 +30,6 @@ in stdenv.mkDerivation {
     homepage = "https://github.com/FRidh/niff";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.fridh ];
+    mainProgram = "niff";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-doc/default.nix b/nixpkgs/pkgs/tools/package-management/nix-doc/default.nix
index 2d0815e8af9b..b5cc15704c32 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-doc/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-doc/default.nix
@@ -38,5 +38,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.lgpl3Plus;
     maintainers = [ maintainers.lf- ];
     platforms = platforms.unix;
+    mainProgram = "nix-doc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-du/default.nix b/nixpkgs/pkgs/tools/package-management/nix-du/default.nix
index dcd1e24ff34a..fcd7aca5714b 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-du/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-du/default.nix
@@ -40,5 +40,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.lgpl3Only;
     maintainers = [ maintainers.symphorien ];
     platforms = platforms.unix;
+    mainProgram = "nix-du";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-eval-jobs/default.nix b/nixpkgs/pkgs/tools/package-management/nix-eval-jobs/default.nix
index 95cfa9a447d2..defc680968d4 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-eval-jobs/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-eval-jobs/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3;
     maintainers = with lib.maintainers; [ adisbladis mic92 ];
     platforms = lib.platforms.unix;
+    mainProgram = "nix-eval-jobs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix b/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix
index b924c8c07f4a..59422ff22cc2 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-pin/default.nix
@@ -46,5 +46,6 @@ let self = stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.timbertson ];
     platforms = platforms.all;
+    mainProgram = "nix-pin";
   };
 }; in self
diff --git a/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix b/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix
index ee537733e7cb..8ed71d078b78 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-prefetch/default.nix
@@ -76,5 +76,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ msteen ];
     homepage = "https://github.com/msteen/nix-prefetch";
     platforms = platforms.all;
+    mainProgram = "nix-prefetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix b/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix
index 20f374b8d108..a149b490f5aa 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-serve/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation {
     maintainers = [ maintainers.eelco ];
     license = licenses.lgpl21;
     platforms = nix.meta.platforms;
+    mainProgram = "nix-serve";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix b/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix
index 0077c6c01895..647a11b01fdc 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-simple-deploy/default.nix
@@ -26,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     platforms = platforms.unix;
     license = with licenses; [ asl20 /* OR */ mit ];
     maintainers = with maintainers; [ misuzu ];
+    mainProgram = "nix-simple-deploy";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-template/default.nix b/nixpkgs/pkgs/tools/package-management/nix-template/default.nix
index 84afede50fe2..e1431532f857 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-template/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-template/default.nix
@@ -47,5 +47,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/jonringer/nix-template/releases/tag/v${version}";
     license = licenses.cc0;
     maintainers = with maintainers; [ jonringer ];
+    mainProgram = "nix-template";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-top/default.nix b/nixpkgs/pkgs/tools/package-management/nix-top/default.nix
index 523f15bd4662..dc49f2a739e9 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-top/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-top/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ samueldr ];
     platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "nix-top";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix b/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix
index 69ebf1c7cd00..be31ca34ad60 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-universal-prefetch/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ samueldr ];
     platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "nix-universal-prefetch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix b/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix
index ebfd730544e1..533f487e3974 100644
--- a/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix-update-source/default.nix
@@ -54,5 +54,6 @@ python3Packages.buildPythonApplication rec {
     description = "Utility to automate updating of nix derivation sources";
     maintainers = with lib.maintainers; [ timbertson ];
     license = lib.licenses.mit;
+    mainProgram = "nix-update-source";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/nix/common.nix b/nixpkgs/pkgs/tools/package-management/nix/common.nix
index 798c7cc918d5..d61384ec1055 100644
--- a/nixpkgs/pkgs/tools/package-management/nix/common.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix/common.nix
@@ -1,9 +1,11 @@
-{ lib, fetchFromGitHub
+{ lib
+, fetchFromGitHub
 , version
 , suffix ? ""
 , hash ? null
 , src ? fetchFromGitHub { owner = "NixOS"; repo = "nix"; rev = version; inherit hash; }
 , patches ? [ ]
+, maintainers ? with lib.maintainers; [ eelco lovesegfault artturin ]
 }:
 assert (hash == null) -> (src != null);
 let
@@ -27,6 +29,8 @@ in
 , callPackage
 , coreutils
 , curl
+, docbook_xsl_ns
+, docbook5
 , editline
 , flex
 , gnutar
@@ -37,6 +41,8 @@ in
 , libarchive
 , libcpuid
 , libsodium
+, libxml2
+, libxslt
 , lowdown
 , mdbook
 , mdbook-linkcheck
@@ -86,13 +92,17 @@ self = stdenv.mkDerivation {
 
   nativeBuildInputs = [
     pkg-config
-  ] ++ lib.optionals atLeast24 [
     autoconf-archive
     autoreconfHook
     bison
     flex
     jq
-  ] ++ lib.optionals (atLeast24 && enableDocumentation) [
+  ] ++ lib.optionals (enableDocumentation && !atLeast24) [
+    libxslt
+    libxml2
+    docbook_xsl_ns
+    docbook5
+  ] ++ lib.optionals (enableDocumentation && atLeast24) [
     (lib.getBin lowdown)
     mdbook
   ] ++ lib.optionals (atLeast213 && enableDocumentation) [
@@ -111,13 +121,12 @@ self = stdenv.mkDerivation {
     openssl
     sqlite
     xz
-  ] ++ lib.optionals stdenv.isDarwin [
-    Security
-  ] ++ lib.optionals atLeast24 [
     gtest
     libarchive
     lowdown
-  ] ++ lib.optionals (atLeast24 && stdenv.isx86_64) [
+  ] ++ lib.optionals stdenv.isDarwin [
+    Security
+  ] ++ lib.optionals (stdenv.isx86_64) [
     libcpuid
   ] ++ lib.optionals atLeast214 [
     rapidcheck
@@ -133,13 +142,6 @@ self = stdenv.mkDerivation {
     nlohmann_json
   ];
 
-  NIX_LDFLAGS = lib.optionals (!atLeast24) [
-    # https://github.com/NixOS/nix/commit/3e85c57a6cbf46d5f0fe8a89b368a43abd26daba
-    (lib.optionalString enableStatic "-lssl -lbrotlicommon -lssh2 -lz -lnghttp2 -lcrypto")
-    # https://github.com/NixOS/nix/commits/74b4737d8f0e1922ef5314a158271acf81cd79f8
-    (lib.optionalString (stdenv.hostPlatform.system == "armv5tel-linux" || stdenv.hostPlatform.system == "armv6l-linux") "-latomic")
-  ];
-
   postPatch = ''
     patchShebangs --build tests
   '';
@@ -180,9 +182,6 @@ self = stdenv.mkDerivation {
     "--enable-gc"
   ] ++ lib.optionals (!enableDocumentation) [
     "--disable-doc-gen"
-  ] ++ lib.optionals (!atLeast24) [
-    # option was removed in 2.4
-    "--disable-init-state"
   ] ++ lib.optionals atLeast214 [
     "CXXFLAGS=-I${lib.getDev rapidcheck}/extras/gtest/include"
   ] ++ lib.optionals stdenv.isLinux [
@@ -246,7 +245,7 @@ self = stdenv.mkDerivation {
     '';
     homepage = "https://nixos.org/";
     license = licenses.lgpl2Plus;
-    maintainers = with maintainers; [ eelco lovesegfault artturin ];
+    inherit maintainers;
     platforms = platforms.unix;
     outputsToInstall = [ "out" ] ++ optional enableDocumentation "man";
     mainProgram = "nix";
diff --git a/nixpkgs/pkgs/tools/package-management/nix/default.nix b/nixpkgs/pkgs/tools/package-management/nix/default.nix
index 2bf354fbc69f..4652ddb76a5b 100644
--- a/nixpkgs/pkgs/tools/package-management/nix/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/nix/default.nix
@@ -4,7 +4,6 @@
 , boehmgc
 , callPackage
 , fetchFromGitHub
-, fetchurl
 , fetchpatch
 , fetchpatch2
 , runCommand
@@ -113,6 +112,13 @@ let
     hash = "sha256-s1ybRFCjQaSGj7LKu0Z5g7UiHqdJGeD+iPoQL0vaiS0=";
   };
 
+  patch-rapidcheck-shared = fetchpatch2 {
+    # https://github.com/NixOS/nix/pull/9431
+    name = "fix-missing-librapidcheck.patch";
+    url = "https://github.com/NixOS/nix/commit/46131567da96ffac298b9ec54016b37114b0dfd5.patch";
+    hash = "sha256-lShYxYKRDWwBqCysAFmFBudhhAL1eendWcL8sEFLCGg=";
+  };
+
   # Intentionally does not support overrideAttrs etc
   # Use only for tests that are about the package relation to `pkgs` and/or NixOS.
   addTestsShallowly = tests: pkg: pkg // {
@@ -145,15 +151,13 @@ let
     pkg;
 
 in lib.makeExtensible (self: ({
-  nix_2_3 = (common rec {
-    version = "2.3.16";
-    src = fetchurl {
-      url = "https://nixos.org/releases/nix/nix-${version}/nix-${version}.tar.xz";
-      hash = "sha256-fuaBtp8FtSVJLSAsO+3Nne4ZYLuBj2JpD2xEk7fCqrw=";
-    };
+  nix_2_3 = (common {
+    version = "2.3.17";
+    hash = "sha256-EK0pgHDekJFqr0oMj+8ANIjq96WPjICe2s0m4xkUdH4=";
     patches = [
       patch-monitorfdhup
     ];
+    maintainers = with lib.maintainers; [ flokli raitobezarius ];
   }).override { boehmgc = boehmgc-nix_2_3; };
 
   nix_2_10 = common {
@@ -196,26 +200,46 @@ in lib.makeExtensible (self: ({
   nix_2_14 = common {
     version = "2.14.1";
     hash = "sha256-5aCmGZbsFcLIckCDfvnPD4clGPQI7qYAqHYlttN/Wkg=";
+    patches = [
+      patch-rapidcheck-shared
+    ];
   };
 
   nix_2_15 = common {
     version = "2.15.3";
     hash = "sha256-sfFXbjC5iIdSAbctZIuFozxX0uux/KFBNr9oh33xINs=";
+    patches = [
+      patch-rapidcheck-shared
+    ];
   };
 
   nix_2_16 = common {
     version = "2.16.2";
     hash = "sha256-VXIYCDkvAWeMoU0W2ZI0TeOszCZA1o8trz6YCPFD5ac=";
+    patches = [
+      patch-rapidcheck-shared
+    ];
   };
 
   nix_2_17 = common {
     version = "2.17.1";
     hash = "sha256-Q5L+rHzjp0bYuR2ogg+YPCn6isjmlQ4CJVT0zpn/hFc=";
+    patches = [
+      patch-rapidcheck-shared
+    ];
   };
 
   nix_2_18 = common {
     version = "2.18.1";
     hash = "sha256-WNmifcTsN9aG1ONkv+l2BC4sHZZxtNKy0keqBHXXQ7w=";
+    patches = [
+      patch-rapidcheck-shared
+    ];
+  };
+
+  nix_2_19 = common {
+    version = "2.19.2";
+    hash = "sha256-iA8DqS+W2fWTfR+nNJSvMHqQ+4NpYMRT3b+2zS6JTvE=";
   };
 
   # The minimum Nix version supported by Nixpkgs
@@ -237,7 +261,7 @@ in lib.makeExtensible (self: ({
 
   stable = addFallbackPathsCheck self.nix_2_18;
 
-  unstable = self.nix_2_18;
+  unstable = self.nix_2_19;
 } // lib.optionalAttrs config.allowAliases {
   nix_2_4 = throw "nixVersions.nix_2_4 has been removed";
 
diff --git a/nixpkgs/pkgs/tools/package-management/pacup/default.nix b/nixpkgs/pkgs/tools/package-management/pacup/default.nix
index 70c1fba6c698..7afd4eb815d7 100644
--- a/nixpkgs/pkgs/tools/package-management/pacup/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/pacup/default.nix
@@ -41,5 +41,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/pacstall/pacup/releases/tag/${version}";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ zahrun ];
+    mainProgram = "pacup";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/pdm/default.nix b/nixpkgs/pkgs/tools/package-management/pdm/default.nix
index aabdf1724411..0bf1cb88be68 100644
--- a/nixpkgs/pkgs/tools/package-management/pdm/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/pdm/default.nix
@@ -32,25 +32,15 @@ in
 with python.pkgs;
 buildPythonApplication rec {
   pname = "pdm";
-  version = "2.10.1";
+  version = "2.10.4";
   format = "pyproject";
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-0WZTHGWfxJBZM1RlRN0uFs9kjCum2JjIISatakIReoE=";
+    hash = "sha256-bf2dTLWQQ+3sstC0fSCOVdidMzunGX3rBcyi37x6S/s=";
   };
 
-  patches = [
-    # https://github.com/NixOS/nixpkgs/issues/265883
-    # https://github.com/pdm-project/pdm/pull/2379
-    (fetchpatch {
-      name = "fix-template-permission.patch";
-      url = "https://github.com/pdm-project/pdm/commit/f0efdcefe589bc58c28ccf6ce2d23cad9a81dccc.patch";
-      hash = "sha256-NnHDSz2N63JzSzh2t9a5f/QQWM6Hyd5Cn5JY2zem6Ac=";
-    })
-  ];
-
   nativeBuildInputs = [
     pdm-backend
   ];
diff --git a/nixpkgs/pkgs/tools/package-management/pkg/default.nix b/nixpkgs/pkgs/tools/package-management/pkg/default.nix
index 9ca25dd31c38..b100b9984915 100644
--- a/nixpkgs/pkgs/tools/package-management/pkg/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/pkg/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation (finalAttrs: {
     maintainers = with maintainers; [ qyliss ];
     platforms = with platforms; darwin ++ freebsd ++ linux ++ netbsd ++ openbsd;
     license = licenses.bsd2;
+    mainProgram = "pkg";
   };
 })
diff --git a/nixpkgs/pkgs/tools/package-management/poetry/default.nix b/nixpkgs/pkgs/tools/package-management/poetry/default.nix
index f4a10a8ff2ef..6de9219529bd 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 = poetry.version;
+        version = "1.8.1";
         src = fetchFromGitHub {
           owner = "python-poetry";
           repo = "poetry-core";
           rev = version;
-          hash = "sha256-OfY2zc+5CgOrgbiPVnvMdT4h1S7Aek8S7iThl6azmsk=";
+          hash = "sha256-RnCJ67jaL2knwv+Uo7p0zOejHAT73f40weaJnfqOYoM=";
         };
       });
     } // (plugins self);
diff --git a/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-export.nix b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-export.nix
index d040c32c4834..fba027bc19c2 100644
--- a/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-export.nix
+++ b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-export.nix
@@ -6,14 +6,14 @@
 
 buildPythonPackage rec {
   pname = "poetry-plugin-export";
-  version = "1.5.0";
+  version = "1.6.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "python-poetry";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-bX7Mqpe7SYQQVrPNVOl8Bwmeiq7owIiUhw0sp5+Gwck=";
+    hash = "sha256-6U96O0mCQpviBr4I67ZfHytsooXG4oCNTx8YqrrIzYo=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix
index e737173a857e..77b6e44c9273 100644
--- a/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix
+++ b/nixpkgs/pkgs/tools/package-management/poetry/plugins/poetry-plugin-up.nix
@@ -9,14 +9,14 @@
 
 buildPythonPackage rec {
   pname = "poetry-plugin-up";
-  version = "0.7.0";
+  version = "0.7.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "MousaZeidBaker";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-RjyRnCrHLKBJm8WMzQd0WcfpO8Ve+ydvUTN4EnVunlI=";
+    hash = "sha256-ProwMnkg8LaPvb4aYyO1PR30iMSNE9oyKgCIX4O5j+E=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix b/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix
index 751db3ceec99..33fcb8e6f46d 100644
--- a/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix
+++ b/nixpkgs/pkgs/tools/package-management/poetry/unwrapped.nix
@@ -3,7 +3,6 @@
 , buildPythonPackage
 , pythonOlder
 , fetchFromGitHub
-, fetchpatch
 , installShellFiles
 , pythonRelaxDepsHook
 , build
@@ -42,7 +41,7 @@
 
 buildPythonPackage rec {
   pname = "poetry";
-  version = "1.6.1";
+  version = "1.7.1";
   format = "pyproject";
 
   disabled = pythonOlder "3.8";
@@ -51,18 +50,9 @@ buildPythonPackage rec {
     owner = "python-poetry";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-/OvYT4Vix1t5Yx/Tx0z3E9L9qJ4OdI4maQqUVl8H524=";
+    hash = "sha256-PM3FIZYso7p0Oe0RpiPuxHrQrgnMlkT5SVeaJPK/J94=";
   };
 
-  patches = [
-    # Backport patch to fix pypa/build 1.0 incompatibility
-    # FIXME: remove in next release
-    (fetchpatch {
-      url = "https://github.com/python-poetry/poetry/commit/a16863d1a448ff91a7cc4e48042d3a8669b78b34.patch";
-      hash = "sha256-dWa5W1jFS7h5cTgoFy89o1Rbtmyddvme4sus+lld058=";
-    })
-  ];
-
   nativeBuildInputs = [
     installShellFiles
     pythonRelaxDepsHook
@@ -132,6 +122,8 @@ buildPythonPackage rec {
   '';
 
   disabledTests = [
+    "test_env_system_packages_are_relative_to_lib"
+    "test_install_warning_corrupt_root"
     "test_installer_with_pypi_repository"
     # touches network
     "git"
@@ -148,6 +140,7 @@ buildPythonPackage rec {
     # 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"
@@ -173,5 +166,6 @@ buildPythonPackage rec {
     description = "Python dependency management and packaging made easy";
     license = licenses.mit;
     maintainers = with maintainers; [ jakewaksbaum dotlambda ];
+    mainProgram = "poetry";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/poetry2conda/default.nix b/nixpkgs/pkgs/tools/package-management/poetry2conda/default.nix
index 86e66def4868..7aa821d678ac 100644
--- a/nixpkgs/pkgs/tools/package-management/poetry2conda/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/poetry2conda/default.nix
@@ -43,5 +43,6 @@ with python3.pkgs; buildPythonApplication rec {
     homepage = "https://github.com/dojeda/poetry2conda";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
+    mainProgram = "poetry2conda";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/repro-get/default.nix b/nixpkgs/pkgs/tools/package-management/repro-get/default.nix
index bb619874d7b0..95d5902be006 100644
--- a/nixpkgs/pkgs/tools/package-management/repro-get/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/repro-get/default.nix
@@ -69,5 +69,6 @@ buildGoModule rec {
     homepage = "https://github.com/reproducible-containers/repro-get";
     license = licenses.asl20;
     maintainers = with maintainers; [ matthewcroughan ];
+    mainProgram = "repro-get";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/reuse/default.nix b/nixpkgs/pkgs/tools/package-management/reuse/default.nix
index 8ba5be3e7795..38e79765aafb 100644
--- a/nixpkgs/pkgs/tools/package-management/reuse/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/reuse/default.nix
@@ -36,5 +36,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/fsfe/reuse-tool";
     license = with licenses; [ asl20 cc-by-sa-40 cc0 gpl3Plus ];
     maintainers = with maintainers; [ FlorianFranzen Luflosi ];
+    mainProgram = "reuse";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/rpm/default.nix b/nixpkgs/pkgs/tools/package-management/rpm/default.nix
index 9418244212ac..541787942a0e 100644
--- a/nixpkgs/pkgs/tools/package-management/rpm/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/rpm/default.nix
@@ -1,7 +1,28 @@
-{ stdenv, lib
-, pkg-config, autoreconfHook, pandoc
-, fetchurl, cpio, zlib, bzip2, file, elfutils, libbfd, libgcrypt, libarchive, nspr, nss, popt, db, xz, python, lua, llvmPackages
-, sqlite, zstd, libcap
+{ stdenv
+, lib
+, pkg-config
+, autoreconfHook
+, pandoc
+, fetchurl
+, cpio
+, zlib
+, bzip2
+, file
+, elfutils
+, libbfd
+, libgcrypt
+, libarchive
+, nspr
+, nss
+, popt
+, db
+, xz
+, python
+, lua
+, llvmPackages
+, sqlite
+, zstd
+, libcap
 }:
 
 stdenv.mkDerivation rec {
@@ -18,8 +39,8 @@ stdenv.mkDerivation rec {
 
   nativeBuildInputs = [ autoreconfHook pkg-config pandoc ];
   buildInputs = [ cpio zlib zstd bzip2 file libarchive libgcrypt nspr nss db xz python lua sqlite ]
-                ++ lib.optional stdenv.cc.isClang llvmPackages.openmp
-                ++ lib.optional stdenv.isLinux libcap;
+    ++ lib.optional stdenv.cc.isClang llvmPackages.openmp
+    ++ lib.optional stdenv.isLinux libcap;
 
   # rpm/rpmlib.h includes popt.h, and then the pkg-config file mentions these as linkage requirements
   propagatedBuildInputs = [ popt nss db bzip2 libarchive libbfd ]
@@ -72,5 +93,8 @@ stdenv.mkDerivation rec {
     description = "The RPM Package Manager";
     maintainers = with maintainers; [ copumpkin ];
     platforms = platforms.linux;
+    # Support for darwin was removed in https://github.com/NixOS/nixpkgs/pull/196350.
+    # This can be re-enables for apple_sdk.version >= 13.0.
+    badPlatforms = platforms.darwin;
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/smlpkg/default.nix b/nixpkgs/pkgs/tools/package-management/smlpkg/default.nix
index 4bf75c126149..be7592c1c6d8 100644
--- a/nixpkgs/pkgs/tools/package-management/smlpkg/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/smlpkg/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = mlton.meta.platforms;
     maintainers = with maintainers; [ athas ];
+    mainProgram = "smlpkg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/default.nix b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/default.nix
index 2f3ebff74108..70f5b143ebe8 100644
--- a/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/default.nix
+++ b/nixpkgs/pkgs/tools/package-management/yarn-lock-converter/default.nix
@@ -45,5 +45,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/VHT/yarn-lock-converter";
     license = licenses.mit;
     maintainers = with maintainers; [ gador ];
+    mainProgram = "yarn-lock-converter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/agebox/default.nix b/nixpkgs/pkgs/tools/security/agebox/default.nix
index ea50c8779b3d..b87cb2b8ca2a 100644
--- a/nixpkgs/pkgs/tools/security/agebox/default.nix
+++ b/nixpkgs/pkgs/tools/security/agebox/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     description = "Age based repository file encryption gitops tool";
     license = licenses.asl20;
     maintainers = with maintainers; [ lesuisse ];
+    mainProgram = "agebox";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/aide/default.nix b/nixpkgs/pkgs/tools/security/aide/default.nix
index b34be9a37710..0168ddc4cc90 100644
--- a/nixpkgs/pkgs/tools/security/aide/default.nix
+++ b/nixpkgs/pkgs/tools/security/aide/default.nix
@@ -1,16 +1,17 @@
-{ lib, stdenv, fetchurl, flex, bison, libmhash, zlib, acl, attr, libselinux, pcre }:
+{ lib, stdenv, fetchurl, flex, bison, libmhash, zlib, acl, attr, libselinux, pcre2, pkg-config, libgcrypt }:
 
 stdenv.mkDerivation rec {
   pname = "aide";
-  version = "0.17.4";
+  version = "0.18.6";
 
   src = fetchurl {
     url = "https://github.com/aide/aide/releases/download/v${version}/${pname}-${version}.tar.gz";
-    sha256 = "sha256-yBUFJG8//C52A21Dp3ISroKJW1iB2bniXBNhsam3qEY=";
+    sha256 = "sha256-j/Ns5H030MyYd2LV2WE0bUdd50u6ihgy/QBttu3TwQ4=";
   };
 
-  buildInputs = [ flex bison libmhash zlib acl attr libselinux pcre ];
+  buildInputs = [ flex bison libmhash zlib acl attr libselinux pcre2 libgcrypt ];
 
+  nativeBuildInputs = [ pkg-config ];
 
   configureFlags = [
     "--with-posix-acl"
@@ -22,7 +23,7 @@ stdenv.mkDerivation rec {
     homepage = "https://aide.github.io/";
     description = "A file and directory integrity checker";
     license = licenses.gpl2Plus;
-    maintainers = [ ];
+    maintainers = with maintainers; [ happysalada ];
     platforms = platforms.linux;
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/apkleaks/default.nix b/nixpkgs/pkgs/tools/security/apkleaks/default.nix
index 133601e4025f..29a0b17ccb32 100644
--- a/nixpkgs/pkgs/tools/security/apkleaks/default.nix
+++ b/nixpkgs/pkgs/tools/security/apkleaks/default.nix
@@ -33,5 +33,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/dwisiswant0/apkleaks";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "apkleaks";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/bao/default.nix b/nixpkgs/pkgs/tools/security/bao/default.nix
index f948bccc5f43..503896885c13 100644
--- a/nixpkgs/pkgs/tools/security/bao/default.nix
+++ b/nixpkgs/pkgs/tools/security/bao/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/oconnor663/bao";
     maintainers = with lib.maintainers; [ amarshall ];
     license = with lib.licenses; [ cc0 asl20 ];
+    mainProgram = "bao";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/bettercap/default.nix b/nixpkgs/pkgs/tools/security/bettercap/default.nix
index 69736b4cc308..2ece9ee6e4c4 100644
--- a/nixpkgs/pkgs/tools/security/bettercap/default.nix
+++ b/nixpkgs/pkgs/tools/security/bettercap/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     homepage = "https://www.bettercap.org/";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ y0no ];
+    mainProgram = "bettercap";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/buttercup-desktop/default.nix b/nixpkgs/pkgs/tools/security/buttercup-desktop/default.nix
index 4138acb2cedf..43220d0ccabc 100644
--- a/nixpkgs/pkgs/tools/security/buttercup-desktop/default.nix
+++ b/nixpkgs/pkgs/tools/security/buttercup-desktop/default.nix
@@ -2,10 +2,10 @@
 
 let
   pname = "buttercup-desktop";
-  version = "2.20.3";
+  version = "2.21.0";
   src = fetchurl {
     url = "https://github.com/buttercup/buttercup-desktop/releases/download/v${version}/Buttercup-linux-x86_64.AppImage";
-    sha256 = "sha256-e7CZjJSkAAkNn73Z3cg+D5SUdReBp6pqz7zKrbkHs38=";
+    sha256 = "sha256-OFqaxrYk1vyZigr2FN6okMjBdb2SIevENF49ubbHD8c=";
   };
   appimageContents = appimageTools.extractType2 { inherit pname src version; };
 
diff --git a/nixpkgs/pkgs/tools/security/certinfo/default.nix b/nixpkgs/pkgs/tools/security/certinfo/default.nix
new file mode 100644
index 000000000000..e0d2a3998a25
--- /dev/null
+++ b/nixpkgs/pkgs/tools/security/certinfo/default.nix
@@ -0,0 +1,29 @@
+{ stdenv, lib, buildGoModule, fetchFromGitHub, libX11, darwin }:
+
+buildGoModule rec {
+  pname = "certinfo";
+  version = "1.0.21";
+
+  src = fetchFromGitHub {
+    owner = "pete911";
+    repo = "certinfo";
+    rev = "v${version}";
+    sha256 = "acAjX4M/egAhGVOeEKw5r2wteA/UsWf9fGR/HnhUr/w=";
+  };
+
+  # clipboard functionality not working on Darwin
+  doCheck = !(stdenv.isDarwin && stdenv.isAarch64);
+
+  buildInputs = [ ]
+    ++ lib.optionals stdenv.isLinux [ libX11 ]
+    ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Cocoa ];
+
+  vendorHash = null;
+
+  meta = with lib; {
+    description = "Print x509 certificate info";
+    homepage = "https://github.com/pete911/certinfo";
+    license = licenses.mit;
+    maintainers = with maintainers; [ jakuzure ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/security/certmgr/default.nix b/nixpkgs/pkgs/tools/security/certmgr/default.nix
deleted file mode 100644
index da62e7d0568e..000000000000
--- a/nixpkgs/pkgs/tools/security/certmgr/default.nix
+++ /dev/null
@@ -1,45 +0,0 @@
-{ lib, buildGoPackage, fetchFromGitHub, fetchpatch }:
-
-let
-  generic = { patches ? [] }:
-    buildGoPackage rec {
-      version = "1.6.4";
-      pname = "certmgr";
-
-      goPackagePath = "github.com/cloudflare/certmgr/";
-
-      src = fetchFromGitHub {
-        owner = "cloudflare";
-        repo = "certmgr";
-        rev = "v${version}";
-        sha256 = "0glvyp61ya21pdm2bsvq3vfhmmxc2998vxc6hiyc79ijsv9n6jqi";
-      };
-
-      inherit patches;
-
-      meta = with lib; {
-        homepage = "https://cfssl.org/";
-        description = "Cloudflare's certificate manager";
-        platforms = platforms.linux;
-        license = licenses.bsd2;
-        maintainers = with maintainers; [ johanot srhb ];
-      };
-    };
-in
-{
-  certmgr = generic {};
-
-  certmgr-selfsigned = generic {
-    # The following patch makes it possible to use a self-signed x509 cert
-    # for the cfssl apiserver.
-    # TODO: remove patch when PR is merged.
-    patches = [
-      (fetchpatch {
-        # https://github.com/cloudflare/certmgr/pull/51
-        name   = "cloudflare-certmgr-pull-51.patch";
-        url    = "https://github.com/cloudflare/certmgr/compare/232e0adf8379db28ab74c46e0dd3eddb3cd8f2ea...55c595a4a2dc871726b3c8337469daf5597718a3.patch";
-        sha256 = "0jhsw159d2mgybvbbn6pmvj4yqr5cwcal5fjwkcn9m4f4zlb6qrs";
-      })
-    ];
-  };
-}
diff --git a/nixpkgs/pkgs/tools/security/cfripper/default.nix b/nixpkgs/pkgs/tools/security/cfripper/default.nix
index c97aa865af06..440ca40ec68d 100644
--- a/nixpkgs/pkgs/tools/security/cfripper/default.nix
+++ b/nixpkgs/pkgs/tools/security/cfripper/default.nix
@@ -5,13 +5,13 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "cfripper";
-  version = "1.14.0";
+  version = "1.15.1";
 
   src = fetchFromGitHub {
     owner = "Skyscanner";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-f8abfrYoEwmlQBl0eRFfigw2SrfPCL3+88bwc8miKEk=";
+    hash = "sha256-Gtg4zoMTOW/nrFm7PF4/96VGcMALg2msVZ3E7lGm5KA=";
   };
 
   propagatedBuildInputs = with python3.pkgs; [
diff --git a/nixpkgs/pkgs/tools/security/chainsaw/Cargo.lock b/nixpkgs/pkgs/tools/security/chainsaw/Cargo.lock
index d088da4d305c..28e3406db066 100644
--- a/nixpkgs/pkgs/tools/security/chainsaw/Cargo.lock
+++ b/nixpkgs/pkgs/tools/security/chainsaw/Cargo.lock
@@ -4,20 +4,21 @@ version = 3
 
 [[package]]
 name = "ahash"
-version = "0.8.3"
+version = "0.8.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
+checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
 dependencies = [
  "cfg-if",
  "once_cell",
  "version_check",
+ "zerocopy",
 ]
 
 [[package]]
 name = "aho-corasick"
-version = "1.1.1"
+version = "1.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
 dependencies = [
  "memchr",
 ]
@@ -137,9 +138,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
 [[package]]
 name = "base64"
-version = "0.21.4"
+version = "0.21.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2"
+checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
 
 [[package]]
 name = "bincode"
@@ -158,9 +159,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
 
 [[package]]
 name = "bitflags"
-version = "2.4.0"
+version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
+checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
 
 [[package]]
 name = "blake3"
@@ -177,9 +178,9 @@ dependencies = [
 
 [[package]]
 name = "bstr"
-version = "1.6.2"
+version = "1.8.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a"
+checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c"
 dependencies = [
  "memchr",
  "regex-automata",
@@ -194,9 +195,9 @@ checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
 
 [[package]]
 name = "bytecount"
-version = "0.6.4"
+version = "0.6.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad152d03a2c813c80bb94fedbf3a3f02b28f793e39e7c214c8a0bcc196343de7"
+checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205"
 
 [[package]]
 name = "byteorder"
@@ -221,9 +222,9 @@ dependencies = [
 
 [[package]]
 name = "cargo-platform"
-version = "0.1.3"
+version = "0.1.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479"
+checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff"
 dependencies = [
  "serde",
 ]
@@ -259,7 +260,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 
 [[package]]
 name = "chainsaw"
-version = "2.8.0"
+version = "2.8.1"
 dependencies = [
  "aho-corasick",
  "anyhow",
@@ -269,7 +270,7 @@ dependencies = [
  "bytesize",
  "chrono",
  "chrono-tz",
- "clap 4.4.6",
+ "clap 4.4.8",
  "crossterm",
  "evtx",
  "hex",
@@ -282,7 +283,7 @@ dependencies = [
  "paste",
  "predicates",
  "prettytable-rs",
- "quick-xml 0.30.0",
+ "quick-xml 0.31.0",
  "rayon",
  "regex",
  "rustc-hash",
@@ -313,9 +314,9 @@ dependencies = [
 
 [[package]]
 name = "chrono-tz"
-version = "0.8.3"
+version = "0.8.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1369bc6b9e9a7dfdae2055f6ec151fe9c554a9d23d357c0237cee2e25eaabb7"
+checksum = "e23185c0e21df6ed832a12e2bda87c7d1def6842881fb634a8511ced741b0d76"
 dependencies = [
  "chrono",
  "chrono-tz-build",
@@ -325,9 +326,9 @@ dependencies = [
 
 [[package]]
 name = "chrono-tz-build"
-version = "0.2.0"
+version = "0.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2f5ebdc942f57ed96d560a6d1a459bae5851102a25d5bf89dc04ae453e31ecf"
+checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f"
 dependencies = [
  "parse-zoneinfo",
  "phf",
@@ -351,9 +352,9 @@ dependencies = [
 
 [[package]]
 name = "clap"
-version = "4.4.6"
+version = "4.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956"
+checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64"
 dependencies = [
  "clap_builder",
  "clap_derive",
@@ -361,26 +362,26 @@ dependencies = [
 
 [[package]]
 name = "clap_builder"
-version = "4.4.6"
+version = "4.4.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45"
+checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc"
 dependencies = [
  "anstream",
  "anstyle",
- "clap_lex 0.5.1",
+ "clap_lex 0.6.0",
  "strsim",
 ]
 
 [[package]]
 name = "clap_derive"
-version = "4.4.2"
+version = "4.4.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873"
+checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
 dependencies = [
  "heck",
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.39",
 ]
 
 [[package]]
@@ -394,9 +395,9 @@ dependencies = [
 
 [[package]]
 name = "clap_lex"
-version = "0.5.1"
+version = "0.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961"
+checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
 
 [[package]]
 name = "colorchoice"
@@ -477,7 +478,7 @@ version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
 dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.4.1",
  "crossterm_winapi",
  "libc",
  "mio",
@@ -519,9 +520,12 @@ dependencies = [
 
 [[package]]
 name = "deranged"
-version = "0.3.8"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946"
+checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
+dependencies = [
+ "powerfmt",
+]
 
 [[package]]
 name = "dialoguer"
@@ -669,26 +673,15 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
 
 [[package]]
 name = "errno"
-version = "0.3.4"
+version = "0.3.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480"
+checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8"
 dependencies = [
- "errno-dragonfly",
  "libc",
  "windows-sys 0.48.0",
 ]
 
 [[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 = "error-chain"
 version = "0.12.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -740,9 +733,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.10"
+version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
+checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
 dependencies = [
  "cfg-if",
  "libc",
@@ -772,9 +765,9 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
-version = "0.14.1"
+version = "0.14.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12"
+checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
 
 [[package]]
 name = "heck"
@@ -805,16 +798,16 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
 
 [[package]]
 name = "iana-time-zone"
-version = "0.1.57"
+version = "0.1.58"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613"
+checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
 dependencies = [
  "android_system_properties",
  "core-foundation-sys",
  "iana-time-zone-haiku",
  "js-sys",
  "wasm-bindgen",
- "windows",
+ "windows-core",
 ]
 
 [[package]]
@@ -838,12 +831,12 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "2.0.2"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897"
+checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
 dependencies = [
  "equivalent",
- "hashbrown 0.14.1",
+ "hashbrown 0.14.2",
 ]
 
 [[package]]
@@ -881,24 +874,13 @@ dependencies = [
 ]
 
 [[package]]
-name = "io-lifetimes"
-version = "1.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
-dependencies = [
- "hermit-abi 0.3.3",
- "libc",
- "windows-sys 0.48.0",
-]
-
-[[package]]
 name = "is-terminal"
 version = "0.4.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
 dependencies = [
  "hermit-abi 0.3.3",
- "rustix 0.38.17",
+ "rustix",
  "windows-sys 0.48.0",
 ]
 
@@ -928,18 +910,18 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
 
 [[package]]
 name = "jobserver"
-version = "0.1.26"
+version = "0.1.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
+checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "js-sys"
-version = "0.3.64"
+version = "0.3.65"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
+checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -952,9 +934,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 
 [[package]]
 name = "libc"
-version = "0.2.149"
+version = "0.2.150"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
+checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
 
 [[package]]
 name = "libesedb"
@@ -977,22 +959,27 @@ dependencies = [
 ]
 
 [[package]]
-name = "linux-raw-sys"
-version = "0.3.8"
+name = "libredox"
+version = "0.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
+dependencies = [
+ "bitflags 2.4.1",
+ "libc",
+ "redox_syscall",
+]
 
 [[package]]
 name = "linux-raw-sys"
-version = "0.4.8"
+version = "0.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db"
+checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829"
 
 [[package]]
 name = "lock_api"
-version = "0.4.10"
+version = "0.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -1044,7 +1031,7 @@ dependencies = [
  "bitflags 1.3.2",
  "byteorder",
  "chrono",
- "clap 4.4.6",
+ "clap 4.4.8",
  "csv",
  "dialoguer",
  "encoding",
@@ -1071,9 +1058,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "mio"
-version = "0.8.8"
+version = "0.8.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
+checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0"
 dependencies = [
  "libc",
  "log",
@@ -1103,7 +1090,7 @@ version = "1.0.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "394a6bb8a521ac6140cf95b0a3b1c9a35c3ebccde7a0b13b7a3deb7039220024"
 dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.4.1",
  "blake3",
  "chrono",
  "crossterm",
@@ -1201,9 +1188,9 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.16"
+version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
+checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
 dependencies = [
  "autocfg",
 ]
@@ -1231,9 +1218,9 @@ checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
 
 [[package]]
 name = "os_str_bytes"
-version = "6.5.1"
+version = "6.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac"
+checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
 
 [[package]]
 name = "parking_lot"
@@ -1247,13 +1234,13 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.8"
+version = "0.9.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall 0.3.5",
+ "redox_syscall",
  "smallvec",
  "windows-targets 0.48.5",
 ]
@@ -1319,9 +1306,15 @@ checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
 
 [[package]]
 name = "portable-atomic"
-version = "1.4.3"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b"
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
 
 [[package]]
 name = "ppv-lite86"
@@ -1376,9 +1369,9 @@ dependencies = [
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.68"
+version = "1.0.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b1106fec09662ec6dd98ccac0f81cef56984d0b49f75c92d8cbad76e20c005c"
+checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
 dependencies = [
  "unicode-ident",
 ]
@@ -1405,9 +1398,9 @@ dependencies = [
 
 [[package]]
 name = "quick-xml"
-version = "0.30.0"
+version = "0.31.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956"
+checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
 dependencies = [
  "memchr",
  "serde",
@@ -1474,38 +1467,29 @@ dependencies = [
 
 [[package]]
 name = "redox_syscall"
-version = "0.2.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.3.5"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
 dependencies = [
  "bitflags 1.3.2",
 ]
 
 [[package]]
 name = "redox_users"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
 dependencies = [
  "getrandom",
- "redox_syscall 0.2.16",
+ "libredox",
  "thiserror",
 ]
 
 [[package]]
 name = "regex"
-version = "1.9.6"
+version = "1.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff"
+checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -1515,9 +1499,9 @@ dependencies = [
 
 [[package]]
 name = "regex-automata"
-version = "0.3.9"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9"
+checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
 dependencies = [
  "aho-corasick",
  "memchr",
@@ -1526,9 +1510,9 @@ dependencies = [
 
 [[package]]
 name = "regex-syntax"
-version = "0.7.5"
+version = "0.8.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
 
 [[package]]
 name = "rustc-hash"
@@ -1538,28 +1522,14 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
 name = "rustix"
-version = "0.37.24"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d"
-dependencies = [
- "bitflags 1.3.2",
- "errno",
- "io-lifetimes",
- "libc",
- "linux-raw-sys 0.3.8",
- "windows-sys 0.48.0",
-]
-
-[[package]]
-name = "rustix"
-version = "0.38.17"
+version = "0.38.25"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f25469e9ae0f3d0047ca8b93fc56843f38e6774f0914a107ff8b41be8be8e0b7"
+checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e"
 dependencies = [
- "bitflags 2.4.0",
+ "bitflags 2.4.1",
  "errno",
  "libc",
- "linux-raw-sys 0.4.8",
+ "linux-raw-sys",
  "windows-sys 0.48.0",
 ]
 
@@ -1592,38 +1562,38 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
 name = "semver"
-version = "1.0.19"
+version = "1.0.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0"
+checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
 dependencies = [
  "serde",
 ]
 
 [[package]]
 name = "serde"
-version = "1.0.188"
+version = "1.0.193"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
+checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.188"
+version = "1.0.193"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
+checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.107"
+version = "1.0.108"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
+checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
 dependencies = [
  "itoa",
  "ryu",
@@ -1632,11 +1602,11 @@ dependencies = [
 
 [[package]]
 name = "serde_yaml"
-version = "0.9.25"
+version = "0.9.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574"
+checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c"
 dependencies = [
- "indexmap 2.0.2",
+ "indexmap 2.1.0",
  "itoa",
  "ryu",
  "serde",
@@ -1713,9 +1683,9 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.11.1"
+version = "1.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
+checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
 
 [[package]]
 name = "strsim"
@@ -1725,15 +1695,15 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
 
 [[package]]
 name = "strum_macros"
-version = "0.25.2"
+version = "0.25.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059"
+checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
 dependencies = [
  "heck",
  "proc-macro2",
  "quote",
  "rustversion",
- "syn 2.0.38",
+ "syn 2.0.39",
 ]
 
 [[package]]
@@ -1749,9 +1719,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.38"
+version = "2.0.39"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
+checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1775,14 +1745,14 @@ dependencies = [
 
 [[package]]
 name = "tempfile"
-version = "3.8.0"
+version = "3.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"
+checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
 dependencies = [
  "cfg-if",
  "fastrand",
- "redox_syscall 0.3.5",
- "rustix 0.38.17",
+ "redox_syscall",
+ "rustix",
  "windows-sys 0.48.0",
 ]
 
@@ -1808,11 +1778,11 @@ dependencies = [
 
 [[package]]
 name = "terminal_size"
-version = "0.2.6"
+version = "0.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237"
+checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7"
 dependencies = [
- "rustix 0.37.24",
+ "rustix",
  "windows-sys 0.48.0",
 ]
 
@@ -1830,34 +1800,35 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
 
 [[package]]
 name = "thiserror"
-version = "1.0.49"
+version = "1.0.50"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4"
+checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.49"
+version = "1.0.50"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc"
+checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "time"
-version = "0.3.29"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe"
+checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
 dependencies = [
  "deranged",
  "itoa",
  "libc",
  "num_threads",
+ "powerfmt",
  "serde",
  "time-core",
  "time-macros",
@@ -1880,11 +1851,10 @@ dependencies = [
 
 [[package]]
 name = "tracing"
-version = "0.1.37"
+version = "0.1.40"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
+checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
 dependencies = [
- "cfg-if",
  "pin-project-lite",
  "tracing-attributes",
  "tracing-core",
@@ -1892,20 +1862,20 @@ dependencies = [
 
 [[package]]
 name = "tracing-attributes"
-version = "0.1.26"
+version = "0.1.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
+checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "tracing-core"
-version = "0.1.31"
+version = "0.1.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
+checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
 dependencies = [
  "once_cell",
 ]
@@ -1945,9 +1915,9 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
 
 [[package]]
 name = "uuid"
-version = "1.4.1"
+version = "1.6.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
+checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
 dependencies = [
  "getrandom",
  "serde",
@@ -1986,9 +1956,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
+checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -1996,24 +1966,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
+checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.39",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
+checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -2021,22 +1991,22 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
+checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.38",
+ "syn 2.0.39",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
+checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
 
 [[package]]
 name = "winapi"
@@ -2070,10 +2040,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 
 [[package]]
-name = "windows"
-version = "0.48.0"
+name = "windows-core"
+version = "0.51.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
+checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
 dependencies = [
  "windows-targets 0.48.5",
 ]
@@ -2228,7 +2198,27 @@ dependencies = [
 ]
 
 [[package]]
+name = "zerocopy"
+version = "0.7.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.39",
+]
+
+[[package]]
 name = "zeroize"
-version = "1.6.0"
+version = "1.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9"
+checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
diff --git a/nixpkgs/pkgs/tools/security/chainsaw/default.nix b/nixpkgs/pkgs/tools/security/chainsaw/default.nix
index 17208b71bde6..8375cccd0bdd 100644
--- a/nixpkgs/pkgs/tools/security/chainsaw/default.nix
+++ b/nixpkgs/pkgs/tools/security/chainsaw/default.nix
@@ -7,13 +7,13 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "chainsaw";
-  version = "2.8.0";
+  version = "2.8.1";
 
   src = fetchFromGitHub {
     owner = "WithSecureLabs";
     repo = "chainsaw";
     rev = "refs/tags/v${version}";
-    hash = "sha256-IBMMZ4NKD7BR3l06C7Y7pRL+pB8p6Ssx6RoXlH2XKyg=";
+    hash = "sha256-YEw/rN7X+npc9M8XdPGAZyYXSQOGiR0w9Wb3W63g8VU=";
   };
 
   cargoLock = {
diff --git a/nixpkgs/pkgs/tools/security/chkrootkit/default.nix b/nixpkgs/pkgs/tools/security/chkrootkit/default.nix
index 7c3af075a552..ad14c1cd3997 100644
--- a/nixpkgs/pkgs/tools/security/chkrootkit/default.nix
+++ b/nixpkgs/pkgs/tools/security/chkrootkit/default.nix
@@ -2,11 +2,11 @@
 
 stdenv.mkDerivation rec {
   pname = "chkrootkit";
-  version = "0.55";
+  version = "0.58b";
 
   src = fetchurl {
     url = "ftp://ftp.chkrootkit.org/pub/seg/pac/${pname}-${version}.tar.gz";
-    sha256 = "sha256-qBwChuxEkxP5U3ASAqAOgbIE/Cz0PieFhaEcEqXgJYs=";
+    sha256 = "sha256-de0qzoHw+j6cP7ZNqw6IV+1ZJH6nVfWJhBb+ssZoB7k=";
   };
 
   # TODO: a lazy work-around for linux build failure ...
diff --git a/nixpkgs/pkgs/tools/security/cmospwd/default.nix b/nixpkgs/pkgs/tools/security/cmospwd/default.nix
index 969298918055..e80b7256e50c 100644
--- a/nixpkgs/pkgs/tools/security/cmospwd/default.nix
+++ b/nixpkgs/pkgs/tools/security/cmospwd/default.nix
@@ -34,6 +34,6 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://www.cgsecurity.org/wiki/CmosPwd";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ t4ccer ];
-    platforms = platforms.x86_64;
+    platforms = [ "x86_64-linux" ];
   };
 })
diff --git a/nixpkgs/pkgs/tools/security/cnspec/default.nix b/nixpkgs/pkgs/tools/security/cnspec/default.nix
index 89d1850c4430..25b866285e95 100644
--- a/nixpkgs/pkgs/tools/security/cnspec/default.nix
+++ b/nixpkgs/pkgs/tools/security/cnspec/default.nix
@@ -5,17 +5,17 @@
 
 buildGoModule rec {
   pname = "cnspec";
-  version = "9.6.1";
+  version = "9.8.0";
 
   src = fetchFromGitHub {
     owner = "mondoohq";
     repo = "cnspec";
     rev = "refs/tags/v${version}";
-    hash = "sha256-aFQStXwoko2YA77d+H76AScNCNqC56CyJe5cz74SYdg=";
+    hash = "sha256-XxjFmFU6G7pTJCkWUYadFTEAQh5HZigfvUNoNNw1DOM=";
   };
 
   proxyVendor = true;
-  vendorHash = "sha256-fOSFOUrcxw/77vgPziigkSea93xR2k0Tr/cMGtX+3tc=";
+  vendorHash = "sha256-Ykb1dmvdOgOBqgsCJbLGwUbbMfsao0is95g8a2chVME=";
 
   subPackages = [
     "apps/cnspec"
diff --git a/nixpkgs/pkgs/tools/security/ctmg/default.nix b/nixpkgs/pkgs/tools/security/ctmg/default.nix
index b08af06825e3..81d57513aac3 100644
--- a/nixpkgs/pkgs/tools/security/ctmg/default.nix
+++ b/nixpkgs/pkgs/tools/security/ctmg/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ mrVanDalo ];
     platforms = platforms.linux;
+    mainProgram = "ctmg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/cyclonedx-gomod/default.nix b/nixpkgs/pkgs/tools/security/cyclonedx-gomod/default.nix
index 1c404aa3f836..d9e740fcf644 100644
--- a/nixpkgs/pkgs/tools/security/cyclonedx-gomod/default.nix
+++ b/nixpkgs/pkgs/tools/security/cyclonedx-gomod/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     changelog = "https://github.com/CycloneDX/cyclonedx-gomod/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "cyclonedx-gomod";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/dalfox/default.nix b/nixpkgs/pkgs/tools/security/dalfox/default.nix
index 85fc3c55a3b0..b6d21b801efc 100644
--- a/nixpkgs/pkgs/tools/security/dalfox/default.nix
+++ b/nixpkgs/pkgs/tools/security/dalfox/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     changelog = "https://github.com/hahwul/dalfox/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "dalfox";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/dismember/default.nix b/nixpkgs/pkgs/tools/security/dismember/default.nix
index 2dffd8116b9c..cb2dd99b45c5 100644
--- a/nixpkgs/pkgs/tools/security/dismember/default.nix
+++ b/nixpkgs/pkgs/tools/security/dismember/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/liamg/dismember";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "dismember";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/erosmb/default.nix b/nixpkgs/pkgs/tools/security/erosmb/default.nix
index b7984feac513..f03e9a958de2 100644
--- a/nixpkgs/pkgs/tools/security/erosmb/default.nix
+++ b/nixpkgs/pkgs/tools/security/erosmb/default.nix
@@ -44,5 +44,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/viktor02/EroSmb/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "erosmb";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/exploitdb/default.nix b/nixpkgs/pkgs/tools/security/exploitdb/default.nix
index 6bb2a5a0e6b7..cd54bad53de0 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 = "2023-11-18";
+  version = "2023-12-01";
 
   src = fetchFromGitLab {
     owner = "exploit-database";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-7W7HwHvRfm+nRms4H4TgB1la5OhGHv5lRHwbvjwRTMw=";
+    hash = "sha256-tWwcNZ4xyeNMhIyH6cYfW910syfZd4KF9G73XItz8hk=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/security/feroxbuster/default.nix b/nixpkgs/pkgs/tools/security/feroxbuster/default.nix
index 7ff4c2e12458..18af1a0f1c48 100644
--- a/nixpkgs/pkgs/tools/security/feroxbuster/default.nix
+++ b/nixpkgs/pkgs/tools/security/feroxbuster/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
     platforms = platforms.unix;
+    mainProgram = "feroxbuster";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/security/fscan/default.nix b/nixpkgs/pkgs/tools/security/fscan/default.nix
index f334555ad1ec..cda7fb968d3d 100644
--- a/nixpkgs/pkgs/tools/security/fscan/default.nix
+++ b/nixpkgs/pkgs/tools/security/fscan/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     license = licenses.mit;
     maintainers = with maintainers; [ Misaka13514 ];
     platforms = with platforms; unix ++ windows;
+    mainProgram = "fscan";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/gen-oath-safe/default.nix b/nixpkgs/pkgs/tools/security/gen-oath-safe/default.nix
index bb607c1fbd32..9ce87ac3bdd1 100644
--- a/nixpkgs/pkgs/tools/security/gen-oath-safe/default.nix
+++ b/nixpkgs/pkgs/tools/security/gen-oath-safe/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
     platforms =  platforms.unix;
     license = licenses.mit;
     maintainers = [ maintainers.makefu ];
+    mainProgram = "gen-oath-safe";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/security/ggshield/default.nix b/nixpkgs/pkgs/tools/security/ggshield/default.nix
index 588737006602..06f8796db864 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.21.0";
+  version = "1.22.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "GitGuardian";
     repo = "ggshield";
     rev = "refs/tags/v${version}";
-    hash = "sha256-wAYjt/sTo62wn1sdW9ATkzL54mhHj3soAn8+vsX4ZYw=";
+    hash = "sha256-AxFztqD43KqX0r8tZz4ltjUh2x42kdPqi+b/OunpPF4=";
   };
 
   pythonRelaxDeps = true;
@@ -42,6 +42,7 @@ python3.pkgs.buildPythonApplication rec {
   nativeCheckInputs = [
     git
   ] ++ (with python3.pkgs; [
+    jsonschema
     pyfakefs
     pytest-mock
     pytest-voluptuous
diff --git a/nixpkgs/pkgs/tools/security/go-dork/default.nix b/nixpkgs/pkgs/tools/security/go-dork/default.nix
index 5e6c21d2397b..d5b999d96990 100644
--- a/nixpkgs/pkgs/tools/security/go-dork/default.nix
+++ b/nixpkgs/pkgs/tools/security/go-dork/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     changelog = "https://github.com/dwisiswant0/go-dork/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "go-dork";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/gopass/default.nix b/nixpkgs/pkgs/tools/security/gopass/default.nix
index 92c0992c86e6..10efc22d4a1b 100644
--- a/nixpkgs/pkgs/tools/security/gopass/default.nix
+++ b/nixpkgs/pkgs/tools/security/gopass/default.nix
@@ -13,7 +13,7 @@
 
 buildGoModule rec {
   pname = "gopass";
-  version = "1.15.8";
+  version = "1.15.10";
 
   nativeBuildInputs = [ installShellFiles makeWrapper ];
 
@@ -21,10 +21,10 @@ buildGoModule rec {
     owner = "gopasspw";
     repo = "gopass";
     rev = "v${version}";
-    hash = "sha256-l8Ce0ioMnSlet+PMrQCMvyH3IvmQaE1MQSJR9myyLB8=";
+    hash = "sha256-6s4rg2+oC+RB2gE4FQIY2MPmFSh+RxiZxaIuMI/T8hE=";
   };
 
-  vendorHash = "sha256-xyQTlbTPAC2iG8XQ4oEHBXjfXauwuBhaTbsew23nlVw=";
+  vendorHash = "sha256-tbZpNraGVC+p6O1MOh4vPmcwUgW5ykg7rGTNOWKFk0M=";
 
   subPackages = [ "." ];
 
diff --git a/nixpkgs/pkgs/tools/security/gopass/git-credential.nix b/nixpkgs/pkgs/tools/security/gopass/git-credential.nix
index aac7deb19d5f..038cdaf84167 100644
--- a/nixpkgs/pkgs/tools/security/gopass/git-credential.nix
+++ b/nixpkgs/pkgs/tools/security/gopass/git-credential.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "git-credential-gopass";
-  version = "1.15.8";
+  version = "1.15.10";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "git-credential-gopass";
     rev = "v${version}";
-    hash = "sha256-gp/5ZBAxngQKRmr924f7ZQ4GX3uYHz2ULw1Gn+d7vug=";
+    hash = "sha256-DQPjnCwpFOKN0ObPXPbwy7GK1VsPSj+pcLKjfSPPPRo=";
   };
 
-  vendorHash = "sha256-IXY8w5TLXA3SIT2Jyjqt+pPtZ35zQnG0wY08OB1spDw=";
+  vendorHash = "sha256-gvnBlf0JfdrHSHTF+OQxBHFER5F910mruzCa/prvIYA=";
 
   subPackages = [ "." ];
 
diff --git a/nixpkgs/pkgs/tools/security/gopass/hibp.nix b/nixpkgs/pkgs/tools/security/gopass/hibp.nix
index 590b183194eb..79a72bf891f8 100644
--- a/nixpkgs/pkgs/tools/security/gopass/hibp.nix
+++ b/nixpkgs/pkgs/tools/security/gopass/hibp.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "gopass-hibp";
-  version = "1.15.8";
+  version = "1.15.10";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "gopass-hibp";
     rev = "v${version}";
-    hash = "sha256-dNzvC+ubkZPHx40bVwFT2R7TMrPdeD5oJz0lAd0vtw0=";
+    hash = "sha256-v3FtWBi5H9LiFN/mowufonABr+aV3Z8MWBKiIUoy0NE=";
   };
 
-  vendorHash = "sha256-zaB8xrzqk3moR/ScXdHtqIgA9lZqWFzLWi4NAqbs0XU=";
+  vendorHash = "sha256-c4kk1RrvB+c+8IfbIsLRvG7O3cy+u9l+pDZ52XX1AhI=";
 
   subPackages = [ "." ];
 
diff --git a/nixpkgs/pkgs/tools/security/gopass/jsonapi.nix b/nixpkgs/pkgs/tools/security/gopass/jsonapi.nix
index b00b4bf01479..21345240a647 100644
--- a/nixpkgs/pkgs/tools/security/gopass/jsonapi.nix
+++ b/nixpkgs/pkgs/tools/security/gopass/jsonapi.nix
@@ -8,16 +8,16 @@
 
 buildGoModule rec {
   pname = "gopass-jsonapi";
-  version = "1.15.8";
+  version = "1.15.10";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "gopass-jsonapi";
     rev = "v${version}";
-    hash = "sha256-CL9PcztiFCCy1T7w0v2SzLmwkA6z8aPUx65ye5AJDr4=";
+    hash = "sha256-3E55MNS9QBLeae+Dc7NqbVMGie6NUKMBMGvkMqKeWoE=";
   };
 
-  vendorHash = "sha256-Czlp3MyxRGcIV5uFZzF8t0JrucLzPzxyCUCtjICjPM0=";
+  vendorHash = "sha256-sarNWeBi93oXL9v2EkP/z2+Bd4TyNy+z6576hOCf1/Q=";
 
   subPackages = [ "." ];
 
diff --git a/nixpkgs/pkgs/tools/security/gopass/summon.nix b/nixpkgs/pkgs/tools/security/gopass/summon.nix
index 848cff91a65d..48740f91954c 100644
--- a/nixpkgs/pkgs/tools/security/gopass/summon.nix
+++ b/nixpkgs/pkgs/tools/security/gopass/summon.nix
@@ -7,16 +7,16 @@
 
 buildGoModule rec {
   pname = "gopass-summon-provider";
-  version = "1.15.8";
+  version = "1.15.10";
 
   src = fetchFromGitHub {
     owner = "gopasspw";
     repo = "gopass-summon-provider";
     rev = "v${version}";
-    hash = "sha256-7Oj/1h1468zz6r3+Cv5IaIFbkrs0dPteY0SRsOZ8UXI=";
+    hash = "sha256-S4BPUl7KuRakHr2fvNobChfevFw1UAbAdpFUkwXcmxs=";
   };
 
-  vendorHash = "sha256-IXY8w5TLXA3SIT2Jyjqt+pPtZ35zQnG0wY08OB1spDw=";
+  vendorHash = "sha256-gvnBlf0JfdrHSHTF+OQxBHFER5F910mruzCa/prvIYA=";
 
   subPackages = [ "." ];
 
diff --git a/nixpkgs/pkgs/tools/security/gotestwaf/default.nix b/nixpkgs/pkgs/tools/security/gotestwaf/default.nix
index 1e9a4f38e0e6..8f9d8776687f 100644
--- a/nixpkgs/pkgs/tools/security/gotestwaf/default.nix
+++ b/nixpkgs/pkgs/tools/security/gotestwaf/default.nix
@@ -7,13 +7,13 @@
 
 buildGoModule rec {
   pname = "gotestwaf";
-  version = "0.4.7";
+  version = "0.4.8";
 
   src = fetchFromGitHub {
     owner = "wallarm";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-Ypcn6rsimID5B+xrdetxQTopg+xvkNILJFGKf2dbO8k=";
+    hash = "sha256-5cvyKCzisfuoMPuQpiRnIBCTw2yMdA1yavKNS9OwW58=";
   };
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/tools/security/govulncheck/default.nix b/nixpkgs/pkgs/tools/security/govulncheck/default.nix
index 61249d354df1..1b7ee6cf015d 100644
--- a/nixpkgs/pkgs/tools/security/govulncheck/default.nix
+++ b/nixpkgs/pkgs/tools/security/govulncheck/default.nix
@@ -1,6 +1,7 @@
 { lib
 , buildGoModule
 , fetchFromGitHub
+, substituteAll
 }:
 
 buildGoModule rec {
@@ -14,6 +15,14 @@ buildGoModule rec {
     hash = "sha256-cewQ03dK/k3mXevE09M01Yox/3ZWP6IrG0H4QsZMzy8=";
   };
 
+  patches = [
+    # patch in version information
+    (substituteAll {
+      src = ./version.patch;
+      inherit version;
+    })
+  ];
+
   vendorHash = "sha256-r9XshbgVA5rppJF46SFYPad344ZHMLWTHTnL6vbIFH8=";
 
   subPackages = [
diff --git a/nixpkgs/pkgs/tools/security/govulncheck/version.patch b/nixpkgs/pkgs/tools/security/govulncheck/version.patch
new file mode 100644
index 000000000000..2a79276fa15a
--- /dev/null
+++ b/nixpkgs/pkgs/tools/security/govulncheck/version.patch
@@ -0,0 +1,15 @@
+diff --git a/internal/scan/run.go b/internal/scan/run.go
+index fa7fe37..216ca43 100644
+--- a/internal/scan/run.go
++++ b/internal/scan/run.go
+@@ -99,8 +99,8 @@ func scannerVersion(cfg *config, bi *debug.BuildInfo) {
+ 	if bi.Path != "" {
+ 		cfg.ScannerName = path.Base(bi.Path)
+ 	}
+-	if bi.Main.Version != "" && bi.Main.Version != "(devel)" {
+-		cfg.ScannerVersion = bi.Main.Version
++	if true {
++		cfg.ScannerVersion = "@version@"
+ 		return
+ 	}
+ 
diff --git a/nixpkgs/pkgs/tools/security/hash-identifier/default.nix b/nixpkgs/pkgs/tools/security/hash-identifier/default.nix
index 5e9b49dd73db..2f54d5e6904f 100644
--- a/nixpkgs/pkgs/tools/security/hash-identifier/default.nix
+++ b/nixpkgs/pkgs/tools/security/hash-identifier/default.nix
@@ -23,5 +23,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ ethancedwards8 ];
+    mainProgram = "hash-identifier";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/hashcat/default.nix b/nixpkgs/pkgs/tools/security/hashcat/default.nix
index 5a2304b5fd0b..2e8370be85fe 100644
--- a/nixpkgs/pkgs/tools/security/hashcat/default.nix
+++ b/nixpkgs/pkgs/tools/security/hashcat/default.nix
@@ -21,8 +21,14 @@ stdenv.mkDerivation rec {
   };
 
   postPatch = ''
+     # Select libstdc++ or libc++ based on stdenv
+     # MACOSX_DEPLOYMENT_TARGET is defined by the enviroment
      # Remove hardcoded paths on darwin
     substituteInPlace src/Makefile \
+  '' + lib.optionalString (stdenv.cc.libcxx != null) ''
+      --replace "-lstdc++" "-lc++ -l${stdenv.cc.libcxx.cxxabi.libName}" \
+  '' + ''
+      --replace "export MACOSX_DEPLOYMENT_TARGET" "#export MACOSX_DEPLOYMENT_TARGET" \
       --replace "/usr/bin/ar" "ar" \
       --replace "/usr/bin/sed" "sed" \
       --replace '-i ""' '-i'
diff --git a/nixpkgs/pkgs/tools/security/hcxdumptool/default.nix b/nixpkgs/pkgs/tools/security/hcxdumptool/default.nix
index 3e51d300e9a3..c718ec0b5a0f 100644
--- a/nixpkgs/pkgs/tools/security/hcxdumptool/default.nix
+++ b/nixpkgs/pkgs/tools/security/hcxdumptool/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ danielfullmer ];
+    mainProgram = "hcxdumptool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/himitsu/default.nix b/nixpkgs/pkgs/tools/security/himitsu/default.nix
index a29b65ae3b17..2dc1ba5ba9bb 100644
--- a/nixpkgs/pkgs/tools/security/himitsu/default.nix
+++ b/nixpkgs/pkgs/tools/security/himitsu/default.nix
@@ -7,14 +7,14 @@
 
 stdenv.mkDerivation rec {
   pname = "himitsu";
-  version = "0.3";
+  version = "0.4";
 
   src = fetchFromSourcehut {
     name = pname + "-src";
     owner = "~sircmpwn";
     repo = pname;
     rev = version;
-    hash = "sha256-HoAntg9aQhMmff3T3/xnor7Sf3yX9qBbZlpVfyac5o8=";
+    hash = "sha256-Y2QSzYfG1F9Z8MjeVvQ3+Snff+nqSjeK6VNzRaRDLYo=";
   };
 
   nativeBuildInputs = [
diff --git a/nixpkgs/pkgs/tools/security/iaito/default.nix b/nixpkgs/pkgs/tools/security/iaito/default.nix
index 641f7edf2406..5812b1e6cfea 100644
--- a/nixpkgs/pkgs/tools/security/iaito/default.nix
+++ b/nixpkgs/pkgs/tools/security/iaito/default.nix
@@ -76,7 +76,7 @@ stdenv.mkDerivation rec {
     install -m755 -Dt $out/bin iaito
     install -m644 -Dt $out/share/metainfo ../org.radare.iaito.appdata.xml
     install -m644 -Dt $out/share/applications ../org.radare.iaito.desktop
-    install -m644 -Dt $out/share/pixmaps ../img/iaito-o.svg
+    install -m644 -Dt $out/share/pixmaps ../img/org.radare.iaito.svg
 
     pushd ../../../${translations_src.name}
     make install -j$NIX_BUILD_CORES PREFIX=$out
diff --git a/nixpkgs/pkgs/tools/security/ic-keysmith/default.nix b/nixpkgs/pkgs/tools/security/ic-keysmith/default.nix
index c3fd58933a3b..30ca2a467576 100644
--- a/nixpkgs/pkgs/tools/security/ic-keysmith/default.nix
+++ b/nixpkgs/pkgs/tools/security/ic-keysmith/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/dfinity/keysmith";
     license = licenses.mit;
     maintainers = with maintainers; [ imalison ];
+    mainProgram = "keysmith";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/jwt-hack/default.nix b/nixpkgs/pkgs/tools/security/jwt-hack/default.nix
index 351414b25eee..4922f67fe576 100644
--- a/nixpkgs/pkgs/tools/security/jwt-hack/default.nix
+++ b/nixpkgs/pkgs/tools/security/jwt-hack/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/hahwul/jwt-hack";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "jwt-hack";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/kepler/default.nix b/nixpkgs/pkgs/tools/security/kepler/default.nix
index f4a229030f1d..e4d2fc914cf9 100644
--- a/nixpkgs/pkgs/tools/security/kepler/default.nix
+++ b/nixpkgs/pkgs/tools/security/kepler/default.nix
@@ -43,5 +43,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/Exein-io/kepler";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "kepler";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/kube-hunter/default.nix b/nixpkgs/pkgs/tools/security/kube-hunter/default.nix
index 05ee083f4d77..f80f5c70c98c 100644
--- a/nixpkgs/pkgs/tools/security/kube-hunter/default.nix
+++ b/nixpkgs/pkgs/tools/security/kube-hunter/default.nix
@@ -59,5 +59,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/aquasecurity/kube-hunter";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "kube-hunter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/kubeaudit/default.nix b/nixpkgs/pkgs/tools/security/kubeaudit/default.nix
index 61488fdb513b..135d29c27223 100644
--- a/nixpkgs/pkgs/tools/security/kubeaudit/default.nix
+++ b/nixpkgs/pkgs/tools/security/kubeaudit/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "kubeaudit";
-  version = "0.22.0";
+  version = "0.22.1";
 
   src = fetchFromGitHub {
     owner = "Shopify";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-e6No8Md/KZUFNtPJOrSdv1GlGmxX7+tmWNjQGFdtJpc=";
+    hash = "sha256-ebqOjnr79S1utXaTKa9Jop9GvQsoW/IBMmIeOsGuvuE=";
   };
 
   vendorHash = "sha256-IxrAJaltg7vo3SQRC7OokSD5SM8xiX7iG8ZxKYEe9/E=";
diff --git a/nixpkgs/pkgs/tools/security/kubesec/default.nix b/nixpkgs/pkgs/tools/security/kubesec/default.nix
index a2b7078896ac..4fa9337e1cb5 100644
--- a/nixpkgs/pkgs/tools/security/kubesec/default.nix
+++ b/nixpkgs/pkgs/tools/security/kubesec/default.nix
@@ -6,15 +6,15 @@
 
 buildGoModule rec {
   pname = "kubesec";
-  version = "2.13.0";
+  version = "2.14.0";
 
   src = fetchFromGitHub {
     owner = "controlplaneio";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-9WhY1mJawMkSgqM50DO0y9bxGYW89N14gLirO5zVuzc=";
+    sha256 = "sha256-RNLvmoHna5EO0/p24opBagyWzzNbmFkWGzkUXirdWe0=";
   };
-  vendorHash = "sha256-xcIFveR0MwpYGYhHKXwQPHF08620yilEtb+BdKZWrdw=";
+  vendorHash = "sha256-+Y5k9PRxnBR3lqi4T+3DH4Pw+cyHtt9+9OX4aw0CVl0=";
 
   nativeBuildInputs = [ installShellFiles ];
 
diff --git a/nixpkgs/pkgs/tools/security/kubestroyer/default.nix b/nixpkgs/pkgs/tools/security/kubestroyer/default.nix
index bbe0d9cad7a3..8e0922e4dfb0 100644
--- a/nixpkgs/pkgs/tools/security/kubestroyer/default.nix
+++ b/nixpkgs/pkgs/tools/security/kubestroyer/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     changelog = "https://github.com/Rolix44/Kubestroyer/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "kubestroyer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/ldapnomnom/default.nix b/nixpkgs/pkgs/tools/security/ldapnomnom/default.nix
index 132ecf70591a..65e874d06691 100644
--- a/nixpkgs/pkgs/tools/security/ldapnomnom/default.nix
+++ b/nixpkgs/pkgs/tools/security/ldapnomnom/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     changelog = "https://github.com/lkarlslund/ldapnomnom/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "ldapnomnom";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/ldeep/default.nix b/nixpkgs/pkgs/tools/security/ldeep/default.nix
index d0bd3bb415ba..8a3b38de9276 100644
--- a/nixpkgs/pkgs/tools/security/ldeep/default.nix
+++ b/nixpkgs/pkgs/tools/security/ldeep/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "ldeep";
-  version = "1.0.48";
+  version = "1.0.49";
   format = "setuptools";
 
   src = fetchFromGitHub {
     owner = "franc-pentest";
     repo = "ldeep";
     rev = "refs/tags/${version}";
-    hash = "sha256-E/gqt8+eD/syOHczq9k07YIq39W84vC5VFScMxxj4uI=";
+    hash = "sha256-R94N9ZvgumxhSf3QBSwh0wHUKuLAuyTDTzcof6JRSkE=";
   };
 
   nativeBuildInputs = with python3.pkgs; [
diff --git a/nixpkgs/pkgs/tools/security/lethe/default.nix b/nixpkgs/pkgs/tools/security/lethe/default.nix
index 0e63b0db2a53..eb3474293814 100644
--- a/nixpkgs/pkgs/tools/security/lethe/default.nix
+++ b/nixpkgs/pkgs/tools/security/lethe/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/kostassoid/lethe";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "lethe";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/libmodsecurity/default.nix b/nixpkgs/pkgs/tools/security/libmodsecurity/default.nix
index e1d78b79753e..c44733034b5a 100644
--- a/nixpkgs/pkgs/tools/security/libmodsecurity/default.nix
+++ b/nixpkgs/pkgs/tools/security/libmodsecurity/default.nix
@@ -76,5 +76,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     platforms = platforms.all;
     maintainers = with maintainers; [ izorkin ];
+    mainProgram = "modsec-rules-check";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/lmp/default.nix b/nixpkgs/pkgs/tools/security/lmp/default.nix
index 2b945478f3da..021b9d33d35a 100644
--- a/nixpkgs/pkgs/tools/security/lmp/default.nix
+++ b/nixpkgs/pkgs/tools/security/lmp/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/0xInfection/LogMePwn";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "lmp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/log4jcheck/default.nix b/nixpkgs/pkgs/tools/security/log4jcheck/default.nix
index 291bf1ff96b4..1a7608fa73de 100644
--- a/nixpkgs/pkgs/tools/security/log4jcheck/default.nix
+++ b/nixpkgs/pkgs/tools/security/log4jcheck/default.nix
@@ -30,5 +30,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/NorthwaveSecurity/log4jcheck";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "log4jcheck";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/log4shell-detector/default.nix b/nixpkgs/pkgs/tools/security/log4shell-detector/default.nix
index 76fc65728438..c29a32bea396 100644
--- a/nixpkgs/pkgs/tools/security/log4shell-detector/default.nix
+++ b/nixpkgs/pkgs/tools/security/log4shell-detector/default.nix
@@ -36,5 +36,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/Neo23x0/log4shell-detector";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "log4shell-detector";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/logmap/default.nix b/nixpkgs/pkgs/tools/security/logmap/default.nix
index d6d4cb0f1a54..50f14bc33aff 100644
--- a/nixpkgs/pkgs/tools/security/logmap/default.nix
+++ b/nixpkgs/pkgs/tools/security/logmap/default.nix
@@ -30,5 +30,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/zhzyker/logmap";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "logmap";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/mantra/default.nix b/nixpkgs/pkgs/tools/security/mantra/default.nix
index 7453926a8bd3..348c0afc3251 100644
--- a/nixpkgs/pkgs/tools/security/mantra/default.nix
+++ b/nixpkgs/pkgs/tools/security/mantra/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     changelog = "https://github.com/MrEmpy/Mantra/releases/tag/v.${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "mantra";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/metasploit/Gemfile b/nixpkgs/pkgs/tools/security/metasploit/Gemfile
index 539e6b8bc8d9..e7de6a9a982e 100644
--- a/nixpkgs/pkgs/tools/security/metasploit/Gemfile
+++ b/nixpkgs/pkgs/tools/security/metasploit/Gemfile
@@ -1,4 +1,4 @@
 # frozen_string_literal: true
 source "https://rubygems.org"
 
-gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.3.43"
+gem "metasploit-framework", git: "https://github.com/rapid7/metasploit-framework", ref: "refs/tags/6.3.44"
diff --git a/nixpkgs/pkgs/tools/security/metasploit/Gemfile.lock b/nixpkgs/pkgs/tools/security/metasploit/Gemfile.lock
index adc032baf213..9a129de0728c 100644
--- a/nixpkgs/pkgs/tools/security/metasploit/Gemfile.lock
+++ b/nixpkgs/pkgs/tools/security/metasploit/Gemfile.lock
@@ -1,9 +1,9 @@
 GIT
   remote: https://github.com/rapid7/metasploit-framework
-  revision: 58dcabe21524d8b2c4d05618ca8509dc42cc6515
-  ref: refs/tags/6.3.43
+  revision: 54a9eee7f85d369feef55d6a340340ad965f80a0
+  ref: refs/tags/6.3.44
   specs:
-    metasploit-framework (6.3.43)
+    metasploit-framework (6.3.44)
       actionpack (~> 7.0.0)
       activerecord (~> 7.0.0)
       activesupport (~> 7.0.0)
@@ -462,4 +462,4 @@ DEPENDENCIES
   metasploit-framework!
 
 BUNDLED WITH
-   2.4.20
+   2.4.22
diff --git a/nixpkgs/pkgs/tools/security/metasploit/default.nix b/nixpkgs/pkgs/tools/security/metasploit/default.nix
index 6f88b96cd6ad..6f9af0634e97 100644
--- a/nixpkgs/pkgs/tools/security/metasploit/default.nix
+++ b/nixpkgs/pkgs/tools/security/metasploit/default.nix
@@ -15,17 +15,22 @@ let
   };
 in stdenv.mkDerivation rec {
   pname = "metasploit-framework";
-  version = "6.3.43";
+  version = "6.3.44";
 
   src = fetchFromGitHub {
     owner = "rapid7";
     repo = "metasploit-framework";
-    rev = version;
-    sha256 = "sha256-IWdSxXhJFGbNTo9xqEjBJNEWB6imzdwzgnXoUbfao/g=";
+    rev = "refs/tags/${version}";
+    hash = "sha256-LBmyFE617G2ryEAp5fig3G2T/goa9NXUggu0XH4X1xs=";
   };
 
-  nativeBuildInputs = [ makeWrapper ];
-  buildInputs = [ (python3.withPackages (ps: [ ps.requests ])) ];
+  nativeBuildInputs = [
+    makeWrapper
+  ];
+
+  buildInputs = [
+    (python3.withPackages (ps: [ ps.requests ]))
+  ];
 
   dontPatchELF = true; # stay away from exploit executables
 
diff --git a/nixpkgs/pkgs/tools/security/metasploit/gemset.nix b/nixpkgs/pkgs/tools/security/metasploit/gemset.nix
index cf24944c4030..5f3386d4f2eb 100644
--- a/nixpkgs/pkgs/tools/security/metasploit/gemset.nix
+++ b/nixpkgs/pkgs/tools/security/metasploit/gemset.nix
@@ -654,12 +654,12 @@
     platforms = [];
     source = {
       fetchSubmodules = false;
-      rev = "58dcabe21524d8b2c4d05618ca8509dc42cc6515";
-      sha256 = "1y53vavm3s3mh8rxrkd6m03idl94q54ahwcg9v6nc529g32m4rr1";
+      rev = "54a9eee7f85d369feef55d6a340340ad965f80a0";
+      sha256 = "06yp2xz5rd0bhbadbx0s1bz96vfwl3wfaaa0r2mnvv5m9qab469c";
       type = "git";
       url = "https://github.com/rapid7/metasploit-framework";
     };
-    version = "6.3.43";
+    version = "6.3.44";
   };
   metasploit-model = {
     groups = ["default"];
diff --git a/nixpkgs/pkgs/tools/security/minisign/default.nix b/nixpkgs/pkgs/tools/security/minisign/default.nix
index 2ab1babcafc7..aaa280f40e90 100644
--- a/nixpkgs/pkgs/tools/security/minisign/default.nix
+++ b/nixpkgs/pkgs/tools/security/minisign/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ joachifm ];
     platforms = platforms.unix;
+    mainProgram = "minisign";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/mitmproxy2swagger/default.nix b/nixpkgs/pkgs/tools/security/mitmproxy2swagger/default.nix
index 053824c3bd3b..2abcf2065ced 100644
--- a/nixpkgs/pkgs/tools/security/mitmproxy2swagger/default.nix
+++ b/nixpkgs/pkgs/tools/security/mitmproxy2swagger/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "mitmproxy2swagger";
-  version = "0.10.1";
+  version = "0.11.0";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "alufers";
     repo = pname;
     rev = "refs/tags/${version}";
-    hash = "sha256-vWeMAtNyxYpuVlxav0ibTMoTKwLCNRFJpFKG3bIatTQ=";
+    hash = "sha256-NwU3GtnWL90gSCbPbGnkbLX/o77NZJ4t4xME8dhWEbA=";
   };
 
   nativeBuildInputs = with python3.pkgs; [
diff --git a/nixpkgs/pkgs/tools/security/mongoaudit/default.nix b/nixpkgs/pkgs/tools/security/mongoaudit/default.nix
index 3ba19256ec34..2f980be5163b 100644
--- a/nixpkgs/pkgs/tools/security/mongoaudit/default.nix
+++ b/nixpkgs/pkgs/tools/security/mongoaudit/default.nix
@@ -35,5 +35,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/stampery/mongoaudit";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "mongoaudit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/naabu/default.nix b/nixpkgs/pkgs/tools/security/naabu/default.nix
index 9715e756a96e..8569b957db2d 100644
--- a/nixpkgs/pkgs/tools/security/naabu/default.nix
+++ b/nixpkgs/pkgs/tools/security/naabu/default.nix
@@ -6,16 +6,16 @@
 
 buildGoModule rec {
   pname = "naabu";
-  version = "2.1.9";
+  version = "2.2.0";
 
   src = fetchFromGitHub {
     owner = "projectdiscovery";
     repo = "naabu";
     rev = "refs/tags/v${version}";
-    hash = "sha256-MxIAWVcMiLLmddvyjPNprJWseOw+9ZEYV+LSMeH2Igo=";
+    hash = "sha256-he9SJ4lCFNV3DvwqYR7lcWPIPwLIpJDWWnnei069k1k=";
   };
 
-  vendorHash = "sha256-4lTik5POzK4aE3c1gGi3NuefEdbMdTLvJIkvTRSPraI=";
+  vendorHash = "sha256-fVqPRDycT9ImBkHakNrby0uXPWrXXatTk8QQSi2OnV0=";
 
   buildInputs = [
     libpcap
diff --git a/nixpkgs/pkgs/tools/security/nitrokey-app/default.nix b/nixpkgs/pkgs/tools/security/nitrokey-app/default.nix
index d48047a7b1c6..8e654900e172 100644
--- a/nixpkgs/pkgs/tools/security/nitrokey-app/default.nix
+++ b/nixpkgs/pkgs/tools/security/nitrokey-app/default.nix
@@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
   src = fetchFromGitHub {
     owner = "Nitrokey";
     repo = "nitrokey-app";
-    rev = "v${version}";
+    rev = "refs/tags/v${version}";
     hash = "sha256-c6EC5uuMna07xVHDRFq0UDwuSeopZTmZGZ9ZD5zaq8Y=";
   };
 
@@ -38,14 +38,15 @@ stdenv.mkDerivation rec {
   ];
 
   meta = with lib; {
-    description      = "Provides extra functionality for the Nitrokey Pro and Storage";
-    longDescription  = ''
-       The nitrokey-app provides a QT system tray widget with which you can
-       access the extra functionality of a Nitrokey Storage or Nitrokey Pro.
-       See https://www.nitrokey.com/ for more information.
+    description = "Provides extra functionality for the Nitrokey Pro and Storage";
+    longDescription = ''
+      The nitrokey-app provides a QT system tray widget with which you can
+      access the extra functionality of a Nitrokey Storage or Nitrokey Pro.
+      See https://www.nitrokey.com/ for more information.
     '';
-    homepage         = "https://github.com/Nitrokey/nitrokey-app";
-    license          = licenses.gpl3;
-    maintainers      = with maintainers; [ kaiha panicgh ];
+    homepage = "https://github.com/Nitrokey/nitrokey-app";
+    changelog = "https://github.com/Nitrokey/nitrokey-app/releases/tag/v${version}";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ kaiha panicgh ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/nsjail/default.nix b/nixpkgs/pkgs/tools/security/nsjail/default.nix
index 187674596e1f..a92aa5f21041 100644
--- a/nixpkgs/pkgs/tools/security/nsjail/default.nix
+++ b/nixpkgs/pkgs/tools/security/nsjail/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license     = licenses.asl20;
     maintainers = with maintainers; [ arturcygan bosu c0bw3b ];
     platforms   = platforms.linux;
+    mainProgram = "nsjail";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/nuclei/default.nix b/nixpkgs/pkgs/tools/security/nuclei/default.nix
index ca34c7af28e5..013b18a36d2b 100644
--- a/nixpkgs/pkgs/tools/security/nuclei/default.nix
+++ b/nixpkgs/pkgs/tools/security/nuclei/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "nuclei";
-  version = "3.0.4";
+  version = "3.1.0";
 
   src = fetchFromGitHub {
     owner = "projectdiscovery";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-S8YU25JA1yBdbDQpy9kxl3I/4PkMN9BrueCiXrZXAEI=";
+    hash = "sha256-Bx/ryoftrhDExugtvviRU4f4pIlerV2ehJWAJUGizvs=";
   };
 
-  vendorHash = "sha256-4i6jLRe9yDxC6FPOpFrwaLWjg16HR9PqkHNamlwT3PA=";
+  vendorHash = "sha256-r5m9yvdy7Bnh9QvcrAwwO6od2C7JCcxwFx4p+W8qlMY=";
 
   subPackages = [
     "cmd/nuclei/"
diff --git a/nixpkgs/pkgs/tools/security/oath-toolkit/default.nix b/nixpkgs/pkgs/tools/security/oath-toolkit/default.nix
index fe8367ea57e4..eda2affaa262 100644
--- a/nixpkgs/pkgs/tools/security/oath-toolkit/default.nix
+++ b/nixpkgs/pkgs/tools/security/oath-toolkit/default.nix
@@ -26,5 +26,6 @@ in stdenv.mkDerivation rec {
     homepage = "https://www.nongnu.org/oath-toolkit/";
     maintainers = with maintainers; [ schnusch ];
     platforms = with platforms; linux ++ darwin;
+    mainProgram = "oathtool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/onesixtyone/default.nix b/nixpkgs/pkgs/tools/security/onesixtyone/default.nix
index 374d1322246b..1ff1b0266eaf 100644
--- a/nixpkgs/pkgs/tools/security/onesixtyone/default.nix
+++ b/nixpkgs/pkgs/tools/security/onesixtyone/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
     maintainers = [ maintainers.fishi0x01 ];
+    mainProgram = "onesixtyone";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/security/ospd-openvas/default.nix b/nixpkgs/pkgs/tools/security/ospd-openvas/default.nix
index 68c6a7dba953..0e4b4b16e752 100644
--- a/nixpkgs/pkgs/tools/security/ospd-openvas/default.nix
+++ b/nixpkgs/pkgs/tools/security/ospd-openvas/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "ospd-openvas";
-  version = "22.6.1";
+  version = "22.6.2";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "greenbone";
     repo = "ospd-openvas";
     rev = "refs/tags/v${version}";
-    hash = "sha256-Qm6TTS9yLqQHXsz19yJR3Ccyc+syxkrTJ7upSTXdXSE=";
+    hash = "sha256-SO2+PpxjyP+Yba0X81EgNCOAu7ntlG7zOeWA+7XdRIA=";
   };
 
   pythonRelaxDeps = [
diff --git a/nixpkgs/pkgs/tools/security/parsero/default.nix b/nixpkgs/pkgs/tools/security/parsero/default.nix
index a8cd9c39eb13..2c3323f25e52 100644
--- a/nixpkgs/pkgs/tools/security/parsero/default.nix
+++ b/nixpkgs/pkgs/tools/security/parsero/default.nix
@@ -24,5 +24,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/behindthefirewalls/Parsero";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ emilytrau fab ];
+    mainProgram = "parsero";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/pass/extensions/default.nix b/nixpkgs/pkgs/tools/security/pass/extensions/default.nix
index 96c252156de8..f7ac0a3d16ba 100644
--- a/nixpkgs/pkgs/tools/security/pass/extensions/default.nix
+++ b/nixpkgs/pkgs/tools/security/pass/extensions/default.nix
@@ -12,4 +12,5 @@ with pkgs;
   pass-tomb = callPackage ./tomb.nix {};
   pass-update = callPackage ./update.nix {};
   pass-genphrase = callPackage ./genphrase.nix {};
+  pass-file = callPackage ./file.nix {};
 }
diff --git a/nixpkgs/pkgs/tools/security/pass/extensions/file.nix b/nixpkgs/pkgs/tools/security/pass/extensions/file.nix
new file mode 100644
index 000000000000..43321d80855c
--- /dev/null
+++ b/nixpkgs/pkgs/tools/security/pass/extensions/file.nix
@@ -0,0 +1,23 @@
+{ lib, stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+  pname = "pass-file";
+  version = "1.0.0";
+
+  src = fetchFromGitHub {
+    owner = "dvogt23";
+    repo = pname;
+    rev = version;
+    hash = "sha256-18KvmcfLwelyk9RV/IMaj6O/nkQEQz84eUEB/mRaKE4=";
+  };
+
+  installFlags = [ "PREFIX=$(out)" ];
+
+  meta = with lib; {
+    description = "A pass extension that allows to add files to password-store.";
+    homepage = "https://github.com/dvogt23/pass-file";
+    license = licenses.gpl3Plus;
+    maintainers = with maintainers; [ taranarmo ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/security/pass/wofi-pass.nix b/nixpkgs/pkgs/tools/security/pass/wofi-pass.nix
new file mode 100644
index 000000000000..f205d8881e51
--- /dev/null
+++ b/nixpkgs/pkgs/tools/security/pass/wofi-pass.nix
@@ -0,0 +1,65 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, pass-wayland
+, coreutils
+, gnugrep
+, libnotify
+, pwgen
+, findutils
+, makeWrapper
+, wl-clipboard
+, wtype
+, wofi
+, extensions ? exts: []
+}:
+
+let
+  wrapperPath = lib.makeBinPath [
+    coreutils
+    findutils
+    gnugrep
+    libnotify
+    pwgen
+    wofi
+    wl-clipboard
+    wtype
+    (pass-wayland.withExtensions extensions)
+  ];
+in
+stdenv.mkDerivation rec {
+  pname = "wofi-pass";
+  version = "23.1.2";
+
+  src = fetchFromGitHub {
+    owner = "schmidtandreas";
+    repo = "wofi-pass";
+    rev = "v${version}";
+    sha256 = "sha256-Z1a+nfnL6NXhufpCU7VIkwuifoS88Pf9qI8GCuP/Zqc=";
+  };
+
+  nativeBuildInputs = [ makeWrapper ];
+
+  dontBuild = true;
+
+  installPhase = ''
+    install -Dm755 wofi-pass -t $out/bin
+    install -Dm755 wofi-pass.conf -t $out/share/doc/wofi-pass/wofi-pass.conf
+  '';
+
+  fixupPhase = ''
+    patchShebangs $out/bin
+
+    wrapProgram $out/bin/wofi-pass \
+      --prefix PATH : "${wrapperPath}"
+  '';
+
+  meta = {
+    description = "A script to make wofi work with password-store";
+    homepage = "https://github.com/schmidtandreas/wofi-pass";
+    maintainers = with lib.maintainers; [ akechishiro ];
+    license = lib.licenses.gpl2Plus;
+    platforms = with lib.platforms; linux;
+    mainProgram = "wofi-pass";
+  };
+}
diff --git a/nixpkgs/pkgs/tools/security/prs/default.nix b/nixpkgs/pkgs/tools/security/prs/default.nix
index 33df7e7948ce..cfab2229efee 100644
--- a/nixpkgs/pkgs/tools/security/prs/default.nix
+++ b/nixpkgs/pkgs/tools/security/prs/default.nix
@@ -59,5 +59,6 @@ rustPlatform.buildRustPackage rec {
       gpl3Only  # everything else
     ];
     maintainers = with maintainers; [ dotlambda ];
+    mainProgram = "prs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/routersploit/default.nix b/nixpkgs/pkgs/tools/security/routersploit/default.nix
index e147e8feac0b..3f656e8e4578 100644
--- a/nixpkgs/pkgs/tools/security/routersploit/default.nix
+++ b/nixpkgs/pkgs/tools/security/routersploit/default.nix
@@ -52,5 +52,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/threat9/routersploit";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "rsf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/rucredstash/default.nix b/nixpkgs/pkgs/tools/security/rucredstash/default.nix
index 3a6fcfbf5325..972695ad565e 100644
--- a/nixpkgs/pkgs/tools/security/rucredstash/default.nix
+++ b/nixpkgs/pkgs/tools/security/rucredstash/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/psibi/rucredstash";
     license = licenses.mit;
     maintainers = with maintainers; [ psibi ];
+    mainProgram = "rucredstash";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/sequoia-chameleon-gnupg/default.nix b/nixpkgs/pkgs/tools/security/sequoia-chameleon-gnupg/default.nix
index 95d0426729e0..96d15250e163 100644
--- a/nixpkgs/pkgs/tools/security/sequoia-chameleon-gnupg/default.nix
+++ b/nixpkgs/pkgs/tools/security/sequoia-chameleon-gnupg/default.nix
@@ -11,16 +11,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "sequoia-chameleon-gnupg";
-  version = "0.3.2";
+  version = "unstable-2023-11-22";
 
   src = fetchFromGitLab {
     owner = "sequoia-pgp";
     repo = pname;
-    rev = "v${version}";
-    hash = "sha256-Qe9KKZh0Zim/BdPn2aMxkH6FBOBB6zijkp5ft9YfzzU=";
+    rev = "fd9df5a4e1ec3c3ca986a1a25bacf13f024c934a";
+    hash = "sha256-OxWlkOQxuuCFyLMx+ucervyqIduUpyJ9lCGFQlfEUFc=";
   };
 
-  cargoHash = "sha256-KuVSpbAfLVIy5YJ/8qb+Rfw1TgZkWfR+Ai9gDcf4EQ4=";
+  cargoHash = "sha256-4+PA1kYJgn8yDAYr88DQYg6sdgSN3MWzKAUATW3VO6I=";
 
   nativeBuildInputs = [
     rustPlatform.bindgenHook
@@ -33,6 +33,7 @@ rustPlatform.buildRustPackage rec {
     sqlite
   ] ++ lib.optionals stdenv.isDarwin [
     darwin.apple_sdk.frameworks.Security
+    darwin.apple_sdk.frameworks.SystemConfiguration
   ];
 
   # gpgconf: error creating socket directory
diff --git a/nixpkgs/pkgs/tools/security/shellz/default.nix b/nixpkgs/pkgs/tools/security/shellz/default.nix
index f1b226c32137..e7d44bd21926 100644
--- a/nixpkgs/pkgs/tools/security/shellz/default.nix
+++ b/nixpkgs/pkgs/tools/security/shellz/default.nix
@@ -26,5 +26,6 @@ buildGoModule rec {
     homepage = "https://github.com/evilsocket/shellz";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "shellz";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/sigma-cli/default.nix b/nixpkgs/pkgs/tools/security/sigma-cli/default.nix
index 30954f4c171b..d0dc599edd8c 100644
--- a/nixpkgs/pkgs/tools/security/sigma-cli/default.nix
+++ b/nixpkgs/pkgs/tools/security/sigma-cli/default.nix
@@ -6,7 +6,7 @@
 python3.pkgs.buildPythonApplication rec {
   pname = "sigma-cli";
   version = "0.7.10";
-  format = "pyproject";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "SigmaHQ";
@@ -55,6 +55,10 @@ python3.pkgs.buildPythonApplication rec {
     "test_plugin_show_identifier"
     "test_plugin_show_nonexisting"
     "test_plugin_show_uuid"
+    # Tests compare STDOUT results
+    "test_check_valid"
+    "test_check_stdin"
+    "test_check_exclude"
   ];
 
   pythonImportsCheck = [
diff --git a/nixpkgs/pkgs/tools/security/silenthound/default.nix b/nixpkgs/pkgs/tools/security/silenthound/default.nix
index 92b651bc9a83..f2915c447675 100644
--- a/nixpkgs/pkgs/tools/security/silenthound/default.nix
+++ b/nixpkgs/pkgs/tools/security/silenthound/default.nix
@@ -39,5 +39,6 @@ python3.pkgs.buildPythonApplication rec {
     # Unknown license, https://github.com/layer8secure/SilentHound/issues/1
     license = licenses.unfree;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "silenthound";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/slowhttptest/default.nix b/nixpkgs/pkgs/tools/security/slowhttptest/default.nix
index b4c2b0efeec3..94e60a6a0084 100644
--- a/nixpkgs/pkgs/tools/security/slowhttptest/default.nix
+++ b/nixpkgs/pkgs/tools/security/slowhttptest/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/shekyan/slowhttptest";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "slowhttptest";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/slsa-verifier/default.nix b/nixpkgs/pkgs/tools/security/slsa-verifier/default.nix
index 6e4d70787d84..d02b574b1563 100644
--- a/nixpkgs/pkgs/tools/security/slsa-verifier/default.nix
+++ b/nixpkgs/pkgs/tools/security/slsa-verifier/default.nix
@@ -5,16 +5,16 @@
 
 buildGoModule rec {
   pname = "slsa-verifier";
-  version = "2.4.0";
+  version = "2.4.1";
 
   src = fetchFromGitHub {
     owner = "slsa-framework";
     repo = "slsa-verifier";
     rev = "v${version}";
-    hash = "sha256-2/4ExhMWXIKpkYQIodEsajA7q9zb4tOT9QUGunAutl0=";
+    hash = "sha256-swyBDJTv6Sp65Q46QGm/N/kIfGfln+vBTYXVOI9CAOE=";
   };
 
-  vendorHash = "sha256-TwPbxoNu9PYAFEbUT5htyUY1RbkGow712ARJW6y496E=";
+  vendorHash = "sha256-rCGj2o59US2t/ckqXirEDgYn9dGvVSzMVcFEZosasBc=";
 
   CGO_ENABLED = 0;
   GO111MODULE = "on";
diff --git a/nixpkgs/pkgs/tools/security/smbscan/default.nix b/nixpkgs/pkgs/tools/security/smbscan/default.nix
index f807704005e1..ea2a99b64bb0 100644
--- a/nixpkgs/pkgs/tools/security/smbscan/default.nix
+++ b/nixpkgs/pkgs/tools/security/smbscan/default.nix
@@ -37,5 +37,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/jeffhacks/smbscan";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "smbscan";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/spire/default.nix b/nixpkgs/pkgs/tools/security/spire/default.nix
index d91172ec26e6..4533ad33da68 100644
--- a/nixpkgs/pkgs/tools/security/spire/default.nix
+++ b/nixpkgs/pkgs/tools/security/spire/default.nix
@@ -2,7 +2,7 @@
 
 buildGoModule rec {
   pname = "spire";
-  version = "1.8.2";
+  version = "1.8.3";
 
   outputs = [ "out" "agent" "server" ];
 
@@ -10,10 +10,10 @@ buildGoModule rec {
     owner = "spiffe";
     repo = pname;
     rev = "v${version}";
-    sha256 = "sha256-+xHsNp/Zk+0D1iwGJNjgCvSjepGQEJXWnkWHa6Et9jA=";
+    sha256 = "sha256-xfSOmUfBoIQSI9u2YD3CxBIOiT7QxMi3fJZUVeZo39o=";
   };
 
-  vendorHash = "sha256-mh3LIwUKIyH75AvWX+YgGi5VAU/EzZw5OSpAFIG6ueo=";
+  vendorHash = "sha256-9j/EZntVW40QHYJi9NvAKX/4uGxLolk75GNennQ6ymY=";
 
   subPackages = [ "cmd/spire-agent" "cmd/spire-server" ];
 
diff --git a/nixpkgs/pkgs/tools/security/stegseek/default.nix b/nixpkgs/pkgs/tools/security/stegseek/default.nix
index f898b5eab0e6..dd2c10045754 100644
--- a/nixpkgs/pkgs/tools/security/stegseek/default.nix
+++ b/nixpkgs/pkgs/tools/security/stegseek/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/RickdeJager/stegseek";
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "stegseek";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/step-cli/default.nix b/nixpkgs/pkgs/tools/security/step-cli/default.nix
index 040c25b65c3f..53a0a44588a2 100644
--- a/nixpkgs/pkgs/tools/security/step-cli/default.nix
+++ b/nixpkgs/pkgs/tools/security/step-cli/default.nix
@@ -5,13 +5,13 @@
 
 buildGoModule rec {
   pname = "step-cli";
-  version = "0.25.0";
+  version = "0.25.1";
 
   src = fetchFromGitHub {
     owner = "smallstep";
     repo = "cli";
     rev = "refs/tags/v${version}";
-    hash = "sha256-8sMF7KSrHyApdXZ3Oy4KogEqd6R8KlQVkqIcvYQBPJY=";
+    hash = "sha256-Lltlvr/Hvh2W8MiB5WC3RmQcHg6kRPau7Fvvaqm60MQ=";
   };
 
   ldflags = [
@@ -25,7 +25,7 @@ buildGoModule rec {
     rm command/certificate/remote_test.go
   '';
 
-  vendorHash = "sha256-c+2mOAMdGcqeL7zAURso3XVcnb93HNS/i6c63kiIHKU=";
+  vendorHash = "sha256-dhJrDhMnPb985W3YP7+W8GHuMpkkZJcxks27TThj2YE=";
 
   meta = with lib; {
     description = "A zero trust swiss army knife for working with X509, OAuth, JWT, OATH OTP, etc";
diff --git a/nixpkgs/pkgs/tools/security/stricat/default.nix b/nixpkgs/pkgs/tools/security/stricat/default.nix
index bdd7d18923f1..b21498e009f1 100644
--- a/nixpkgs/pkgs/tools/security/stricat/default.nix
+++ b/nixpkgs/pkgs/tools/security/stricat/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license     = lib.licenses.bsd3;
     platforms   = lib.platforms.unix;
     maintainers = [ lib.maintainers.thoughtpolice ];
+    mainProgram = "stricat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/sx-go/default.nix b/nixpkgs/pkgs/tools/security/sx-go/default.nix
index 11a9b497fdf0..8c8ceee0fe74 100644
--- a/nixpkgs/pkgs/tools/security/sx-go/default.nix
+++ b/nixpkgs/pkgs/tools/security/sx-go/default.nix
@@ -41,5 +41,6 @@ buildGoModule rec {
     homepage = "https://github.com/v-byte-cpu/sx";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "sx-go";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/terrascan/default.nix b/nixpkgs/pkgs/tools/security/terrascan/default.nix
index fd8c512837ff..9bff2f0679e4 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.3";
+  version = "1.18.5";
 
   src = fetchFromGitHub {
     owner = "accurics";
     repo = pname;
     rev = "refs/tags/v${version}";
-    hash = "sha256-2jIdKBNn3Ajvq+fQ1OuQ0VB8+S0QYwLZnJMlGqZ7WtE=";
+    hash = "sha256-RDKy588qUvs0SGysz4DnQMliKiTJn4GA53kDyMZhzQE=";
   };
 
-  vendorHash = "sha256-PH94le8IwVuinlRsk84HGSxhBSJTTJDrou7nfD1J1JM=";
+  vendorHash = "sha256-9zD81p/UjH43B0aeqlItP9vrGMaT/zhVYv60ot153Gc=";
 
   # Tests want to download a vulnerable Terraform project
   doCheck = false;
diff --git a/nixpkgs/pkgs/tools/security/tessen/default.nix b/nixpkgs/pkgs/tools/security/tessen/default.nix
index 1113134a1451..e8517dda9b4e 100644
--- a/nixpkgs/pkgs/tools/security/tessen/default.nix
+++ b/nixpkgs/pkgs/tools/security/tessen/default.nix
@@ -48,5 +48,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ monaaraj ];
+    mainProgram = "tessen";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/trufflehog/default.nix b/nixpkgs/pkgs/tools/security/trufflehog/default.nix
index 0cb3f7733243..fcaf193e3261 100644
--- a/nixpkgs/pkgs/tools/security/trufflehog/default.nix
+++ b/nixpkgs/pkgs/tools/security/trufflehog/default.nix
@@ -7,13 +7,13 @@
 
 buildGoModule rec {
   pname = "trufflehog";
-  version = "3.63.0";
+  version = "3.63.1";
 
   src = fetchFromGitHub {
     owner = "trufflesecurity";
     repo = "trufflehog";
     rev = "refs/tags/v${version}";
-    hash = "sha256-7heKPssACk6CI0O29U2astkwJAYk3a043l8Cqz6swMg=";
+    hash = "sha256-YZH3f5m/7RFf8acmDCw4wQY6LgI98I+5kTIwEFkTwiI=";
   };
 
   vendorHash = "sha256-+Boe/bzCsmihspGqmiJ3jOcRJ9KPjkzu6MBmgtAgwjE=";
diff --git a/nixpkgs/pkgs/tools/security/vault/vault-bin.nix b/nixpkgs/pkgs/tools/security/vault/vault-bin.nix
index f9d1dd74e126..ca392d68a96d 100644
--- a/nixpkgs/pkgs/tools/security/vault/vault-bin.nix
+++ b/nixpkgs/pkgs/tools/security/vault/vault-bin.nix
@@ -2,7 +2,7 @@
 
 stdenv.mkDerivation rec {
   pname = "vault-bin";
-  version = "1.15.0";
+  version = "1.15.2";
 
   src =
     let
@@ -16,11 +16,11 @@ stdenv.mkDerivation rec {
         aarch64-darwin = "darwin_arm64";
       };
       sha256 = selectSystem {
-        x86_64-linux = "sha256-TLpH6s9odZFh9LFnLiZjpcx0+W+6XrdDhja/xcixx7s=";
-        aarch64-linux = "sha256-QQejEfJrCB+68SXhQm7Ub763ZL72Cy+HB1be+4p4XrM=";
-        i686-linux = "sha256-1dFPAIBNyDQheIdszmoiHU6AmLZ1TtbT+If7n8ZQQAY=";
-        x86_64-darwin = "sha256-51A12pOMaJGYacgiIIW3sqUytApDXrSWBkNl7fWqFgk=";
-        aarch64-darwin = "sha256-PacsdP9n7mdK/wKJW63Ajbt5G+PFPwa+XB4OEz3YUno=";
+        x86_64-linux = "sha256-aawDrQu8wEZqJ/uyCJjtWcgy8Ut34B5P+odqddE5P3M=";
+        aarch64-linux = "sha256-thLVw//yIgPCAV9CdrRlINLg+cO5aB279I2aboZMF6w=";
+        i686-linux = "sha256-bUhtnQB5YZdDuB4uondln0D3itoTr+1FaqjgTiT76WA=";
+        x86_64-darwin = "sha256-+wZrWwbpibtCla1ydhDnLJsHrVymLzEXVE1KftZ+pOs=";
+        aarch64-darwin = "sha256-2FGiCzIAEyXTqRaKEDZK5d/PWl4EmvJl9NieiOdgOeY=";
       };
     in
     fetchzip {
diff --git a/nixpkgs/pkgs/tools/security/vaultwarden/Cargo.lock b/nixpkgs/pkgs/tools/security/vaultwarden/Cargo.lock
deleted file mode 100644
index 7cb84d651e8d..000000000000
--- a/nixpkgs/pkgs/tools/security/vaultwarden/Cargo.lock
+++ /dev/null
@@ -1,4052 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "addr2line"
-version = "0.21.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
-dependencies = [
- "gimli",
-]
-
-[[package]]
-name = "adler"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
-
-[[package]]
-name = "ahash"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
-dependencies = [
- "getrandom",
- "once_cell",
- "version_check",
-]
-
-[[package]]
-name = "ahash"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
-dependencies = [
- "cfg-if",
- "once_cell",
- "version_check",
-]
-
-[[package]]
-name = "aho-corasick"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
-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 = "allocator-api2"
-version = "0.2.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
-
-[[package]]
-name = "android-tzdata"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
-
-[[package]]
-name = "android_system_properties"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "argon2"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17ba4cac0a46bc1d2912652a751c47f2a9f3a7fe89bcae2275d418f5270402f9"
-dependencies = [
- "base64ct",
- "blake2",
- "cpufeatures",
- "password-hash",
-]
-
-[[package]]
-name = "async-channel"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35"
-dependencies = [
- "concurrent-queue",
- "event-listener 2.5.3",
- "futures-core",
-]
-
-[[package]]
-name = "async-compression"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f658e2baef915ba0f26f1f7c42bfb8e12f532a01f449a090ded75ae7a07e9ba2"
-dependencies = [
- "brotli",
- "flate2",
- "futures-core",
- "memchr",
- "pin-project-lite",
- "tokio",
-]
-
-[[package]]
-name = "async-executor"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0"
-dependencies = [
- "async-lock",
- "async-task",
- "concurrent-queue",
- "fastrand 2.0.1",
- "futures-lite",
- "slab",
-]
-
-[[package]]
-name = "async-global-executor"
-version = "2.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776"
-dependencies = [
- "async-channel",
- "async-executor",
- "async-io",
- "async-lock",
- "blocking",
- "futures-lite",
- "once_cell",
-]
-
-[[package]]
-name = "async-io"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
-dependencies = [
- "async-lock",
- "autocfg",
- "cfg-if",
- "concurrent-queue",
- "futures-lite",
- "log",
- "parking",
- "polling",
- "rustix 0.37.26",
- "slab",
- "socket2 0.4.10",
- "waker-fn",
-]
-
-[[package]]
-name = "async-lock"
-version = "2.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
-dependencies = [
- "event-listener 2.5.3",
-]
-
-[[package]]
-name = "async-process"
-version = "1.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88"
-dependencies = [
- "async-io",
- "async-lock",
- "async-signal",
- "blocking",
- "cfg-if",
- "event-listener 3.0.0",
- "futures-lite",
- "rustix 0.38.20",
- "windows-sys",
-]
-
-[[package]]
-name = "async-signal"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2a5415b7abcdc9cd7d63d6badba5288b2ca017e3fbd4173b8f405449f1a2399"
-dependencies = [
- "async-io",
- "async-lock",
- "atomic-waker",
- "cfg-if",
- "futures-core",
- "futures-io",
- "rustix 0.38.20",
- "signal-hook-registry",
- "slab",
- "windows-sys",
-]
-
-[[package]]
-name = "async-std"
-version = "1.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d"
-dependencies = [
- "async-channel",
- "async-global-executor",
- "async-io",
- "async-lock",
- "async-process",
- "crossbeam-utils",
- "futures-channel",
- "futures-core",
- "futures-io",
- "futures-lite",
- "gloo-timers",
- "kv-log-macro",
- "log",
- "memchr",
- "once_cell",
- "pin-project-lite",
- "pin-utils",
- "slab",
- "wasm-bindgen-futures",
-]
-
-[[package]]
-name = "async-stream"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
-dependencies = [
- "async-stream-impl",
- "futures-core",
- "pin-project-lite",
-]
-
-[[package]]
-name = "async-stream-impl"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "async-task"
-version = "4.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1"
-
-[[package]]
-name = "async-trait"
-version = "0.1.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "atomic"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba"
-
-[[package]]
-name = "atomic"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994"
-dependencies = [
- "bytemuck",
-]
-
-[[package]]
-name = "atomic-waker"
-version = "1.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
-
-[[package]]
-name = "autocfg"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
-
-[[package]]
-name = "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.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
-
-[[package]]
-name = "base64"
-version = "0.21.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2"
-
-[[package]]
-name = "base64ct"
-version = "1.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
-
-[[package]]
-name = "binascii"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72"
-
-[[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 = "blake2"
-version = "0.10.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe"
-dependencies = [
- "digest",
-]
-
-[[package]]
-name = "block-buffer"
-version = "0.10.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
-dependencies = [
- "generic-array",
-]
-
-[[package]]
-name = "blocking"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a"
-dependencies = [
- "async-channel",
- "async-lock",
- "async-task",
- "fastrand 2.0.1",
- "futures-io",
- "futures-lite",
- "piper",
- "tracing",
-]
-
-[[package]]
-name = "brotli"
-version = "3.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f"
-dependencies = [
- "alloc-no-stdlib",
- "alloc-stdlib",
- "brotli-decompressor",
-]
-
-[[package]]
-name = "brotli-decompressor"
-version = "2.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448"
-dependencies = [
- "alloc-no-stdlib",
- "alloc-stdlib",
-]
-
-[[package]]
-name = "bumpalo"
-version = "3.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
-
-[[package]]
-name = "bytemuck"
-version = "1.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
-
-[[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 = "cached"
-version = "0.46.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8cead8ece0da6b744b2ad8ef9c58a4cdc7ef2921e60a6ddfb9eaaa86839b5fc5"
-dependencies = [
- "ahash 0.8.3",
- "async-trait",
- "cached_proc_macro",
- "cached_proc_macro_types",
- "futures",
- "hashbrown 0.14.2",
- "instant",
- "once_cell",
- "thiserror",
- "tokio",
-]
-
-[[package]]
-name = "cached_proc_macro"
-version = "0.18.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7da8245dd5f576a41c3b76247b54c15b0e43139ceeb4f732033e15be7c005176"
-dependencies = [
- "darling",
- "proc-macro2",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "cached_proc_macro_types"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663"
-
-[[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 = "chrono"
-version = "0.4.31"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
-dependencies = [
- "android-tzdata",
- "iana-time-zone",
- "num-traits",
- "serde",
- "windows-targets",
-]
-
-[[package]]
-name = "chrono-tz"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1369bc6b9e9a7dfdae2055f6ec151fe9c554a9d23d357c0237cee2e25eaabb7"
-dependencies = [
- "chrono",
- "chrono-tz-build",
- "phf",
-]
-
-[[package]]
-name = "chrono-tz-build"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2f5ebdc942f57ed96d560a6d1a459bae5851102a25d5bf89dc04ae453e31ecf"
-dependencies = [
- "parse-zoneinfo",
- "phf",
- "phf_codegen",
-]
-
-[[package]]
-name = "chumsky"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23170228b96236b5a7299057ac284a321457700bc8c41a4476052f0f4ba5349d"
-dependencies = [
- "hashbrown 0.12.3",
- "stacker",
-]
-
-[[package]]
-name = "concurrent-queue"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400"
-dependencies = [
- "crossbeam-utils",
-]
-
-[[package]]
-name = "cookie"
-version = "0.16.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb"
-dependencies = [
- "percent-encoding",
- "time",
- "version_check",
-]
-
-[[package]]
-name = "cookie"
-version = "0.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24"
-dependencies = [
- "percent-encoding",
- "time",
- "version_check",
-]
-
-[[package]]
-name = "cookie_store"
-version = "0.16.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa"
-dependencies = [
- "cookie 0.16.2",
- "idna 0.2.3",
- "log",
- "publicsuffix",
- "serde",
- "serde_derive",
- "serde_json",
- "time",
- "url",
-]
-
-[[package]]
-name = "cookie_store"
-version = "0.19.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d5a18f35792056f8c7c2de9c002e7e4fe44c7b5f66e7d99f46468dbb730a7ea7"
-dependencies = [
- "cookie 0.16.2",
- "idna 0.3.0",
- "log",
- "publicsuffix",
- "serde",
- "serde_derive",
- "serde_json",
- "time",
- "url",
-]
-
-[[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.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
-
-[[package]]
-name = "cpufeatures"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fbc60abd742b35f2492f808e1abbb83d45f72db402e14c55057edc9c7b1e9e4"
-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 = "cron"
-version = "0.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ff76b51e4c068c52bfd2866e1567bee7c567ae8f24ada09fd4307019e25eab7"
-dependencies = [
- "chrono",
- "nom",
- "once_cell",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.8.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
-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 = "darling"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
-dependencies = [
- "darling_core",
- "darling_macro",
-]
-
-[[package]]
-name = "darling_core"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0"
-dependencies = [
- "fnv",
- "ident_case",
- "proc-macro2",
- "quote",
- "strsim",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "darling_macro"
-version = "0.14.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
-dependencies = [
- "darling_core",
- "quote",
- "syn 1.0.109",
-]
-
-[[package]]
-name = "dashmap"
-version = "5.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
-dependencies = [
- "cfg-if",
- "hashbrown 0.14.2",
- "lock_api",
- "once_cell",
- "parking_lot_core",
-]
-
-[[package]]
-name = "data-encoding"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
-
-[[package]]
-name = "data-url"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41b319d1b62ffbd002e057f36bebd1f42b9f97927c9577461d855f3513c4289f"
-
-[[package]]
-name = "deranged"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
-dependencies = [
- "powerfmt",
-]
-
-[[package]]
-name = "devise"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6eacefd3f541c66fc61433d65e54e0e46e0a029a819a7dbbc7a7b489e8a85f8"
-dependencies = [
- "devise_codegen",
- "devise_core",
-]
-
-[[package]]
-name = "devise_codegen"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8cf4b8dd484ede80fd5c547592c46c3745a617c8af278e2b72bea86b2dfed6"
-dependencies = [
- "devise_core",
- "quote",
-]
-
-[[package]]
-name = "devise_core"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35b50dba0afdca80b187392b24f2499a88c336d5a8493e4b4ccfb608708be56a"
-dependencies = [
- "bitflags 2.4.1",
- "proc-macro2",
- "proc-macro2-diagnostics",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "diesel"
-version = "2.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2268a214a6f118fce1838edba3d1561cf0e78d8de785475957a580a7f8c69d33"
-dependencies = [
- "bitflags 2.4.1",
- "byteorder",
- "chrono",
- "diesel_derives",
- "itoa",
- "libsqlite3-sys",
- "mysqlclient-sys",
- "percent-encoding",
- "pq-sys",
- "r2d2",
- "time",
- "url",
-]
-
-[[package]]
-name = "diesel_derives"
-version = "2.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef8337737574f55a468005a83499da720f20c65586241ffea339db9ecdfd2b44"
-dependencies = [
- "diesel_table_macro_syntax",
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "diesel_logger"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23010b507517129dc9b11fb35f36d76fd2d3dd4c85232733697622e345375f2f"
-dependencies = [
- "diesel",
- "log",
-]
-
-[[package]]
-name = "diesel_migrations"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6036b3f0120c5961381b570ee20a02432d7e2d27ea60de9578799cf9156914ac"
-dependencies = [
- "diesel",
- "migrations_internals",
- "migrations_macros",
-]
-
-[[package]]
-name = "diesel_table_macro_syntax"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5"
-dependencies = [
- "syn 2.0.38",
-]
-
-[[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 = "dotenvy"
-version = "0.15.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b"
-
-[[package]]
-name = "either"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
-
-[[package]]
-name = "email-encoding"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbfb21b9878cf7a348dcb8559109aabc0ec40d69924bd706fa5149846c4fef75"
-dependencies = [
- "base64 0.21.4",
- "memchr",
-]
-
-[[package]]
-name = "email_address"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2153bd83ebc09db15bcbdc3e2194d901804952e3dc96967e1cd3b0c5c32d112"
-dependencies = [
- "serde",
-]
-
-[[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 = "enum-as-inner"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a"
-dependencies = [
- "heck",
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[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.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"
-dependencies = [
- "libc",
- "windows-sys",
-]
-
-[[package]]
-name = "error-chain"
-version = "0.12.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
-dependencies = [
- "version_check",
-]
-
-[[package]]
-name = "event-listener"
-version = "2.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
-
-[[package]]
-name = "event-listener"
-version = "3.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29e56284f00d94c1bc7fd3c77027b4623c88c1f53d8d2394c6199f2921dea325"
-dependencies = [
- "concurrent-queue",
- "parking",
- "pin-project-lite",
-]
-
-[[package]]
-name = "fastrand"
-version = "1.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
-dependencies = [
- "instant",
-]
-
-[[package]]
-name = "fastrand"
-version = "2.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
-
-[[package]]
-name = "fern"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9f0c14694cbd524c8720dd69b0e3179344f04ebb5f90f2e4a440c6ea3b2f1ee"
-dependencies = [
- "libc",
- "log",
- "reopen",
- "syslog",
-]
-
-[[package]]
-name = "figment"
-version = "0.10.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a014ac935975a70ad13a3bff2463b1c1b083b35ae4cb6309cfc59476aa7a181f"
-dependencies = [
- "atomic 0.6.0",
- "pear",
- "serde",
- "toml 0.8.2",
- "uncased",
- "version_check",
-]
-
-[[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.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
-dependencies = [
- "percent-encoding",
-]
-
-[[package]]
-name = "futures"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
-dependencies = [
- "futures-channel",
- "futures-core",
- "futures-executor",
- "futures-io",
- "futures-sink",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-channel"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
-dependencies = [
- "futures-core",
- "futures-sink",
-]
-
-[[package]]
-name = "futures-core"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
-
-[[package]]
-name = "futures-executor"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
-dependencies = [
- "futures-core",
- "futures-task",
- "futures-util",
-]
-
-[[package]]
-name = "futures-io"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
-
-[[package]]
-name = "futures-lite"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
-dependencies = [
- "fastrand 1.9.0",
- "futures-core",
- "futures-io",
- "memchr",
- "parking",
- "pin-project-lite",
- "waker-fn",
-]
-
-[[package]]
-name = "futures-macro"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "futures-sink"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
-
-[[package]]
-name = "futures-task"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
-
-[[package]]
-name = "futures-timer"
-version = "3.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c"
-
-[[package]]
-name = "futures-util"
-version = "0.3.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
-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",
-]
-
-[[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.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi",
-]
-
-[[package]]
-name = "gimli"
-version = "0.28.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
-
-[[package]]
-name = "glob"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
-
-[[package]]
-name = "gloo-timers"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c"
-dependencies = [
- "futures-channel",
- "futures-core",
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "governor"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "821239e5672ff23e2a7060901fa622950bbd80b649cdaadd78d1c1767ed14eb4"
-dependencies = [
- "cfg-if",
- "dashmap",
- "futures",
- "futures-timer",
- "no-std-compat",
- "nonzero_ext",
- "parking_lot",
- "quanta",
- "rand",
- "smallvec",
-]
-
-[[package]]
-name = "h2"
-version = "0.3.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833"
-dependencies = [
- "bytes",
- "fnv",
- "futures-core",
- "futures-sink",
- "futures-util",
- "http",
- "indexmap 1.9.3",
- "slab",
- "tokio",
- "tokio-util",
- "tracing",
-]
-
-[[package]]
-name = "half"
-version = "1.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
-
-[[package]]
-name = "handlebars"
-version = "4.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c39b3bc2a8f715298032cf5087e58573809374b08160aa7d750582bdb82d2683"
-dependencies = [
- "log",
- "pest",
- "pest_derive",
- "serde",
- "serde_json",
- "thiserror",
- "walkdir",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
-dependencies = [
- "ahash 0.7.6",
-]
-
-[[package]]
-name = "hashbrown"
-version = "0.14.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
-dependencies = [
- "ahash 0.8.3",
- "allocator-api2",
-]
-
-[[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.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
-
-[[package]]
-name = "hmac"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
-dependencies = [
- "digest",
-]
-
-[[package]]
-name = "home"
-version = "0.5.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
-dependencies = [
- "windows-sys",
-]
-
-[[package]]
-name = "hostname"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
-dependencies = [
- "libc",
- "match_cfg",
- "winapi",
-]
-
-[[package]]
-name = "html5gum"
-version = "0.5.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c4e556171a058ba117bbe88b059fb37b6289023e007d2903ea6dca3a3cbff14"
-dependencies = [
- "jetscii",
-]
-
-[[package]]
-name = "http"
-version = "0.2.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482"
-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",
- "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 = "hyper"
-version = "0.14.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
-dependencies = [
- "bytes",
- "futures-channel",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "httparse",
- "httpdate",
- "itoa",
- "pin-project-lite",
- "socket2 0.4.10",
- "tokio",
- "tower-service",
- "tracing",
- "want",
-]
-
-[[package]]
-name = "hyper-tls"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
-dependencies = [
- "bytes",
- "hyper",
- "native-tls",
- "tokio",
- "tokio-native-tls",
-]
-
-[[package]]
-name = "iana-time-zone"
-version = "0.1.58"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
-dependencies = [
- "android_system_properties",
- "core-foundation-sys",
- "iana-time-zone-haiku",
- "js-sys",
- "wasm-bindgen",
- "windows-core",
-]
-
-[[package]]
-name = "iana-time-zone-haiku"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "ident_case"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
-
-[[package]]
-name = "idna"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
-dependencies = [
- "matches",
- "unicode-bidi",
- "unicode-normalization",
-]
-
-[[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 = "idna"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
-dependencies = [
- "unicode-bidi",
- "unicode-normalization",
-]
-
-[[package]]
-name = "indexmap"
-version = "1.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
-dependencies = [
- "autocfg",
- "hashbrown 0.12.3",
- "serde",
-]
-
-[[package]]
-name = "indexmap"
-version = "2.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897"
-dependencies = [
- "equivalent",
- "hashbrown 0.14.2",
-]
-
-[[package]]
-name = "inlinable_string"
-version = "0.1.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb"
-
-[[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.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
-dependencies = [
- "hermit-abi",
- "libc",
- "windows-sys",
-]
-
-[[package]]
-name = "ipconfig"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f"
-dependencies = [
- "socket2 0.5.5",
- "widestring",
- "windows-sys",
- "winreg",
-]
-
-[[package]]
-name = "ipnet"
-version = "2.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6"
-
-[[package]]
-name = "is-terminal"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
-dependencies = [
- "hermit-abi",
- "rustix 0.38.20",
- "windows-sys",
-]
-
-[[package]]
-name = "itoa"
-version = "1.0.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
-
-[[package]]
-name = "jetscii"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "47f142fe24a9c9944451e8349de0a56af5f3e7226dc46f3ed4d4ecc0b85af75e"
-
-[[package]]
-name = "job_scheduler_ng"
-version = "2.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10bbdf445513bbe53f4666218b7057d265c76fa0b30475e121a6bf05dbaacaae"
-dependencies = [
- "chrono",
- "cron",
- "uuid",
-]
-
-[[package]]
-name = "js-sys"
-version = "0.3.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "jsonwebtoken"
-version = "9.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e863f95209c79b9b8b001c4b03463385f890a765dbc4e0802cb8d4177e3e410"
-dependencies = [
- "base64 0.21.4",
- "pem",
- "ring 0.17.5",
- "serde",
- "serde_json",
- "simple_asn1",
-]
-
-[[package]]
-name = "kv-log-macro"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f"
-dependencies = [
- "log",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
-[[package]]
-name = "lettre"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d47084ad58f99c26816d174702f60e873f861fcef3f9bd6075b4ad2dd72d07d5"
-dependencies = [
- "async-std",
- "async-trait",
- "base64 0.21.4",
- "chumsky",
- "email-encoding",
- "email_address",
- "fastrand 2.0.1",
- "futures-io",
- "futures-util",
- "hostname",
- "httpdate",
- "idna 0.4.0",
- "mime",
- "native-tls",
- "nom",
- "once_cell",
- "quoted_printable",
- "serde",
- "socket2 0.5.5",
- "tokio",
- "tokio-native-tls",
- "tracing",
- "url",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.149"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
-
-[[package]]
-name = "libmimalloc-sys"
-version = "0.1.35"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664"
-dependencies = [
- "cc",
- "libc",
-]
-
-[[package]]
-name = "libsqlite3-sys"
-version = "0.26.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326"
-dependencies = [
- "cc",
- "pkg-config",
- "vcpkg",
-]
-
-[[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.3.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.4.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f"
-
-[[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"
-dependencies = [
- "value-bag",
-]
-
-[[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 = "lru-cache"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c"
-dependencies = [
- "linked-hash-map",
-]
-
-[[package]]
-name = "mach2"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d0d1830bcd151a6fc4aea1369af235b36c1528fe976b8ff678683c9995eade8"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "match_cfg"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
-
-[[package]]
-name = "matchers"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
-dependencies = [
- "regex-automata 0.1.10",
-]
-
-[[package]]
-name = "matches"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
-
-[[package]]
-name = "memchr"
-version = "2.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
-
-[[package]]
-name = "migrations_internals"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f23f71580015254b020e856feac3df5878c2c7a8812297edd6c0a485ac9dada"
-dependencies = [
- "serde",
- "toml 0.7.8",
-]
-
-[[package]]
-name = "migrations_macros"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cce3325ac70e67bbab5bd837a31cae01f1a6db64e0e744a33cb03a543469ef08"
-dependencies = [
- "migrations_internals",
- "proc-macro2",
- "quote",
-]
-
-[[package]]
-name = "mimalloc"
-version = "0.1.39"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c"
-dependencies = [
- "libmimalloc-sys",
-]
-
-[[package]]
-name = "mime"
-version = "0.3.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
-
-[[package]]
-name = "minimal-lexical"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
-
-[[package]]
-name = "miniz_oxide"
-version = "0.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
-dependencies = [
- "adler",
-]
-
-[[package]]
-name = "mio"
-version = "0.8.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
-dependencies = [
- "libc",
- "wasi",
- "windows-sys",
-]
-
-[[package]]
-name = "multer"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01acbdc23469fd8fe07ab135923371d5f5a422fbf9c522158677c8eb15bc51c2"
-dependencies = [
- "bytes",
- "encoding_rs",
- "futures-util",
- "http",
- "httparse",
- "log",
- "memchr",
- "mime",
- "spin 0.9.8",
- "tokio",
- "tokio-util",
- "version_check",
-]
-
-[[package]]
-name = "mysqlclient-sys"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f61b381528ba293005c42a409dd73d034508e273bf90481f17ec2e964a6e969b"
-dependencies = [
- "pkg-config",
- "vcpkg",
-]
-
-[[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 = "no-std-compat"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b93853da6d84c2e3c7d730d6473e8817692dd89be387eb01b94d7f108ecb5b8c"
-
-[[package]]
-name = "nom"
-version = "7.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
-dependencies = [
- "memchr",
- "minimal-lexical",
-]
-
-[[package]]
-name = "nonzero_ext"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21"
-
-[[package]]
-name = "nu-ansi-term"
-version = "0.46.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
-dependencies = [
- "overload",
- "winapi",
-]
-
-[[package]]
-name = "num-bigint"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
-dependencies = [
- "autocfg",
- "num-integer",
- "num-traits",
-]
-
-[[package]]
-name = "num-derive"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cfb77679af88f8b125209d354a202862602672222e7f2313fdd6dc349bad4712"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[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-traits"
-version = "0.2.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.16.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
-dependencies = [
- "hermit-abi",
- "libc",
-]
-
-[[package]]
-name = "num_threads"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "object"
-version = "0.32.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "once_cell"
-version = "1.18.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
-
-[[package]]
-name = "openssl"
-version = "0.10.57"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c"
-dependencies = [
- "bitflags 2.4.1",
- "cfg-if",
- "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",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
-
-[[package]]
-name = "openssl-src"
-version = "111.28.0+1.1.1w"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ce95ee1f6f999dfb95b8afd43ebe442758ea2104d1ccb99a94c30db22ae701f"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.92"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db7e971c2c2bba161b2d2fdf37080177eff520b3bc044787c7f1f5f9e78d869b"
-dependencies = [
- "cc",
- "libc",
- "openssl-src",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "overload"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
-
-[[package]]
-name = "parking"
-version = "2.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
-
-[[package]]
-name = "parking_lot"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
-dependencies = [
- "lock_api",
- "parking_lot_core",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.9.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
-dependencies = [
- "cfg-if",
- "libc",
- "redox_syscall 0.4.1",
- "smallvec",
- "windows-targets",
-]
-
-[[package]]
-name = "parse-zoneinfo"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41"
-dependencies = [
- "regex",
-]
-
-[[package]]
-name = "password-hash"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166"
-dependencies = [
- "base64ct",
- "rand_core",
- "subtle",
-]
-
-[[package]]
-name = "paste"
-version = "1.0.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
-
-[[package]]
-name = "pear"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61a386cd715229d399604b50d1361683fe687066f42d56f54be995bc6868f71c"
-dependencies = [
- "inlinable_string",
- "pear_codegen",
- "yansi 1.0.0-rc.1",
-]
-
-[[package]]
-name = "pear_codegen"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da9f0f13dac8069c139e8300a6510e3f4143ecf5259c60b116a9b271b4ca0d54"
-dependencies = [
- "proc-macro2",
- "proc-macro2-diagnostics",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "pem"
-version = "3.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3163d2912b7c3b52d651a055f2c7eec9ba5cd22d26ef75b8dd3a59980b185923"
-dependencies = [
- "base64 0.21.4",
- "serde",
-]
-
-[[package]]
-name = "percent-encoding"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
-
-[[package]]
-name = "pest"
-version = "2.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c022f1e7b65d6a24c0dbbd5fb344c66881bc01f3e5ae74a1c8100f2f985d98a4"
-dependencies = [
- "memchr",
- "thiserror",
- "ucd-trie",
-]
-
-[[package]]
-name = "pest_derive"
-version = "2.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35513f630d46400a977c4cb58f78e1bfbe01434316e60c37d27b9ad6139c66d8"
-dependencies = [
- "pest",
- "pest_generator",
-]
-
-[[package]]
-name = "pest_generator"
-version = "2.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc9fc1b9e7057baba189b5c626e2d6f40681ae5b6eb064dc7c7834101ec8123a"
-dependencies = [
- "pest",
- "pest_meta",
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "pest_meta"
-version = "2.7.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1df74e9e7ec4053ceb980e7c0c8bd3594e977fde1af91daba9c928e8e8c6708d"
-dependencies = [
- "once_cell",
- "pest",
- "sha2",
-]
-
-[[package]]
-name = "phf"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc"
-dependencies = [
- "phf_shared",
-]
-
-[[package]]
-name = "phf_codegen"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a"
-dependencies = [
- "phf_generator",
- "phf_shared",
-]
-
-[[package]]
-name = "phf_generator"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0"
-dependencies = [
- "phf_shared",
- "rand",
-]
-
-[[package]]
-name = "phf_shared"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b"
-dependencies = [
- "siphasher",
-]
-
-[[package]]
-name = "pico-args"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
-
-[[package]]
-name = "pin-utils"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
-[[package]]
-name = "piper"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
-dependencies = [
- "atomic-waker",
- "fastrand 2.0.1",
- "futures-io",
-]
-
-[[package]]
-name = "pkg-config"
-version = "0.3.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
-
-[[package]]
-name = "polling"
-version = "2.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
-dependencies = [
- "autocfg",
- "bitflags 1.3.2",
- "cfg-if",
- "concurrent-queue",
- "libc",
- "log",
- "pin-project-lite",
- "windows-sys",
-]
-
-[[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 = "pq-sys"
-version = "0.4.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31c0052426df997c0cbd30789eb44ca097e3541717a7b8fa36b1c464ee7edebd"
-dependencies = [
- "vcpkg",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.69"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "proc-macro2-diagnostics"
-version = "0.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
- "version_check",
- "yansi 1.0.0-rc.1",
-]
-
-[[package]]
-name = "psl-types"
-version = "2.0.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac"
-
-[[package]]
-name = "psm"
-version = "0.1.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "publicsuffix"
-version = "2.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96a8c1bda5ae1af7f99a2962e49df150414a43d62404644d98dd5c3a93d07457"
-dependencies = [
- "idna 0.3.0",
- "psl-types",
-]
-
-[[package]]
-name = "quanta"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab"
-dependencies = [
- "crossbeam-utils",
- "libc",
- "mach2",
- "once_cell",
- "raw-cpuid",
- "wasi",
- "web-sys",
- "winapi",
-]
-
-[[package]]
-name = "quick-error"
-version = "1.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
-
-[[package]]
-name = "quote"
-version = "1.0.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "quoted_printable"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79ec282e887b434b68c18fe5c121d38e72a5cf35119b59e54ec5b992ea9c8eb0"
-
-[[package]]
-name = "r2d2"
-version = "0.8.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93"
-dependencies = [
- "log",
- "parking_lot",
- "scheduled-thread-pool",
-]
-
-[[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 = "raw-cpuid"
-version = "10.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c297679cb867470fa8c9f67dbba74a78d78e3e98d7cf2b08d6d71540f797332"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
-dependencies = [
- "bitflags 1.3.2",
-]
-
-[[package]]
-name = "ref-cast"
-version = "1.0.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acde58d073e9c79da00f2b5b84eed919c8326832648a5b109b3fce1bb1175280"
-dependencies = [
- "ref-cast-impl",
-]
-
-[[package]]
-name = "ref-cast-impl"
-version = "1.0.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "regex"
-version = "1.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata 0.4.3",
- "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.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
-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 = "reopen"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff42cec3acf85845f5b18b3cbb7fec619ccbd4a349f6ecbe1c62ab46d4d98293"
-dependencies = [
- "autocfg",
- "libc",
- "signal-hook",
-]
-
-[[package]]
-name = "reqwest"
-version = "0.11.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b"
-dependencies = [
- "async-compression",
- "base64 0.21.4",
- "bytes",
- "cookie 0.16.2",
- "cookie_store 0.16.2",
- "encoding_rs",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "hyper",
- "hyper-tls",
- "ipnet",
- "js-sys",
- "log",
- "mime",
- "native-tls",
- "once_cell",
- "percent-encoding",
- "pin-project-lite",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "system-configuration",
- "tokio",
- "tokio-native-tls",
- "tokio-socks",
- "tokio-util",
- "tower-service",
- "trust-dns-resolver",
- "url",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "wasm-streams",
- "web-sys",
- "winreg",
-]
-
-[[package]]
-name = "resolv-conf"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00"
-dependencies = [
- "hostname",
- "quick-error",
-]
-
-[[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.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b"
-dependencies = [
- "cc",
- "getrandom",
- "libc",
- "spin 0.9.8",
- "untrusted 0.9.0",
- "windows-sys",
-]
-
-[[package]]
-name = "rmp"
-version = "0.8.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f9860a6cc38ed1da53456442089b4dfa35e7cedaa326df63017af88385e6b20"
-dependencies = [
- "byteorder",
- "num-traits",
- "paste",
-]
-
-[[package]]
-name = "rmpv"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e0e0214a4a2b444ecce41a4025792fc31f77c7bb89c46d253953ea8c65701ec"
-dependencies = [
- "num-traits",
- "rmp",
-]
-
-[[package]]
-name = "rocket"
-version = "0.5.0-rc.3"
-source = "git+https://github.com/SergioBenitez/Rocket?rev=ce441b5f46fdf5cd99cb32b8b8638835e4c2a5fa#ce441b5f46fdf5cd99cb32b8b8638835e4c2a5fa"
-dependencies = [
- "async-stream",
- "async-trait",
- "atomic 0.5.3",
- "binascii",
- "bytes",
- "either",
- "figment",
- "futures",
- "indexmap 1.9.3",
- "is-terminal",
- "log",
- "memchr",
- "multer",
- "num_cpus",
- "parking_lot",
- "pin-project-lite",
- "rand",
- "ref-cast",
- "rocket_codegen",
- "rocket_http",
- "serde",
- "serde_json",
- "state",
- "tempfile",
- "time",
- "tokio",
- "tokio-stream",
- "tokio-util",
- "ubyte",
- "version_check",
- "yansi 0.5.1",
-]
-
-[[package]]
-name = "rocket_codegen"
-version = "0.5.0-rc.3"
-source = "git+https://github.com/SergioBenitez/Rocket?rev=ce441b5f46fdf5cd99cb32b8b8638835e4c2a5fa#ce441b5f46fdf5cd99cb32b8b8638835e4c2a5fa"
-dependencies = [
- "devise",
- "glob",
- "indexmap 1.9.3",
- "proc-macro2",
- "quote",
- "rocket_http",
- "syn 2.0.38",
- "unicode-xid",
-]
-
-[[package]]
-name = "rocket_http"
-version = "0.5.0-rc.3"
-source = "git+https://github.com/SergioBenitez/Rocket?rev=ce441b5f46fdf5cd99cb32b8b8638835e4c2a5fa#ce441b5f46fdf5cd99cb32b8b8638835e4c2a5fa"
-dependencies = [
- "cookie 0.17.0",
- "either",
- "futures",
- "http",
- "hyper",
- "indexmap 1.9.3",
- "log",
- "memchr",
- "pear",
- "percent-encoding",
- "pin-project-lite",
- "ref-cast",
- "rustls",
- "rustls-pemfile",
- "serde",
- "smallvec",
- "stable-pattern",
- "state",
- "time",
- "tokio",
- "tokio-rustls",
- "uncased",
-]
-
-[[package]]
-name = "rocket_ws"
-version = "0.1.0-rc.3"
-source = "git+https://github.com/SergioBenitez/Rocket?rev=ce441b5f46fdf5cd99cb32b8b8638835e4c2a5fa#ce441b5f46fdf5cd99cb32b8b8638835e4c2a5fa"
-dependencies = [
- "rocket",
- "tokio-tungstenite",
-]
-
-[[package]]
-name = "rpassword"
-version = "7.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6678cf63ab3491898c0d021b493c94c9b221d91295294a2a5746eacbe5928322"
-dependencies = [
- "libc",
- "rtoolbox",
- "winapi",
-]
-
-[[package]]
-name = "rtoolbox"
-version = "0.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a"
-dependencies = [
- "libc",
- "winapi",
-]
-
-[[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.37.26"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84f3f8f960ed3b5a59055428714943298bf3fa2d4a1d53135084e0544829d995"
-dependencies = [
- "bitflags 1.3.2",
- "errno",
- "io-lifetimes",
- "libc",
- "linux-raw-sys 0.3.8",
- "windows-sys",
-]
-
-[[package]]
-name = "rustix"
-version = "0.38.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67ce50cb2e16c2903e30d1cbccfd8387a74b9d4c938b6a4c5ec6cc7556f7a8a0"
-dependencies = [
- "bitflags 2.4.1",
- "errno",
- "libc",
- "linux-raw-sys 0.4.10",
- "windows-sys",
-]
-
-[[package]]
-name = "rustls"
-version = "0.21.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8"
-dependencies = [
- "log",
- "ring 0.16.20",
- "rustls-webpki",
- "sct",
-]
-
-[[package]]
-name = "rustls-pemfile"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2"
-dependencies = [
- "base64 0.21.4",
-]
-
-[[package]]
-name = "rustls-webpki"
-version = "0.101.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe"
-dependencies = [
- "ring 0.16.20",
- "untrusted 0.7.1",
-]
-
-[[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.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
-
-[[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.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88"
-dependencies = [
- "windows-sys",
-]
-
-[[package]]
-name = "scheduled-thread-pool"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3cbc66816425a074528352f5789333ecff06ca41b36b0b0efdfbb29edc391a19"
-dependencies = [
- "parking_lot",
-]
-
-[[package]]
-name = "scoped-tls"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
-
-[[package]]
-name = "scopeguard"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
-
-[[package]]
-name = "sct"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4"
-dependencies = [
- "ring 0.16.20",
- "untrusted 0.7.1",
-]
-
-[[package]]
-name = "security-framework"
-version = "2.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
-dependencies = [
- "bitflags 1.3.2",
- "core-foundation",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "2.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "semver"
-version = "1.0.20"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
-
-[[package]]
-name = "serde"
-version = "1.0.189"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_cbor"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
-dependencies = [
- "half",
- "serde",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.189"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.107"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
-dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "serde_spanned"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186"
-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 = "sha-1"
-version = "0.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c"
-dependencies = [
- "cfg-if",
- "cpufeatures",
- "digest",
-]
-
-[[package]]
-name = "sha1"
-version = "0.10.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
-dependencies = [
- "cfg-if",
- "cpufeatures",
- "digest",
-]
-
-[[package]]
-name = "sha2"
-version = "0.10.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
-dependencies = [
- "cfg-if",
- "cpufeatures",
- "digest",
-]
-
-[[package]]
-name = "sharded-slab"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
-dependencies = [
- "lazy_static",
-]
-
-[[package]]
-name = "signal-hook"
-version = "0.3.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
-dependencies = [
- "libc",
- "signal-hook-registry",
-]
-
-[[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 = "simple_asn1"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085"
-dependencies = [
- "num-bigint",
- "num-traits",
- "thiserror",
- "time",
-]
-
-[[package]]
-name = "siphasher"
-version = "0.3.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d"
-
-[[package]]
-name = "slab"
-version = "0.4.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "smallvec"
-version = "1.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a"
-
-[[package]]
-name = "socket2"
-version = "0.4.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
-dependencies = [
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "socket2"
-version = "0.5.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
-dependencies = [
- "libc",
- "windows-sys",
-]
-
-[[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 = "stable-pattern"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4564168c00635f88eaed410d5efa8131afa8d8699a612c80c455a0ba05c21045"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "stacker"
-version = "0.1.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce"
-dependencies = [
- "cc",
- "cfg-if",
- "libc",
- "psm",
- "winapi",
-]
-
-[[package]]
-name = "state"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8"
-dependencies = [
- "loom",
-]
-
-[[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.38"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "syslog"
-version = "6.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7434e95bcccce1215d30f4bf84fe8c00e8de1b9be4fb736d747ca53d36e7f96f"
-dependencies = [
- "error-chain",
- "hostname",
- "libc",
- "log",
- "time",
-]
-
-[[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 = "tempfile"
-version = "3.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef"
-dependencies = [
- "cfg-if",
- "fastrand 2.0.1",
- "redox_syscall 0.3.5",
- "rustix 0.38.20",
- "windows-sys",
-]
-
-[[package]]
-name = "thiserror"
-version = "1.0.50"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "1.0.50"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[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 = "threadpool"
-version = "1.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
-dependencies = [
- "num_cpus",
-]
-
-[[package]]
-name = "time"
-version = "0.3.30"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
-dependencies = [
- "deranged",
- "itoa",
- "libc",
- "num_threads",
- "powerfmt",
- "serde",
- "time-core",
- "time-macros",
-]
-
-[[package]]
-name = "time-core"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
-
-[[package]]
-name = "time-macros"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20"
-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.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
-
-[[package]]
-name = "tokio"
-version = "1.33.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653"
-dependencies = [
- "backtrace",
- "bytes",
- "libc",
- "mio",
- "num_cpus",
- "parking_lot",
- "pin-project-lite",
- "signal-hook-registry",
- "socket2 0.5.5",
- "tokio-macros",
- "windows-sys",
-]
-
-[[package]]
-name = "tokio-macros"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[package]]
-name = "tokio-native-tls"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2"
-dependencies = [
- "native-tls",
- "tokio",
-]
-
-[[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-socks"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51165dfa029d2a65969413a6cc96f354b86b464498702f174a4efa13608fd8c0"
-dependencies = [
- "either",
- "futures-util",
- "thiserror",
- "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",
-]
-
-[[package]]
-name = "tokio-tungstenite"
-version = "0.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c"
-dependencies = [
- "futures-util",
- "log",
- "tokio",
- "tungstenite",
-]
-
-[[package]]
-name = "tokio-util"
-version = "0.7.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d"
-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 0.19.15",
-]
-
-[[package]]
-name = "toml"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d"
-dependencies = [
- "serde",
- "serde_spanned",
- "toml_datetime",
- "toml_edit 0.20.2",
-]
-
-[[package]]
-name = "toml_datetime"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.19.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
-dependencies = [
- "indexmap 2.0.2",
- "serde",
- "serde_spanned",
- "toml_datetime",
- "winnow",
-]
-
-[[package]]
-name = "toml_edit"
-version = "0.20.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
-dependencies = [
- "indexmap 2.0.2",
- "serde",
- "serde_spanned",
- "toml_datetime",
- "winnow",
-]
-
-[[package]]
-name = "totp-lite"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cc496875d9c8fe9a0ce19e3ee8e8808c60376831a439543f0aac71c9dd129fa"
-dependencies = [
- "digest",
- "hmac",
- "sha-1",
- "sha2",
-]
-
-[[package]]
-name = "tower-service"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
-
-[[package]]
-name = "tracing"
-version = "0.1.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
-dependencies = [
- "log",
- "pin-project-lite",
- "tracing-attributes",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-attributes"
-version = "0.1.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
-]
-
-[[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.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.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77"
-dependencies = [
- "matchers",
- "nu-ansi-term",
- "once_cell",
- "regex",
- "sharded-slab",
- "smallvec",
- "thread_local",
- "tracing",
- "tracing-core",
- "tracing-log",
-]
-
-[[package]]
-name = "trust-dns-proto"
-version = "0.23.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "559ac980345f7f5020883dd3bcacf176355225e01916f8c2efecad7534f682c6"
-dependencies = [
- "async-trait",
- "cfg-if",
- "data-encoding",
- "enum-as-inner",
- "futures-channel",
- "futures-io",
- "futures-util",
- "idna 0.4.0",
- "ipnet",
- "once_cell",
- "rand",
- "smallvec",
- "thiserror",
- "tinyvec",
- "tokio",
- "tracing",
- "url",
-]
-
-[[package]]
-name = "trust-dns-resolver"
-version = "0.23.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c723b0e608b24ad04c73b2607e0241b2c98fd79795a95e98b068b6966138a29d"
-dependencies = [
- "cfg-if",
- "futures-util",
- "ipconfig",
- "lru-cache",
- "once_cell",
- "parking_lot",
- "rand",
- "resolv-conf",
- "smallvec",
- "thiserror",
- "tokio",
- "tracing",
- "trust-dns-proto",
-]
-
-[[package]]
-name = "try-lock"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
-
-[[package]]
-name = "tungstenite"
-version = "0.19.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67"
-dependencies = [
- "byteorder",
- "bytes",
- "data-encoding",
- "http",
- "httparse",
- "log",
- "rand",
- "sha1",
- "thiserror",
- "url",
- "utf-8",
-]
-
-[[package]]
-name = "typenum"
-version = "1.17.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
-
-[[package]]
-name = "ubyte"
-version = "0.10.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f720def6ce1ee2fc44d40ac9ed6d3a59c361c80a75a7aa8e75bb9baed31cf2ea"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "ucd-trie"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
-
-[[package]]
-name = "uncased"
-version = "0.9.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b9bc53168a4be7402ab86c3aad243a84dd7381d09be0eddc81280c1da95ca68"
-dependencies = [
- "serde",
- "version_check",
-]
-
-[[package]]
-name = "unicode-bidi"
-version = "0.3.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
-
-[[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.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
-
-[[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.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
-dependencies = [
- "form_urlencoded",
- "idna 0.4.0",
- "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 = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc"
-dependencies = [
- "getrandom",
-]
-
-[[package]]
-name = "valuable"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
-
-[[package]]
-name = "value-bag"
-version = "1.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a72e1902dde2bd6441347de2b70b7f5d59bf157c6c62f0c44572607a1d55bbe"
-
-[[package]]
-name = "vaultwarden"
-version = "1.0.0"
-dependencies = [
- "argon2",
- "bytes",
- "cached",
- "chrono",
- "chrono-tz",
- "cookie 0.16.2",
- "cookie_store 0.19.1",
- "dashmap",
- "data-encoding",
- "data-url",
- "diesel",
- "diesel_logger",
- "diesel_migrations",
- "dotenvy",
- "email_address",
- "fern",
- "futures",
- "governor",
- "handlebars",
- "html5gum",
- "job_scheduler_ng",
- "jsonwebtoken",
- "lettre",
- "libsqlite3-sys",
- "log",
- "mimalloc",
- "num-derive",
- "num-traits",
- "once_cell",
- "openssl",
- "openssl-sys",
- "paste",
- "percent-encoding",
- "pico-args",
- "rand",
- "regex",
- "reqwest",
- "ring 0.17.5",
- "rmpv",
- "rocket",
- "rocket_ws",
- "rpassword",
- "semver",
- "serde",
- "serde_json",
- "syslog",
- "time",
- "tokio",
- "tokio-tungstenite",
- "totp-lite",
- "tracing",
- "url",
- "uuid",
- "webauthn-rs",
- "which",
- "yubico",
-]
-
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
-[[package]]
-name = "version_check"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
-
-[[package]]
-name = "waker-fn"
-version = "1.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690"
-
-[[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 = "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.87"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
-dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.87"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
-dependencies = [
- "bumpalo",
- "log",
- "once_cell",
- "proc-macro2",
- "quote",
- "syn 2.0.38",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-futures"
-version = "0.4.37"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03"
-dependencies = [
- "cfg-if",
- "js-sys",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.87"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.87"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn 2.0.38",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.87"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
-
-[[package]]
-name = "wasm-streams"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4609d447824375f43e1ffbc051b50ad8f4b3ae8219680c94452ea05eb240ac7"
-dependencies = [
- "futures-util",
- "js-sys",
- "wasm-bindgen",
- "wasm-bindgen-futures",
- "web-sys",
-]
-
-[[package]]
-name = "web-sys"
-version = "0.3.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "webauthn-rs"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90b266eccb4b32595876f5c73ea443b0516da0b1df72ca07bc08ed9ba7f96ec1"
-dependencies = [
- "base64 0.13.1",
- "nom",
- "openssl",
- "rand",
- "serde",
- "serde_cbor",
- "serde_derive",
- "serde_json",
- "thiserror",
- "tracing",
- "url",
-]
-
-[[package]]
-name = "which"
-version = "5.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9bf3ea8596f3a0dd5980b46430f2058dfe2c36a27ccfbb1845d6fbfcd9ba6e14"
-dependencies = [
- "either",
- "home",
- "once_cell",
- "rustix 0.38.20",
- "windows-sys",
-]
-
-[[package]]
-name = "widestring"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8"
-
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-util"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
-dependencies = [
- "winapi",
-]
-
-[[package]]
-name = "winapi-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",
-]
-
-[[package]]
-name = "windows-core"
-version = "0.51.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.48.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
-dependencies = [
- "windows-targets",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
-dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
-]
-
-[[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_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
-
-[[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_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
-
-[[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_gnullvm"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.48.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
-
-[[package]]
-name = "winnow"
-version = "0.5.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3b801d0e0a6726477cc207f60162da452f3a95adb368399bef20a946e06f65c"
-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",
-]
-
-[[package]]
-name = "yansi"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
-
-[[package]]
-name = "yansi"
-version = "1.0.0-rc.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377"
-
-[[package]]
-name = "yubico"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "173f75d2c4010429a2d74ae3a114a69930c59e2b1a4c97b1c75d259a4960d5fb"
-dependencies = [
- "base64 0.13.1",
- "form_urlencoded",
- "futures",
- "hmac",
- "rand",
- "reqwest",
- "sha1",
- "threadpool",
-]
diff --git a/nixpkgs/pkgs/tools/security/vaultwarden/default.nix b/nixpkgs/pkgs/tools/security/vaultwarden/default.nix
index 1239b4fd1c6b..762c8312c1e6 100644
--- a/nixpkgs/pkgs/tools/security/vaultwarden/default.nix
+++ b/nixpkgs/pkgs/tools/security/vaultwarden/default.nix
@@ -9,21 +9,16 @@ in
 
 rustPlatform.buildRustPackage rec {
   pname = "vaultwarden";
-  version = "1.30.0";
+  version = "1.30.1";
 
   src = fetchFromGitHub {
     owner = "dani-garcia";
     repo = pname;
     rev = version;
-    hash = "sha256-mBKedJvb67FR4e8ZzdL8umg9XTgch1OWhbR1k46Lkn4=";
+    hash = "sha256-9JCrEe0tla4v207XPgprLqP3g0BslpX8f7xa9aUhQcg=";
   };
 
-  cargoLock = {
-    lockFile = ./Cargo.lock;
-    outputHashes = {
-      "rocket-0.5.0-rc.3" = "sha256-E71cktkHCbmQyjkjWWJ20KfCm3B/h3jQ2TMluYhvCQw=";
-    };
-  };
+  cargoHash = "sha256-4KyBMOdTAHe5uD6X69gMd0aqIo4w2Rqrlg+25yY2B6o=";
 
   nativeBuildInputs = [ pkg-config ];
   buildInputs = with lib; [ openssl ]
@@ -44,5 +39,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/dani-garcia/vaultwarden";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ msteen ivan ];
+    mainProgram = "vaultwarden";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/webanalyze/default.nix b/nixpkgs/pkgs/tools/security/webanalyze/default.nix
index 3b49b496f62e..7c043c0d0a18 100644
--- a/nixpkgs/pkgs/tools/security/webanalyze/default.nix
+++ b/nixpkgs/pkgs/tools/security/webanalyze/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     changelog = "https://github.com/rverton/webanalyze/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "webanalyze";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/xcrawl3r/default.nix b/nixpkgs/pkgs/tools/security/xcrawl3r/default.nix
index c7b63c238be1..b714d555bafb 100644
--- a/nixpkgs/pkgs/tools/security/xcrawl3r/default.nix
+++ b/nixpkgs/pkgs/tools/security/xcrawl3r/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     changelog = "https://github.com/hueristiq/xcrawl3r/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "xcrawl3r";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/yatas/default.nix b/nixpkgs/pkgs/tools/security/yatas/default.nix
index 057f0c7b18b4..e351ea244f5d 100644
--- a/nixpkgs/pkgs/tools/security/yatas/default.nix
+++ b/nixpkgs/pkgs/tools/security/yatas/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     changelog = "https://github.com/padok-team/YATAS/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "yatas";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/yubihsm-connector/default.nix b/nixpkgs/pkgs/tools/security/yubihsm-connector/default.nix
index 8e56cc6a227e..ab2a29808380 100644
--- a/nixpkgs/pkgs/tools/security/yubihsm-connector/default.nix
+++ b/nixpkgs/pkgs/tools/security/yubihsm-connector/default.nix
@@ -32,5 +32,6 @@ buildGoModule rec {
     homepage = "https://developers.yubico.com/yubihsm-connector/";
     maintainers = with maintainers; [ matthewcroughan ];
     license = licenses.asl20;
+    mainProgram = "yubihsm-connector";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/yubihsm-shell/default.nix b/nixpkgs/pkgs/tools/security/yubihsm-shell/default.nix
index 37ac2ec1ae4e..24d96f43ba43 100644
--- a/nixpkgs/pkgs/tools/security/yubihsm-shell/default.nix
+++ b/nixpkgs/pkgs/tools/security/yubihsm-shell/default.nix
@@ -16,13 +16,13 @@
 
 stdenv.mkDerivation rec {
   pname = "yubihsm-shell";
-  version = "2.4.1";
+  version = "2.4.2";
 
   src = fetchFromGitHub {
     owner = "Yubico";
     repo = "yubihsm-shell";
     rev = version;
-    hash = "sha256-Ucqi+ZAoTkmj/UfdoisNxzDIyjW8j9gf/NR0WZCO4wo=";
+    hash = "sha256-Un3DNmrD9aC9+A3+NNM21yrH1g14THXPHkJ0SUYrL/M=";
   };
 
   postPatch = ''
diff --git a/nixpkgs/pkgs/tools/security/zsteg/Gemfile.lock b/nixpkgs/pkgs/tools/security/zsteg/Gemfile.lock
index b611fb93f5a9..0cd593f60a0f 100644
--- a/nixpkgs/pkgs/tools/security/zsteg/Gemfile.lock
+++ b/nixpkgs/pkgs/tools/security/zsteg/Gemfile.lock
@@ -1,13 +1,19 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    iostruct (0.0.4)
-    rainbow (3.0.0)
-    zpng (0.3.1)
-      rainbow
-    zsteg (0.2.2)
-      iostruct
-      zpng (>= 0.3.1)
+    forwardable (1.3.3)
+    iostruct (0.0.5)
+    prime (0.1.2)
+      forwardable
+      singleton
+    rainbow (3.1.1)
+    singleton (0.2.0)
+    zpng (0.4.5)
+      rainbow (~> 3.1.1)
+    zsteg (0.2.13)
+      iostruct (>= 0.0.5)
+      prime
+      zpng (>= 0.4.5)
 
 PLATFORMS
   ruby
@@ -16,4 +22,4 @@ DEPENDENCIES
   zsteg
 
 BUNDLED WITH
-   2.1.4
+   2.4.13
diff --git a/nixpkgs/pkgs/tools/security/zsteg/default.nix b/nixpkgs/pkgs/tools/security/zsteg/default.nix
index e47f285de70a..a2134d468f00 100644
--- a/nixpkgs/pkgs/tools/security/zsteg/default.nix
+++ b/nixpkgs/pkgs/tools/security/zsteg/default.nix
@@ -11,6 +11,7 @@ bundlerApp {
     description = "Detect stegano-hidden data in PNG & BMP.";
     homepage = "http://zed.0xff.me/";
     license = licenses.mit;
-    maintainers = with maintainers; [ applePrincess ];
+    maintainers = with maintainers; [ applePrincess h7x4 ];
+    mainProgram = "zsteg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/security/zsteg/gemset.nix b/nixpkgs/pkgs/tools/security/zsteg/gemset.nix
index 4f5bd79ce44c..5cb55829a6ac 100644
--- a/nixpkgs/pkgs/tools/security/zsteg/gemset.nix
+++ b/nixpkgs/pkgs/tools/security/zsteg/gemset.nix
@@ -1,23 +1,54 @@
 {
+  forwardable = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1b5g1i3xdvmxxpq4qp0z4v78ivqnazz26w110fh4cvzsdayz8zgi";
+      type = "gem";
+    };
+    version = "1.3.3";
+  };
   iostruct = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0kwp6ryis32j3z7myw8g7v1yszwrwyl04g2c7flr42pwxga1afxc";
+      sha256 = "1z3vnb8mhzns3ybf78vlj5cy6lq4pyfm8n40kqba2s33xccs3kl0";
       type = "gem";
     };
-    version = "0.0.4";
+    version = "0.0.5";
+  };
+  prime = {
+    dependencies = ["forwardable" "singleton"];
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "1973kz8lbck6ga5v42f55jk8b8pnbgwp9p67dl1xw15gvz55dsfl";
+      type = "gem";
+    };
+    version = "0.1.2";
   };
   rainbow = {
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0bb2fpjspydr6x0s8pn1pqkzmxszvkfapv0p4627mywl7ky4zkhk";
+      sha256 = "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503";
+      type = "gem";
+    };
+    version = "3.1.1";
+  };
+  singleton = {
+    groups = ["default"];
+    platforms = [];
+    source = {
+      remotes = ["https://rubygems.org"];
+      sha256 = "0qq54imvbksnckzf9hrq9bjzcdb0n8wfv6l5jc0di10n88277jx6";
       type = "gem";
     };
-    version = "3.0.0";
+    version = "0.2.0";
   };
   zpng = {
     dependencies = ["rainbow"];
@@ -25,20 +56,20 @@
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "0ciyab7qxqsxjhfvr6rbpdzg655fi1zygqg9sd9m6wmgc037dj74";
+      sha256 = "0xyr7ipgls7wci1gnsz340idm69jls0gind0q4f63ccjwgzsfkqw";
       type = "gem";
     };
-    version = "0.3.1";
+    version = "0.4.5";
   };
   zsteg = {
-    dependencies = ["iostruct" "zpng"];
+    dependencies = ["iostruct" "prime" "zpng"];
     groups = ["default"];
     platforms = [];
     source = {
       remotes = ["https://rubygems.org"];
-      sha256 = "1mwajlsgs27449n2yf2f9hz8g46qv9bz9f58i9cz1jg58spvpxpk";
+      sha256 = "128kbv9vsi288mj17zwvc45ijpzf3p116vk9kcvkz978hz0n6spm";
       type = "gem";
     };
-    version = "0.2.2";
+    version = "0.2.13";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/actkbd/default.nix b/nixpkgs/pkgs/tools/system/actkbd/default.nix
index 61be7e5a4a92..5dd024e573d4 100644
--- a/nixpkgs/pkgs/tools/system/actkbd/default.nix
+++ b/nixpkgs/pkgs/tools/system/actkbd/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     homepage = "http://users.softlab.ece.ntua.gr/~thkala/projects/actkbd/";
     platforms = platforms.linux;
+    mainProgram = "actkbd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/amdgpu_top/Cargo.lock b/nixpkgs/pkgs/tools/system/amdgpu_top/Cargo.lock
index 4cdf08310103..f19bf1d67a41 100644
--- a/nixpkgs/pkgs/tools/system/amdgpu_top/Cargo.lock
+++ b/nixpkgs/pkgs/tools/system/amdgpu_top/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
 
 [[package]]
 name = "ab_glyph"
-version = "0.2.20"
+version = "0.2.23"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe21446ad43aa56417a767f3e2f3d7c4ca522904de1dd640529a76e9c5c3b33c"
+checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225"
 dependencies = [
  "ab_glyph_rasterizer",
  "owned_ttf_parser",
@@ -20,9 +20,9 @@ checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046"
 
 [[package]]
 name = "accesskit"
-version = "0.11.0"
+version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02c98a5d094590335462354da402d754fe2cb78f0e6ce5024611c28ed539c1de"
+checksum = "76eb1adf08c5bcaa8490b9851fd53cca27fa9880076f178ea9d29f05196728a8"
 dependencies = [
  "enumn",
  "serde",
@@ -36,38 +36,54 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
 
 [[package]]
 name = "ahash"
-version = "0.8.3"
+version = "0.8.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
+checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
 dependencies = [
  "cfg-if",
  "getrandom",
  "once_cell",
  "serde",
  "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+dependencies = [
+ "memchr",
 ]
 
 [[package]]
 name = "amdgpu_top"
-version = "0.1.11"
+version = "0.3.1"
 dependencies = [
  "amdgpu_top_gui",
  "amdgpu_top_json",
  "amdgpu_top_tui",
+ "gix",
  "libamdgpu_top",
 ]
 
 [[package]]
 name = "amdgpu_top_gui"
-version = "0.1.0"
+version = "0.3.1"
 dependencies = [
  "eframe",
+ "egui_plot",
+ "i18n-embed",
+ "i18n-embed-fl",
  "libamdgpu_top",
+ "once_cell",
+ "rust-embed",
 ]
 
 [[package]]
 name = "amdgpu_top_json"
-version = "0.1.0"
+version = "0.3.1"
 dependencies = [
  "libamdgpu_top",
  "serde_json",
@@ -75,7 +91,7 @@ dependencies = [
 
 [[package]]
 name = "amdgpu_top_tui"
-version = "0.1.0"
+version = "0.3.1"
 dependencies = [
  "cursive",
  "libamdgpu_top",
@@ -83,12 +99,12 @@ dependencies = [
 
 [[package]]
 name = "android-activity"
-version = "0.4.1"
+version = "0.4.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7c77a0045eda8b888c76ea473c2b0515ba6f471d318f8927c5c72240937035a6"
+checksum = "64529721f27c2314ced0890ce45e469574a73e5e6fdd6e9da1860eb29285f5e0"
 dependencies = [
  "android-properties",
- "bitflags",
+ "bitflags 1.3.2",
  "cc",
  "jni-sys",
  "libc",
@@ -96,7 +112,7 @@ dependencies = [
  "ndk",
  "ndk-context",
  "ndk-sys",
- "num_enum",
+ "num_enum 0.6.1",
 ]
 
 [[package]]
@@ -107,22 +123,21 @@ checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
 
 [[package]]
 name = "anyhow"
-version = "1.0.71"
+version = "1.0.75"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
+checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
 
 [[package]]
 name = "arboard"
-version = "3.2.0"
+version = "3.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6041616acea41d67c4a984709ddab1587fd0b10efe5cc563fee954d2f011854"
+checksum = "ac57f2b058a76363e357c056e4f74f1945bf734d37b8b3ef49066c4787dde0fc"
 dependencies = [
  "clipboard-win",
  "log",
  "objc",
  "objc-foundation",
  "objc_id",
- "once_cell",
  "parking_lot",
  "thiserror",
  "winapi",
@@ -130,22 +145,10 @@ dependencies = [
 ]
 
 [[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.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
-
-[[package]]
-name = "atomic_refcell"
-version = "0.1.9"
+name = "arc-swap"
+version = "1.6.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "857253367827bd9d0fd973f0ef15506a96e79e41b0ad7aa691203a4e3214f6c8"
+checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
 
 [[package]]
 name = "autocfg"
@@ -155,9 +158,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 
 [[package]]
 name = "base64"
-version = "0.13.1"
+version = "0.21.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
 
 [[package]]
 name = "bitflags"
@@ -166,12 +169,30 @@ 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"
+dependencies = [
+ "serde",
+]
+
+[[package]]
 name = "block"
 version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
 
 [[package]]
+name = "block-buffer"
+version = "0.10.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+dependencies = [
+ "generic-array",
+]
+
+[[package]]
 name = "block-sys"
 version = "0.1.0-beta.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -191,49 +212,70 @@ dependencies = [
 ]
 
 [[package]]
+name = "bstr"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c"
+dependencies = [
+ "memchr",
+ "regex-automata",
+ "serde",
+]
+
+[[package]]
+name = "btoi"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd6407f73a9b8b6162d8a2ef999fe6afd7cc15902ebf42c5cd296addf17e0ad"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
 name = "bumpalo"
-version = "3.12.0"
+version = "3.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
+checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
 
 [[package]]
 name = "bytemuck"
-version = "1.13.1"
+version = "1.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea"
+checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
 dependencies = [
  "bytemuck_derive",
 ]
 
 [[package]]
 name = "bytemuck_derive"
-version = "1.4.1"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192"
+checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.15",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "byteorder"
-version = "1.4.3"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
 
 [[package]]
 name = "bytes"
-version = "1.4.0"
+version = "1.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be"
+checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
 
 [[package]]
 name = "calloop"
-version = "0.10.5"
+version = "0.10.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a59225be45a478d772ce015d9743e49e92798ece9e34eda9a6aa2a6a7f40192"
+checksum = "52e0d00eb1ea24371a97d2da6201c6747a633dc6dc1988ef503403b4c59504a8"
 dependencies = [
+ "bitflags 1.3.2",
  "log",
  "nix 0.25.1",
  "slotmap",
@@ -243,11 +285,12 @@ dependencies = [
 
 [[package]]
 name = "cc"
-version = "1.0.79"
+version = "1.0.83"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
 dependencies = [
  "jobserver",
+ "libc",
 ]
 
 [[package]]
@@ -289,12 +332,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "clru"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8191fa7302e03607ff0e237d4246cc043ff5b3cb9409d995172ba3bea16b807"
+
+[[package]]
 name = "cocoa"
 version = "0.24.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "block",
  "cocoa-foundation",
  "core-foundation",
@@ -306,15 +355,14 @@ dependencies = [
 
 [[package]]
 name = "cocoa-foundation"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "931d3837c286f56e3c58423ce4eba12d08db2374461a785c86f672b08b5650d6"
+checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "block",
  "core-foundation",
  "core-graphics-types",
- "foreign-types",
  "libc",
  "objc",
 ]
@@ -357,7 +405,7 @@ version = "0.22.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "core-foundation",
  "core-graphics-types",
  "foreign-types",
@@ -366,13 +414,21 @@ dependencies = [
 
 [[package]]
 name = "core-graphics-types"
-version = "0.1.1"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b"
+checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "core-foundation",
- "foreign-types",
+ "libc",
+]
+
+[[package]]
+name = "cpufeatures"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
+dependencies = [
  "libc",
 ]
 
@@ -387,9 +443,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-channel"
-version = "0.5.7"
+version = "0.5.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
+checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200"
 dependencies = [
  "cfg-if",
  "crossbeam-utils",
@@ -397,9 +453,9 @@ dependencies = [
 
 [[package]]
 name = "crossbeam-utils"
-version = "0.8.15"
+version = "0.8.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
+checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
 dependencies = [
  "cfg-if",
 ]
@@ -410,7 +466,7 @@ version = "0.25.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "crossterm_winapi",
  "libc",
  "mio",
@@ -422,14 +478,24 @@ dependencies = [
 
 [[package]]
 name = "crossterm_winapi"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c"
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
 dependencies = [
  "winapi",
 ]
 
 [[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 = "cursive"
 version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -470,9 +536,9 @@ dependencies = [
 
 [[package]]
 name = "darling"
-version = "0.14.4"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
+checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e"
 dependencies = [
  "darling_core",
  "darling_macro",
@@ -480,56 +546,68 @@ dependencies = [
 
 [[package]]
 name = "darling_core"
-version = "0.14.4"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0"
+checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621"
 dependencies = [
  "fnv",
  "ident_case",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "darling_macro"
-version = "0.14.4"
+version = "0.20.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
+checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
 dependencies = [
  "darling_core",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.39",
 ]
 
 [[package]]
-name = "directories-next"
-version = "2.0.0"
+name = "dashmap"
+version = "5.5.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc"
+checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
 dependencies = [
  "cfg-if",
- "dirs-sys-next",
+ "hashbrown",
+ "lock_api",
+ "once_cell",
+ "parking_lot_core",
 ]
 
 [[package]]
-name = "dirs"
-version = "4.0.0"
+name = "deranged"
+version = "0.3.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059"
+checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
 dependencies = [
- "dirs-sys",
+ "powerfmt",
 ]
 
 [[package]]
-name = "dirs-sys"
-version = "0.3.7"
+name = "digest"
+version = "0.10.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6"
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
 dependencies = [
- "libc",
- "redox_users",
- "winapi",
+ "block-buffer",
+ "crypto-common",
+]
+
+[[package]]
+name = "directories-next"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc"
+dependencies = [
+ "cfg-if",
+ "dirs-sys-next",
 ]
 
 [[package]]
@@ -550,12 +628,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
 
 [[package]]
+name = "displaydoc"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.39",
+]
+
+[[package]]
 name = "dlib"
-version = "0.5.0"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794"
+checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
 dependencies = [
- "libloading",
+ "libloading 0.8.1",
 ]
 
 [[package]]
@@ -565,10 +654,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
 
 [[package]]
+name = "dunce"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
+
+[[package]]
 name = "ecolor"
-version = "0.22.0"
+version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e479a7fa3f23d4e794f8b2f8b3568dd4e47886ad1b12c9c095e141cb591eb63"
+checksum = "cfdf4e52dbbb615cfd30cf5a5265335c217b5fd8d669593cea74a517d9c605af"
 dependencies = [
  "bytemuck",
  "serde",
@@ -576,9 +671,9 @@ dependencies = [
 
 [[package]]
 name = "eframe"
-version = "0.22.0"
+version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf4596583a2c680c55b6feaa748f74890c4f9cb9c7cb69d6117110444cb65b2f"
+checksum = "26d9efede6c8905d3fc51a5ec9a506d4da4011bbcae0253d0304580fe40af3f5"
 dependencies = [
  "bytemuck",
  "cocoa",
@@ -593,10 +688,12 @@ dependencies = [
  "js-sys",
  "log",
  "objc",
+ "parking_lot",
  "percent-encoding",
  "raw-window-handle",
  "ron",
  "serde",
+ "static_assertions",
  "thiserror",
  "wasm-bindgen",
  "wasm-bindgen-futures",
@@ -607,9 +704,9 @@ dependencies = [
 
 [[package]]
 name = "egui"
-version = "0.22.0"
+version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a3aef8ec3ae1b772f340170c65bf27d5b8c28f543a0116c844d2ac08d01123e7"
+checksum = "8bd69fed5fcf4fbb8225b24e80ea6193b61e17a625db105ef0c4d71dde6eb8b7"
 dependencies = [
  "accesskit",
  "ahash",
@@ -622,26 +719,26 @@ dependencies = [
 
 [[package]]
 name = "egui-winit"
-version = "0.22.0"
+version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a49155fd4a0a4fb21224407a91de0030847972ef90fc64edb63621caea61cb2"
+checksum = "c15479a96d9fadccf5dac690bdc6373b97b8e1c0dd28367058f25a5298da0195"
 dependencies = [
  "arboard",
  "egui",
- "instant",
  "log",
  "raw-window-handle",
  "serde",
  "smithay-clipboard",
+ "web-time",
  "webbrowser",
  "winit",
 ]
 
 [[package]]
 name = "egui_glow"
-version = "0.22.0"
+version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f8c2752cdf1b0ef5fcda59a898cacabad974d4f5880e92a420b2c917022da64"
+checksum = "ce6726c08798822280038bbad2e32f4fc3cbed800cd51c6e34e99cd2d60cc1bc"
 dependencies = [
  "bytemuck",
  "egui",
@@ -653,10 +750,19 @@ dependencies = [
 ]
 
 [[package]]
+name = "egui_plot"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7f33a00fe8eb1ba56535b3dbacdecc7a1365a328908a97c5f3c81bb466be72b"
+dependencies = [
+ "egui",
+]
+
+[[package]]
 name = "emath"
-version = "0.22.0"
+version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3857d743a6e0741cdd60b622a74c7a36ea75f5f8f11b793b41d905d2c9721a4b"
+checksum = "1ef2b29de53074e575c18b694167ccbe6e5191f7b25fe65175a0d905a32eeec0"
 dependencies = [
  "bytemuck",
  "serde",
@@ -664,65 +770,64 @@ dependencies = [
 
 [[package]]
 name = "enum-map"
-version = "2.5.0"
+version = "2.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "988f0d17a0fa38291e5f41f71ea8d46a5d5497b9054d5a759fae2cbb819f2356"
+checksum = "ed40247825a1a0393b91b51d475ea1063a6cbbf0847592e7f13fb427aca6a716"
 dependencies = [
  "enum-map-derive",
 ]
 
 [[package]]
 name = "enum-map-derive"
-version = "0.11.0"
+version = "0.15.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a4da76b3b6116d758c7ba93f7ec6a35d2e2cf24feda76c6e38a375f4d5c59f2"
+checksum = "7933cd46e720348d29ed1493f89df9792563f272f96d8f13d18afe03b32f8cb8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "enumn"
-version = "0.1.8"
+version = "0.1.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48016319042fb7c87b78d2993084a831793a897a5cd1a2a67cab9d1eeb4b7d76"
+checksum = "c2ad8cef1d801a4686bfd8919f0b30eac4c8e48968c437a6405ded4fb5272d2b"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.15",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "enumset"
-version = "1.0.12"
+version = "1.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19be8061a06ab6f3a6cf21106c873578bf01bd42ad15e0311a9c76161cb1c753"
+checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d"
 dependencies = [
  "enumset_derive",
 ]
 
 [[package]]
 name = "enumset_derive"
-version = "0.6.1"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03e7b551eba279bf0fa88b83a46330168c1560a52a94f5126f892f0b364ab3e0"
+checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af"
 dependencies = [
  "darling",
  "proc-macro2",
  "quote",
- "syn 1.0.109",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "epaint"
-version = "0.22.0"
+version = "0.23.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09333964d4d57f40a85338ba3ca5ed4716070ab184dcfed966b35491c5c64f3b"
+checksum = "58067b840d009143934d91d8dcb8ded054d8301d7c11a517ace0a99bb1e1595e"
 dependencies = [
  "ab_glyph",
  "ahash",
- "atomic_refcell",
  "bytemuck",
  "ecolor",
  "emath",
@@ -733,6 +838,22 @@ dependencies = [
 ]
 
 [[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.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e"
+dependencies = [
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
 name = "error-code"
 version = "2.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -743,22 +864,90 @@ dependencies = [
 ]
 
 [[package]]
+name = "faster-hex"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "239f7bfb930f820ab16a9cd95afc26f88264cf6905c960b340a615384aa3338a"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+
+[[package]]
 name = "fdeflate"
-version = "0.3.0"
+version = "0.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10"
+checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868"
 dependencies = [
  "simd-adler32",
 ]
 
 [[package]]
+name = "find-crate"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2"
+dependencies = [
+ "toml 0.5.11",
+]
+
+[[package]]
 name = "flate2"
-version = "1.0.25"
+version = "1.0.28"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841"
+checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e"
 dependencies = [
  "crc32fast",
- "miniz_oxide 0.6.2",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fluent"
+version = "0.16.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7"
+dependencies = [
+ "fluent-bundle",
+ "unic-langid",
+]
+
+[[package]]
+name = "fluent-bundle"
+version = "0.15.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd"
+dependencies = [
+ "fluent-langneg",
+ "fluent-syntax",
+ "intl-memoizer",
+ "intl_pluralrules",
+ "rustc-hash",
+ "self_cell",
+ "smallvec",
+ "unic-langid",
+]
+
+[[package]]
+name = "fluent-langneg"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94"
+dependencies = [
+ "unic-langid",
+]
+
+[[package]]
+name = "fluent-syntax"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78"
+dependencies = [
+ "thiserror",
 ]
 
 [[package]]
@@ -784,14 +973,24 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
 
 [[package]]
 name = "form_urlencoded"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
 dependencies = [
  "percent-encoding",
 ]
 
 [[package]]
+name = "generic-array"
+version = "0.14.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+dependencies = [
+ "typenum",
+ "version_check",
+]
+
+[[package]]
 name = "gethostname"
 version = "0.2.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -803,9 +1002,9 @@ dependencies = [
 
 [[package]]
 name = "getrandom"
-version = "0.2.9"
+version = "0.2.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
+checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
 dependencies = [
  "cfg-if",
  "libc",
@@ -813,6 +1012,466 @@ dependencies = [
 ]
 
 [[package]]
+name = "gix"
+version = "0.55.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "002667cd1ebb789313d0d0afe3d23b2821cf3b0e91605095f0e6d8751f0ceeea"
+dependencies = [
+ "gix-actor",
+ "gix-commitgraph",
+ "gix-config",
+ "gix-date",
+ "gix-diff",
+ "gix-discover",
+ "gix-features",
+ "gix-fs",
+ "gix-glob",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-lock",
+ "gix-macros",
+ "gix-object",
+ "gix-odb",
+ "gix-pack",
+ "gix-path",
+ "gix-ref",
+ "gix-refspec",
+ "gix-revision",
+ "gix-revwalk",
+ "gix-sec",
+ "gix-tempfile",
+ "gix-trace",
+ "gix-traverse",
+ "gix-url",
+ "gix-utils",
+ "gix-validate",
+ "once_cell",
+ "parking_lot",
+ "smallvec",
+ "thiserror",
+ "unicode-normalization",
+]
+
+[[package]]
+name = "gix-actor"
+version = "0.28.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "948a5f9e43559d16faf583694f1c742eb401ce24ce8e6f2238caedea7486433c"
+dependencies = [
+ "bstr",
+ "btoi",
+ "gix-date",
+ "itoa",
+ "thiserror",
+ "winnow",
+]
+
+[[package]]
+name = "gix-chunk"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b42ea64420f7994000130328f3c7a2038f639120518870436d31b8bde704493"
+dependencies = [
+ "thiserror",
+]
+
+[[package]]
+name = "gix-commitgraph"
+version = "0.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7e8bc78b1a6328fa6d8b3a53b6c73997af37fd6bfc1d6c49f149e63bda5cbb36"
+dependencies = [
+ "bstr",
+ "gix-chunk",
+ "gix-features",
+ "gix-hash",
+ "memmap2 0.7.1",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-config"
+version = "0.31.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5cae98c6b4c66c09379bc35274b172587d6b0ac369a416c39128ad8c6454f9bb"
+dependencies = [
+ "bstr",
+ "gix-config-value",
+ "gix-features",
+ "gix-glob",
+ "gix-path",
+ "gix-ref",
+ "gix-sec",
+ "memchr",
+ "once_cell",
+ "smallvec",
+ "thiserror",
+ "unicode-bom",
+ "winnow",
+]
+
+[[package]]
+name = "gix-config-value"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea7505b97f4d8e7933e29735a568ba2f86d8de466669d9f0e8321384f9972f47"
+dependencies = [
+ "bitflags 2.4.1",
+ "bstr",
+ "gix-path",
+ "libc",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-date"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc7df669639582dc7c02737642f76890b03b5544e141caba68a7d6b4eb551e0d"
+dependencies = [
+ "bstr",
+ "itoa",
+ "thiserror",
+ "time",
+]
+
+[[package]]
+name = "gix-diff"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "931394f69fb8c9ed6afc0aae3487bd869e936339bcc13ed8884472af072e0554"
+dependencies = [
+ "gix-hash",
+ "gix-object",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-discover"
+version = "0.26.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a45d5cf0321178883e38705ab2b098f625d609a7d4c391b33ac952eff2c490f2"
+dependencies = [
+ "bstr",
+ "dunce",
+ "gix-hash",
+ "gix-path",
+ "gix-ref",
+ "gix-sec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-features"
+version = "0.36.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51f4365ba17c4f218d7fd9ec102b8d2d3cb0ca200a835e81151ace7778aec827"
+dependencies = [
+ "crc32fast",
+ "flate2",
+ "gix-hash",
+ "gix-trace",
+ "libc",
+ "once_cell",
+ "prodash",
+ "sha1_smol",
+ "thiserror",
+ "walkdir",
+]
+
+[[package]]
+name = "gix-fs"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cd171c0cae97cd0dc57e7b4601cb1ebf596450e263ef3c02be9107272c877bd"
+dependencies = [
+ "gix-features",
+]
+
+[[package]]
+name = "gix-glob"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fac08925dbc14d414bd02eb45ffb4cecd912d1fce3883f867bd0103c192d3e4"
+dependencies = [
+ "bitflags 2.4.1",
+ "bstr",
+ "gix-features",
+ "gix-path",
+]
+
+[[package]]
+name = "gix-hash"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1884c7b41ea0875217c1be9ce91322f90bde433e91d374d0e1276073a51ccc60"
+dependencies = [
+ "faster-hex",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-hashtable"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "409268480841ad008e81c17ca5a293393fbf9f2b6c2f85b8ab9de1f0c5176a16"
+dependencies = [
+ "gix-hash",
+ "hashbrown",
+ "parking_lot",
+]
+
+[[package]]
+name = "gix-lock"
+version = "11.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4feb1dcd304fe384ddc22edba9dd56a42b0800032de6537728cea2f033a4f37"
+dependencies = [
+ "gix-tempfile",
+ "gix-utils",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-macros"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d8acb5ee668d55f0f2d19a320a3f9ef67a6999ad483e11135abcc2464ed18b6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.39",
+]
+
+[[package]]
+name = "gix-object"
+version = "0.38.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "740f2a44267f58770a1cb3a3d01d14e67b089c7136c48d4bddbb3cfd2bf86a51"
+dependencies = [
+ "bstr",
+ "btoi",
+ "gix-actor",
+ "gix-date",
+ "gix-features",
+ "gix-hash",
+ "gix-validate",
+ "itoa",
+ "smallvec",
+ "thiserror",
+ "winnow",
+]
+
+[[package]]
+name = "gix-odb"
+version = "0.54.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8630b56cb80d8fa684d383dad006a66401ee8314e12fbf0e566ddad8c115143b"
+dependencies = [
+ "arc-swap",
+ "gix-date",
+ "gix-features",
+ "gix-hash",
+ "gix-object",
+ "gix-pack",
+ "gix-path",
+ "gix-quote",
+ "parking_lot",
+ "tempfile",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-pack"
+version = "0.44.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1431ba2e30deff1405920693d54ab231c88d7c240dd6ccc936ee223d8f8697c3"
+dependencies = [
+ "clru",
+ "gix-chunk",
+ "gix-features",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-object",
+ "gix-path",
+ "gix-tempfile",
+ "memmap2 0.7.1",
+ "parking_lot",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-path"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a1d370115171e3ae03c5c6d4f7d096f2981a40ddccb98dfd704c773530ba73b"
+dependencies = [
+ "bstr",
+ "gix-trace",
+ "home",
+ "once_cell",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-quote"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "475c86a97dd0127ba4465fbb239abac9ea10e68301470c9791a6dd5351cdc905"
+dependencies = [
+ "bstr",
+ "btoi",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-ref"
+version = "0.38.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ec2f6d07ac88d2fb8007ee3fa3e801856fb9d82e7366ec0ca332eb2c9d74a52"
+dependencies = [
+ "gix-actor",
+ "gix-date",
+ "gix-features",
+ "gix-fs",
+ "gix-hash",
+ "gix-lock",
+ "gix-object",
+ "gix-path",
+ "gix-tempfile",
+ "gix-validate",
+ "memmap2 0.7.1",
+ "thiserror",
+ "winnow",
+]
+
+[[package]]
+name = "gix-refspec"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccb0974cc41dbdb43a180c7f67aa481e1c1e160fcfa8f4a55291fd1126c1a6e7"
+dependencies = [
+ "bstr",
+ "gix-hash",
+ "gix-revision",
+ "gix-validate",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-revision"
+version = "0.23.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ca97ac73459a7f3766aa4a5638a6e37d56d4c7962bc1986fbaf4883d0772588"
+dependencies = [
+ "bstr",
+ "gix-date",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-object",
+ "gix-revwalk",
+ "gix-trace",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-revwalk"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a16d8c892e4cd676d86f0265bf9d40cefd73d8d94f86b213b8b77d50e77efae0"
+dependencies = [
+ "gix-commitgraph",
+ "gix-date",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-object",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-sec"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92b9542ac025a8c02ed5d17b3fc031a111a384e859d0be3532ec4d58c40a0f28"
+dependencies = [
+ "bitflags 2.4.1",
+ "gix-path",
+ "libc",
+ "windows",
+]
+
+[[package]]
+name = "gix-tempfile"
+version = "11.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05cc2205cf10d99f70b96e04e16c55d4c7cf33efc151df1f793e29fd12a931f8"
+dependencies = [
+ "gix-fs",
+ "libc",
+ "once_cell",
+ "parking_lot",
+ "tempfile",
+]
+
+[[package]]
+name = "gix-trace"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96b6d623a1152c3facb79067d6e2ecdae48130030cf27d6eb21109f13bd7b836"
+
+[[package]]
+name = "gix-traverse"
+version = "0.34.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "14d050ec7d4e1bb76abf0636cf4104fb915b70e54e3ced9a4427c999100ff38a"
+dependencies = [
+ "gix-commitgraph",
+ "gix-date",
+ "gix-hash",
+ "gix-hashtable",
+ "gix-object",
+ "gix-revwalk",
+ "smallvec",
+ "thiserror",
+]
+
+[[package]]
+name = "gix-url"
+version = "0.25.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b1b9ac8ed32ad45f9fc6c5f8c0be2ed911e544a5a19afd62d95d524ebaa95671"
+dependencies = [
+ "bstr",
+ "gix-features",
+ "gix-path",
+ "home",
+ "thiserror",
+ "url",
+]
+
+[[package]]
+name = "gix-utils"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b85d89dc728613e26e0ed952a19583744e7f5240fcd4aa30d6c824ffd8b52f0f"
+dependencies = [
+ "fastrand",
+]
+
+[[package]]
+name = "gix-validate"
+version = "0.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e05cab2b03a45b866156e052aa38619f4ece4adcb2f79978bfc249bc3b21b8c5"
+dependencies = [
+ "bstr",
+ "thiserror",
+]
+
+[[package]]
 name = "gl_generator"
 version = "0.14.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -825,9 +1484,9 @@ dependencies = [
 
 [[package]]
 name = "glow"
-version = "0.12.1"
+version = "0.12.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e007a07a24de5ecae94160f141029e9a347282cfe25d1d58d85d845cf3130f1"
+checksum = "ca0fe580e4b60a8ab24a868bc08e2f03cbcb20d3d676601fa909386713333728"
 dependencies = [
  "js-sys",
  "slotmap",
@@ -837,11 +1496,11 @@ dependencies = [
 
 [[package]]
 name = "glutin"
-version = "0.30.7"
+version = "0.30.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f89bab9ec7715de13d5d5402238e66f48e3a5ae636ebb45aba4013c962e2ff15"
+checksum = "8fc93b03242719b8ad39fb26ed2b01737144ce7bd4bfc7adadcef806596760fe"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cfg_aliases",
  "cgl",
  "core-foundation",
@@ -849,12 +1508,12 @@ dependencies = [
  "glutin_egl_sys",
  "glutin_glx_sys",
  "glutin_wgl_sys",
- "libloading",
+ "libloading 0.7.4",
  "objc2",
  "once_cell",
  "raw-window-handle",
  "wayland-sys 0.30.1",
- "windows-sys",
+ "windows-sys 0.45.0",
  "x11-dl",
 ]
 
@@ -872,12 +1531,12 @@ dependencies = [
 
 [[package]]
 name = "glutin_egl_sys"
-version = "0.4.0"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5aaf0abb5c4148685b33101ae326a207946b4d3764d6cdc79f8316cdaa8367d"
+checksum = "af784eb26c5a68ec85391268e074f0aa618c096eadb5d6330b0911cf34fe57c5"
 dependencies = [
  "gl_generator",
- "windows-sys",
+ "windows-sys 0.45.0",
 ]
 
 [[package]]
@@ -901,9 +1560,88 @@ dependencies = [
 
 [[package]]
 name = "hashbrown"
-version = "0.12.3"
+version = "0.14.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
+
+[[package]]
+name = "home"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "i18n-config"
+version = "0.4.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+checksum = "0c9ce3c48cbc21fd5b22b9331f32b5b51f6ad85d969b99e793427332e76e7640"
+dependencies = [
+ "log",
+ "serde",
+ "serde_derive",
+ "thiserror",
+ "toml 0.8.8",
+ "unic-langid",
+]
+
+[[package]]
+name = "i18n-embed"
+version = "0.14.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94205d95764f5bb9db9ea98fa77f89653365ca748e27161f5bbea2ffd50e459c"
+dependencies = [
+ "arc-swap",
+ "fluent",
+ "fluent-langneg",
+ "fluent-syntax",
+ "i18n-embed-impl",
+ "intl-memoizer",
+ "lazy_static",
+ "locale_config",
+ "log",
+ "parking_lot",
+ "rust-embed",
+ "thiserror",
+ "unic-langid",
+ "walkdir",
+]
+
+[[package]]
+name = "i18n-embed-fl"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fc1f8715195dffc4caddcf1cf3128da15fe5d8a137606ea8856c9300047d5a2"
+dependencies = [
+ "dashmap",
+ "find-crate",
+ "fluent",
+ "fluent-syntax",
+ "i18n-config",
+ "i18n-embed",
+ "lazy_static",
+ "proc-macro-error",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn 2.0.39",
+ "unic-langid",
+]
+
+[[package]]
+name = "i18n-embed-impl"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2a4d5bff745c9a6e1459c490059281b353a4ab0a4e1e58b3eeeaef71f97d07b"
+dependencies = [
+ "find-crate",
+ "i18n-config",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.39",
+]
 
 [[package]]
 name = "ident_case"
@@ -913,9 +1651,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
 
 [[package]]
 name = "idna"
-version = "0.3.0"
+version = "0.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
+checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
 dependencies = [
  "unicode-bidi",
  "unicode-normalization",
@@ -923,9 +1661,9 @@ dependencies = [
 
 [[package]]
 name = "image"
-version = "0.24.6"
+version = "0.24.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a"
+checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711"
 dependencies = [
  "bytemuck",
  "byteorder",
@@ -937,11 +1675,11 @@ dependencies = [
 
 [[package]]
 name = "indexmap"
-version = "1.9.3"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
 dependencies = [
- "autocfg",
+ "equivalent",
  "hashbrown",
 ]
 
@@ -958,10 +1696,29 @@ dependencies = [
 ]
 
 [[package]]
+name = "intl-memoizer"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f"
+dependencies = [
+ "type-map",
+ "unic-langid",
+]
+
+[[package]]
+name = "intl_pluralrules"
+version = "7.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972"
+dependencies = [
+ "unic-langid",
+]
+
+[[package]]
 name = "itoa"
-version = "1.0.6"
+version = "1.0.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
 
 [[package]]
 name = "jni"
@@ -976,7 +1733,7 @@ dependencies = [
  "log",
  "thiserror",
  "walkdir",
- "windows-sys",
+ "windows-sys 0.45.0",
 ]
 
 [[package]]
@@ -987,18 +1744,18 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
 
 [[package]]
 name = "jobserver"
-version = "0.1.26"
+version = "0.1.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2"
+checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d"
 dependencies = [
  "libc",
 ]
 
 [[package]]
 name = "js-sys"
-version = "0.3.61"
+version = "0.3.65"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
+checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
 dependencies = [
  "wasm-bindgen",
 ]
@@ -1017,7 +1774,7 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 
 [[package]]
 name = "libamdgpu_top"
-version = "0.1.10"
+version = "0.3.1"
 dependencies = [
  "anyhow",
  "libdrm_amdgpu_sys",
@@ -1025,15 +1782,14 @@ dependencies = [
 
 [[package]]
 name = "libc"
-version = "0.2.141"
+version = "0.2.150"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3304a64d199bb964be99741b7a14d26972741915b3649639149b2479bb46f4b5"
+checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
 
 [[package]]
 name = "libdrm_amdgpu_sys"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e6441089848c428085639f12ef420bcae8ac6650f4cf1d7f9215611a34176bb"
+version = "0.2.2"
+source = "git+https://github.com/Umio-Yasuno/libdrm-amdgpu-sys-rs#39b31fd54578d332f8085c033a1ef073b627be6e"
 dependencies = [
  "libc",
 ]
@@ -1049,10 +1805,61 @@ dependencies = [
 ]
 
 [[package]]
+name = "libloading"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161"
+dependencies = [
+ "cfg-if",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "libredox"
+version = "0.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8"
+dependencies = [
+ "bitflags 2.4.1",
+ "libc",
+ "redox_syscall 0.4.1",
+]
+
+[[package]]
+name = "libredox"
+version = "0.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607"
+dependencies = [
+ "bitflags 2.4.1",
+ "libc",
+ "redox_syscall 0.4.1",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829"
+
+[[package]]
+name = "locale_config"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934"
+dependencies = [
+ "lazy_static",
+ "objc",
+ "objc-foundation",
+ "regex",
+ "winapi",
+]
+
+[[package]]
 name = "lock_api"
-version = "0.4.9"
+version = "0.4.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
+checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
 dependencies = [
  "autocfg",
  "scopeguard",
@@ -1060,12 +1867,9 @@ dependencies = [
 
 [[package]]
 name = "log"
-version = "0.4.17"
+version = "0.4.20"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
-dependencies = [
- "cfg-if",
-]
+checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
 
 [[package]]
 name = "malloc_buf"
@@ -1078,9 +1882,9 @@ dependencies = [
 
 [[package]]
 name = "memchr"
-version = "2.5.0"
+version = "2.6.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
 
 [[package]]
 name = "memmap2"
@@ -1092,6 +1896,15 @@ dependencies = [
 ]
 
 [[package]]
+name = "memmap2"
+version = "0.7.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6"
+dependencies = [
+ "libc",
+]
+
+[[package]]
 name = "memoffset"
 version = "0.6.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1108,15 +1921,6 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
 
 [[package]]
 name = "miniz_oxide"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa"
-dependencies = [
- "adler",
-]
-
-[[package]]
-name = "miniz_oxide"
 version = "0.7.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
@@ -1127,14 +1931,14 @@ dependencies = [
 
 [[package]]
 name = "mio"
-version = "0.8.6"
+version = "0.8.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9"
+checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0"
 dependencies = [
  "libc",
  "log",
  "wasi",
- "windows-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
@@ -1143,10 +1947,10 @@ version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "jni-sys",
  "ndk-sys",
- "num_enum",
+ "num_enum 0.5.11",
  "raw-window-handle",
  "thiserror",
 ]
@@ -1172,7 +1976,7 @@ version = "0.24.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if",
  "libc",
  "memoffset",
@@ -1185,7 +1989,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "f346ff70e7dbfd675fe90590b92d59ef2de15a8779ae305ebcbfd3f0caf59be4"
 dependencies = [
  "autocfg",
- "bitflags",
+ "bitflags 1.3.2",
  "cfg-if",
  "libc",
  "memoffset",
@@ -1209,9 +2013,9 @@ dependencies = [
 
 [[package]]
 name = "num"
-version = "0.4.0"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
+checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
 dependencies = [
  "num-complex",
  "num-integer",
@@ -1222,9 +2026,9 @@ dependencies = [
 
 [[package]]
 name = "num-complex"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d"
+checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
 dependencies = [
  "num-traits",
 ]
@@ -1263,9 +2067,9 @@ dependencies = [
 
 [[package]]
 name = "num-traits"
-version = "0.2.15"
+version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
 dependencies = [
  "autocfg",
 ]
@@ -1276,7 +2080,16 @@ version = "0.5.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9"
 dependencies = [
- "num_enum_derive",
+ "num_enum_derive 0.5.11",
+]
+
+[[package]]
+name = "num_enum"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1"
+dependencies = [
+ "num_enum_derive 0.6.1",
 ]
 
 [[package]]
@@ -1292,6 +2105,18 @@ dependencies = [
 ]
 
 [[package]]
+name = "num_enum_derive"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6"
+dependencies = [
+ "proc-macro-crate",
+ "proc-macro2",
+ "quote",
+ "syn 2.0.39",
+]
+
+[[package]]
 name = "num_threads"
 version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1328,9 +2153,9 @@ checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7"
 
 [[package]]
 name = "objc2"
-version = "0.3.0-beta.3"
+version = "0.3.0-beta.3.patch-leaks.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe31e5425d3d0b89a15982c024392815da40689aceb34bad364d58732bcfd649"
+checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468"
 dependencies = [
  "block2",
  "objc-sys",
@@ -1357,27 +2182,24 @@ dependencies = [
 
 [[package]]
 name = "once_cell"
-version = "1.17.1"
+version = "1.18.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
+checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
 
 [[package]]
 name = "orbclient"
-version = "0.3.44"
+version = "0.3.47"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e9829e16c5e112e94efb5e2ad1fe17f8c1c99bb0fcdc8c65c44e935d904767d"
+checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166"
 dependencies = [
- "cfg-if",
- "redox_syscall 0.2.16",
- "wasm-bindgen",
- "web-sys",
+ "libredox 0.0.2",
 ]
 
 [[package]]
 name = "owned_ttf_parser"
-version = "0.18.1"
+version = "0.20.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e25e9fb15717794fae58ab55c26e044103aad13186fbb625893f9a3bbcc24228"
+checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7"
 dependencies = [
  "ttf-parser",
 ]
@@ -1403,66 +2225,102 @@ dependencies = [
 
 [[package]]
 name = "parking_lot_core"
-version = "0.9.7"
+version = "0.9.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521"
+checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
 dependencies = [
  "cfg-if",
  "libc",
- "redox_syscall 0.2.16",
+ "redox_syscall 0.4.1",
  "smallvec",
- "windows-sys",
+ "windows-targets 0.48.5",
 ]
 
 [[package]]
 name = "percent-encoding"
-version = "2.2.0"
+version = "2.3.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
+checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
 
 [[package]]
 name = "pkg-config"
-version = "0.3.26"
+version = "0.3.27"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
+checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
 
 [[package]]
 name = "png"
-version = "0.17.8"
+version = "0.17.10"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aaeebc51f9e7d2c150d3f3bfeb667f2aa985db5ef1e3d212847bdedb488beeaa"
+checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "crc32fast",
  "fdeflate",
  "flate2",
- "miniz_oxide 0.7.1",
+ "miniz_oxide",
 ]
 
 [[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
 name = "proc-macro-crate"
 version = "1.3.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
 dependencies = [
  "once_cell",
- "toml_edit",
+ "toml_edit 0.19.15",
+]
+
+[[package]]
+name = "proc-macro-error"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+dependencies = [
+ "proc-macro-error-attr",
+ "proc-macro2",
+ "quote",
+ "syn 1.0.109",
+ "version_check",
+]
+
+[[package]]
+name = "proc-macro-error-attr"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "version_check",
 ]
 
 [[package]]
 name = "proc-macro2"
-version = "1.0.56"
+version = "1.0.69"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435"
+checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
 dependencies = [
  "unicode-ident",
 ]
 
 [[package]]
+name = "prodash"
+version = "26.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "794b5bf8e2d19b53dcdcec3e4bba628e20f5b6062503ba89281fa7037dd7bbcf"
+
+[[package]]
 name = "quote"
-version = "1.0.26"
+version = "1.0.33"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
+checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
 dependencies = [
  "proc-macro2",
 ]
@@ -1475,49 +2333,132 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9"
 
 [[package]]
 name = "redox_syscall"
-version = "0.2.16"
+version = "0.3.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
+checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
 name = "redox_syscall"
-version = "0.3.5"
+version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
 name = "redox_users"
-version = "0.4.3"
+version = "0.4.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
+checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
 dependencies = [
  "getrandom",
- "redox_syscall 0.2.16",
+ "libredox 0.0.1",
  "thiserror",
 ]
 
 [[package]]
+name = "regex"
+version = "1.10.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+
+[[package]]
 name = "ron"
-version = "0.8.0"
+version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff"
+checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94"
 dependencies = [
  "base64",
- "bitflags",
+ "bitflags 2.4.1",
  "serde",
+ "serde_derive",
+]
+
+[[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",
+ "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",
+ "walkdir",
+]
+
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
+[[package]]
+name = "rustix"
+version = "0.38.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3"
+dependencies = [
+ "bitflags 2.4.1",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.48.0",
 ]
 
 [[package]]
 name = "ryu"
-version = "1.0.13"
+version = "1.0.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
 
 [[package]]
 name = "same-file"
@@ -1536,48 +2477,41 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
 
 [[package]]
 name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 
 [[package]]
-name = "sctk-adwaita"
-version = "0.5.4"
+name = "self_cell"
+version = "0.10.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cda4e97be1fd174ccc2aae81c8b694e803fa99b34e8fd0f057a9d70698e3ed09"
-dependencies = [
- "ab_glyph",
- "log",
- "memmap2",
- "smithay-client-toolkit",
- "tiny-skia",
-]
+checksum = "1ef965a420fe14fdac7dd018862966a4c14094f900e1650bbc71ddd7d580c8af"
 
 [[package]]
 name = "serde"
-version = "1.0.159"
+version = "1.0.192"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c04e8343c3daeec41f58990b9d77068df31209f2af111e059e9fe9646693065"
+checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001"
 dependencies = [
  "serde_derive",
 ]
 
 [[package]]
 name = "serde_derive"
-version = "1.0.159"
+version = "1.0.192"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c614d17805b093df4b147b51339e7e44bf05ef59fba1e45d83500bcfb4d8585"
+checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.15",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "serde_json"
-version = "1.0.95"
+version = "1.0.108"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d721eca97ac802aa7777b701877c8004d950fc142651367300d21c1cc0194744"
+checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
 dependencies = [
  "itoa",
  "ryu",
@@ -1585,10 +2519,36 @@ dependencies = [
 ]
 
 [[package]]
+name = "serde_spanned"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "sha1_smol"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012"
+
+[[package]]
+name = "sha2"
+version = "0.10.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+dependencies = [
+ "cfg-if",
+ "cpufeatures",
+ "digest",
+]
+
+[[package]]
 name = "signal-hook"
-version = "0.3.15"
+version = "0.3.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
 dependencies = [
  "libc",
  "signal-hook-registry",
@@ -1616,9 +2576,9 @@ dependencies = [
 
 [[package]]
 name = "simd-adler32"
-version = "0.3.5"
+version = "0.3.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f"
+checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
 
 [[package]]
 name = "slotmap"
@@ -1631,22 +2591,22 @@ dependencies = [
 
 [[package]]
 name = "smallvec"
-version = "1.10.0"
+version = "1.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"
+checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
 
 [[package]]
 name = "smithay-client-toolkit"
-version = "0.16.0"
+version = "0.16.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454"
+checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "calloop",
  "dlib",
  "lazy_static",
  "log",
- "memmap2",
+ "memmap2 0.5.10",
  "nix 0.24.3",
  "pkg-config",
  "wayland-client",
@@ -1671,16 +2631,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
 
 [[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
 name = "str-buf"
 version = "1.0.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0"
 
 [[package]]
-name = "strict-num"
-version = "0.1.0"
+name = "strsim"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9df65f20698aeed245efdde3628a6b559ea1239bbb871af1b6e3b58c413b2bd1"
+checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
 
 [[package]]
 name = "syn"
@@ -1695,9 +2661,9 @@ dependencies = [
 
 [[package]]
 name = "syn"
-version = "2.0.15"
+version = "2.0.39"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
+checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -1705,34 +2671,49 @@ dependencies = [
 ]
 
 [[package]]
+name = "tempfile"
+version = "3.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
+dependencies = [
+ "cfg-if",
+ "fastrand",
+ "redox_syscall 0.4.1",
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
 name = "thiserror"
-version = "1.0.40"
+version = "1.0.50"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
+checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
 dependencies = [
  "thiserror-impl",
 ]
 
 [[package]]
 name = "thiserror-impl"
-version = "1.0.40"
+version = "1.0.50"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
+checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.15",
+ "syn 2.0.39",
 ]
 
 [[package]]
 name = "time"
-version = "0.3.20"
+version = "0.3.30"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
+checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
 dependencies = [
+ "deranged",
  "itoa",
  "libc",
  "num_threads",
+ "powerfmt",
  "serde",
  "time-core",
  "time-macros",
@@ -1740,42 +2721,26 @@ dependencies = [
 
 [[package]]
 name = "time-core"
-version = "0.1.0"
+version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
+checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
 
 [[package]]
 name = "time-macros"
-version = "0.2.8"
+version = "0.2.15"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
+checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20"
 dependencies = [
  "time-core",
 ]
 
 [[package]]
-name = "tiny-skia"
-version = "0.8.3"
+name = "tinystr"
+version = "0.7.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfef3412c6975196fdfac41ef232f910be2bb37b9dd3313a49a1a6bc815a5bdb"
+checksum = "d5d0e245e80bdc9b4e5356fc45a72184abbc3861992603f515270e9340f5a219"
 dependencies = [
- "arrayref",
- "arrayvec",
- "bytemuck",
- "cfg-if",
- "png",
- "tiny-skia-path",
-]
-
-[[package]]
-name = "tiny-skia-path"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4b5edac058fc98f51c935daea4d805b695b38e2f151241cad125ade2a2ac20d"
-dependencies = [
- "arrayref",
- "bytemuck",
- "strict-num",
+ "displaydoc",
 ]
 
 [[package]]
@@ -1794,27 +2759,98 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
 
 [[package]]
+name = "toml"
+version = "0.5.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml"
+version = "0.8.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit 0.21.0",
+]
+
+[[package]]
 name = "toml_datetime"
-version = "0.6.1"
+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 = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
+checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+dependencies = [
+ "indexmap",
+ "toml_datetime",
+ "winnow",
+]
 
 [[package]]
 name = "toml_edit"
-version = "0.19.8"
+version = "0.21.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
+checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03"
 dependencies = [
  "indexmap",
+ "serde",
+ "serde_spanned",
  "toml_datetime",
  "winnow",
 ]
 
 [[package]]
 name = "ttf-parser"
-version = "0.18.1"
+version = "0.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4"
+
+[[package]]
+name = "type-map"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46"
+dependencies = [
+ "rustc-hash",
+]
+
+[[package]]
+name = "typenum"
+version = "1.17.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633"
+checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+
+[[package]]
+name = "unic-langid"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "398f9ad7239db44fd0f80fe068d12ff22d78354080332a5077dc6f52f14dcf2f"
+dependencies = [
+ "unic-langid-impl",
+]
+
+[[package]]
+name = "unic-langid-impl"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e35bfd2f2b8796545b55d7d3fd3e89a0613f68a0d1c8bc28cb7ff96b411a35ff"
+dependencies = [
+ "serde",
+ "tinystr",
+]
 
 [[package]]
 name = "unicode-bidi"
@@ -1823,10 +2859,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
 
 [[package]]
+name = "unicode-bom"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "98e90c70c9f0d4d1ee6d0a7d04aa06cb9bbd53d8cfbdd62a0269a7c2eb640552"
+
+[[package]]
 name = "unicode-ident"
-version = "1.0.8"
+version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
+checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
 
 [[package]]
 name = "unicode-normalization"
@@ -1845,15 +2887,15 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
 
 [[package]]
 name = "unicode-width"
-version = "0.1.10"
+version = "0.1.11"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
+checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85"
 
 [[package]]
 name = "url"
-version = "2.3.1"
+version = "2.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
+checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
 dependencies = [
  "form_urlencoded",
  "idna",
@@ -1874,9 +2916,9 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
 
 [[package]]
 name = "walkdir"
-version = "2.3.3"
+version = "2.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
+checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
 dependencies = [
  "same-file",
  "winapi-util",
@@ -1890,9 +2932,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
 
 [[package]]
 name = "wasm-bindgen"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
+checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
 dependencies = [
  "cfg-if",
  "wasm-bindgen-macro",
@@ -1900,24 +2942,24 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-backend"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
+checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
 dependencies = [
  "bumpalo",
  "log",
  "once_cell",
  "proc-macro2",
  "quote",
- "syn 2.0.15",
+ "syn 2.0.39",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-futures"
-version = "0.4.34"
+version = "0.4.38"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454"
+checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02"
 dependencies = [
  "cfg-if",
  "js-sys",
@@ -1927,9 +2969,9 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
+checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
 dependencies = [
  "quote",
  "wasm-bindgen-macro-support",
@@ -1937,22 +2979,22 @@ dependencies = [
 
 [[package]]
 name = "wasm-bindgen-macro-support"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
+checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
 dependencies = [
  "proc-macro2",
  "quote",
- "syn 2.0.15",
+ "syn 2.0.39",
  "wasm-bindgen-backend",
  "wasm-bindgen-shared",
 ]
 
 [[package]]
 name = "wasm-bindgen-shared"
-version = "0.2.87"
+version = "0.2.88"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
+checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
 
 [[package]]
 name = "wayland-client"
@@ -1960,7 +3002,7 @@ version = "0.29.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "downcast-rs",
  "libc",
  "nix 0.24.3",
@@ -1999,7 +3041,7 @@ version = "0.29.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
  "wayland-client",
  "wayland-commons",
  "wayland-scanner",
@@ -2041,9 +3083,19 @@ dependencies = [
 
 [[package]]
 name = "web-sys"
-version = "0.3.61"
+version = "0.3.65"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
+checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "web-time"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57099a701fb3a8043f993e8228dc24229c7b942e2b009a1b962e54489ba1d3bf"
 dependencies = [
  "js-sys",
  "wasm-bindgen",
@@ -2051,12 +3103,12 @@ dependencies = [
 
 [[package]]
 name = "webbrowser"
-version = "0.8.9"
+version = "0.8.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b692165700260bbd40fbc5ff23766c03e339fbaca907aeea5cb77bf0a553ca83"
+checksum = "82b2391658b02c27719fc5a0a73d6e696285138e8b12fba9d4baa70451023c71"
 dependencies = [
  "core-foundation",
- "dirs",
+ "home",
  "jni",
  "log",
  "ndk-context",
@@ -2084,9 +3136,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 
 [[package]]
 name = "winapi-util"
-version = "0.1.5"
+version = "0.1.6"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
 dependencies = [
  "winapi",
 ]
@@ -2107,12 +3159,30 @@ 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-sys"
 version = "0.45.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
 dependencies = [
- "windows-targets",
+ "windows-targets 0.42.2",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets 0.48.5",
 ]
 
 [[package]]
@@ -2121,13 +3191,28 @@ version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.42.2",
+ "windows_aarch64_msvc 0.42.2",
+ "windows_i686_gnu 0.42.2",
+ "windows_i686_msvc 0.42.2",
+ "windows_x86_64_gnu 0.42.2",
+ "windows_x86_64_gnullvm 0.42.2",
+ "windows_x86_64_msvc 0.42.2",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+dependencies = [
+ "windows_aarch64_gnullvm 0.48.5",
+ "windows_aarch64_msvc 0.48.5",
+ "windows_i686_gnu 0.48.5",
+ "windows_i686_msvc 0.48.5",
+ "windows_x86_64_gnu 0.48.5",
+ "windows_x86_64_gnullvm 0.48.5",
+ "windows_x86_64_msvc 0.48.5",
 ]
 
 [[package]]
@@ -2137,49 +3222,91 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
 
 [[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+
+[[package]]
 name = "windows_aarch64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[package]]
 name = "windows_i686_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
 
 [[package]]
+name = "windows_i686_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[package]]
 name = "windows_x86_64_gnu"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
 
 [[package]]
+name = "windows_x86_64_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[package]]
 name = "windows_x86_64_gnullvm"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
 
 [[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.42.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
 name = "winit"
-version = "0.28.3"
+version = "0.28.7"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f504e8c117b9015f618774f8d58cd4781f5a479bc41079c064f974cbb253874"
+checksum = "9596d90b45384f5281384ab204224876e8e8bf7d58366d9b795ad99aa9894b94"
 dependencies = [
  "android-activity",
- "bitflags",
+ "bitflags 1.3.2",
  "cfg_aliases",
  "core-foundation",
  "core-graphics",
@@ -2195,7 +3322,6 @@ dependencies = [
  "percent-encoding",
  "raw-window-handle",
  "redox_syscall 0.3.5",
- "sctk-adwaita",
  "smithay-client-toolkit",
  "wasm-bindgen",
  "wayland-client",
@@ -2203,15 +3329,15 @@ dependencies = [
  "wayland-protocols",
  "wayland-scanner",
  "web-sys",
- "windows-sys",
+ "windows-sys 0.45.0",
  "x11-dl",
 ]
 
 [[package]]
 name = "winnow"
-version = "0.4.1"
+version = "0.5.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28"
+checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b"
 dependencies = [
  "memchr",
 ]
@@ -2266,6 +3392,26 @@ checksum = "a67300977d3dc3f8034dae89778f502b6ba20b269527b3223ba59c0cf393bb8a"
 
 [[package]]
 name = "xml-rs"
-version = "0.8.4"
+version = "0.8.19"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
+checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.7.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.39",
+]
diff --git a/nixpkgs/pkgs/tools/system/amdgpu_top/default.nix b/nixpkgs/pkgs/tools/system/amdgpu_top/default.nix
index b8f753bc5a46..73742692af0c 100644
--- a/nixpkgs/pkgs/tools/system/amdgpu_top/default.nix
+++ b/nixpkgs/pkgs/tools/system/amdgpu_top/default.nix
@@ -14,16 +14,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "amdgpu_top";
-  version = "0.1.11";
+  version = "0.3.1";
 
   src = fetchFromGitHub {
     owner = "Umio-Yasuno";
     repo = pname;
     rev = "v${version}";
-    hash = "sha256-jeKwvecB67U+TACr4uXGjRWvRG3GUleiqyu5MYlFwq0=";
+    hash = "sha256-bkrXm3lXJr+sZ09GeVHgfIp8JO3a/Ejrsm1Cm4eY4IU=";
   };
 
   cargoLock = {
+    outputHashes = {
+      "libdrm_amdgpu_sys-0.2.2" = "sha256-2QXT/6octEzokW8+0mHx02R8qQ3kCBDxZT4yyfDkM5A=";
+    };
     lockFile = ./Cargo.lock;
   };
 
@@ -54,5 +57,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ geri1701 ];
     platforms = platforms.linux;
+    mainProgram = "amdgpu_top";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/augeas/bootstrap.diff b/nixpkgs/pkgs/tools/system/augeas/bootstrap.diff
new file mode 100644
index 000000000000..3740134c5478
--- /dev/null
+++ b/nixpkgs/pkgs/tools/system/augeas/bootstrap.diff
@@ -0,0 +1,15 @@
+diff --git a/bootstrap b/bootstrap
+index a84eb39..cac656d 100755
+--- a/bootstrap
++++ b/bootstrap
+@@ -53,9 +53,6 @@ case ${GNULIB_SRCDIR--} in
+     echo "$0: getting gnulib files..."
+     git submodule update || exit $?
+     GNULIB_SRCDIR=.gnulib
+-  else
+-    echo >&2 "$0: invalid gnulib srcdir: $GNULIB_SRCDIR"
+-    exit 1
+   fi
+   ;;
+ esac
+
diff --git a/nixpkgs/pkgs/tools/system/augeas/default.nix b/nixpkgs/pkgs/tools/system/augeas/default.nix
index bea2edd553d4..e30de64f5ad1 100644
--- a/nixpkgs/pkgs/tools/system/augeas/default.nix
+++ b/nixpkgs/pkgs/tools/system/augeas/default.nix
@@ -1,23 +1,65 @@
-{ lib, stdenv, fetchurl, pkg-config, readline, libxml2 }:
+{ lib
+, stdenv
+, fetchFromGitHub
+, autoreconfHook
+, bison
+, flex
+, perl # for pod2man
+, pkg-config
+, readline
+, libxml2
+}:
 
 stdenv.mkDerivation rec {
   pname = "augeas";
-  version = "1.12.0";
+  version = "1.14.1";
 
-  src = fetchurl {
-    url = "http://download.augeas.net/${pname}-${version}.tar.gz";
-    sha256 = "11ybhb13wkkilsn7b416a1dn61m1xrq0lbdpkhp5w61jrk4l469j";
+  src = fetchFromGitHub {
+    owner = "hercules-team";
+    repo = "augeas";
+    rev = "release-${version}";
+    fetchSubmodules = true;
+    hash = "sha256-U5tm3LDUeI/idHtL2Zy33BigkyvHunXPjToDC59G9VE=";
   };
-  nativeBuildInputs = [ pkg-config ];
+
+  patches = [
+    # already have the submodules so don't fail when .git doesn't exist.
+    ./bootstrap.diff
+  ];
+
+  postPatch = ''
+    ./bootstrap --gnulib-srcdir=.gnulib
+  '';
+
+  nativeBuildInputs = [
+    autoreconfHook
+    bison
+    flex
+    perl
+    pkg-config
+  ];
+
   buildInputs = [ readline libxml2 ];
 
   enableParallelBuilding = true;
 
+  doCheck = true;
+
+  checkPhase = ''
+    runHook preCheck
+    patchShebangs --build gnulib/tests tests
+    make -j $NIX_BUILD_CORES check
+    runHook postCheck
+  '';
+
+  outputs = [ "out" "dev" ];
+
   meta = with lib; {
     description = "Configuration editing tool";
     license = licenses.lgpl21Only;
     homepage = "https://augeas.net/";
-    changelog = "https://augeas.net/news.html";
+    changelog = "https://github.com/hercules-team/augeas/releases/tag/release-${version}";
+    mainProgram = "augtool";
     maintainers = with maintainers; [ offline ];
     platforms = platforms.unix;
   };
diff --git a/nixpkgs/pkgs/tools/system/automatic-timezoned/default.nix b/nixpkgs/pkgs/tools/system/automatic-timezoned/default.nix
index 7233a41142ed..f6bfe6db6958 100644
--- a/nixpkgs/pkgs/tools/system/automatic-timezoned/default.nix
+++ b/nixpkgs/pkgs/tools/system/automatic-timezoned/default.nix
@@ -23,5 +23,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ maxbrunet ];
     platforms = platforms.linux;
+    mainProgram = "automatic-timezoned";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/awstats/default.nix b/nixpkgs/pkgs/tools/system/awstats/default.nix
index 21b76adf3e59..e1479e6192cb 100644
--- a/nixpkgs/pkgs/tools/system/awstats/default.nix
+++ b/nixpkgs/pkgs/tools/system/awstats/default.nix
@@ -63,5 +63,6 @@ perlPackages.buildPerlPackage rec {
     homepage = "https://awstats.org";
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
+    mainProgram = "awstats";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/bar/default.nix b/nixpkgs/pkgs/tools/system/bar/default.nix
index 9ff8d2080f7f..1109def2bf30 100644
--- a/nixpkgs/pkgs/tools/system/bar/default.nix
+++ b/nixpkgs/pkgs/tools/system/bar/default.nix
@@ -15,5 +15,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2;
     maintainers = [ lib.maintainers.rdnetto ];
     platforms = lib.platforms.all;
+    mainProgram = "bar";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/btop/default.nix b/nixpkgs/pkgs/tools/system/btop/default.nix
index a4a5156525dd..6a51b29d1d1c 100644
--- a/nixpkgs/pkgs/tools/system/btop/default.nix
+++ b/nixpkgs/pkgs/tools/system/btop/default.nix
@@ -43,5 +43,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ rmcgibbo ];
+    mainProgram = "btop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/chase/default.nix b/nixpkgs/pkgs/tools/system/chase/default.nix
index d20d33235cf8..40f09089fdff 100644
--- a/nixpkgs/pkgs/tools/system/chase/default.nix
+++ b/nixpkgs/pkgs/tools/system/chase/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.polyrod ];
     platforms = platforms.all;
+    mainProgram = "chase";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/clinfo/default.nix b/nixpkgs/pkgs/tools/system/clinfo/default.nix
index 746f83690e7d..50e72498bf64 100644
--- a/nixpkgs/pkgs/tools/system/clinfo/default.nix
+++ b/nixpkgs/pkgs/tools/system/clinfo/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.cc0;
     maintainers = with maintainers; [ athas r-burns ];
     platforms = platforms.unix;
+    mainProgram = "clinfo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/colorls/default.nix b/nixpkgs/pkgs/tools/system/colorls/default.nix
index 8243590cd7d5..3dc460140cb6 100644
--- a/nixpkgs/pkgs/tools/system/colorls/default.nix
+++ b/nixpkgs/pkgs/tools/system/colorls/default.nix
@@ -14,5 +14,6 @@ bundlerApp {
     license     = with licenses; mit;
     maintainers = with maintainers; [ lukebfox nicknovitski cbley ];
     platforms   = ruby.meta.platforms;
+    mainProgram = "colorls";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/confd/default.nix b/nixpkgs/pkgs/tools/system/confd/default.nix
index 25f03e1a665f..bdbba9bc9f21 100644
--- a/nixpkgs/pkgs/tools/system/confd/default.nix
+++ b/nixpkgs/pkgs/tools/system/confd/default.nix
@@ -20,5 +20,6 @@ buildGoPackage rec {
     homepage = "https://github.com/kelseyhightower/confd";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.zimbatm ];
+    mainProgram = "confd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/consul-template/default.nix b/nixpkgs/pkgs/tools/system/consul-template/default.nix
index a6364ffb6b11..735c91b7a0f8 100644
--- a/nixpkgs/pkgs/tools/system/consul-template/default.nix
+++ b/nixpkgs/pkgs/tools/system/consul-template/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     platforms = platforms.linux ++ platforms.darwin;
     license = licenses.mpl20;
     maintainers = with maintainers; [ cpcloud pradeepchhetri ];
+    mainProgram = "consul-template";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/ctop/default.nix b/nixpkgs/pkgs/tools/system/ctop/default.nix
index e3a9e82d8a22..6cf30afa3fd7 100644
--- a/nixpkgs/pkgs/tools/system/ctop/default.nix
+++ b/nixpkgs/pkgs/tools/system/ctop/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     homepage = "https://ctop.sh/";
     license = licenses.mit;
     maintainers = with maintainers; [ apeyroux marsam ];
+    mainProgram = "ctop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/daemon/default.nix b/nixpkgs/pkgs/tools/system/daemon/default.nix
index 7d63b12850ea..0a7b57934717 100644
--- a/nixpkgs/pkgs/tools/system/daemon/default.nix
+++ b/nixpkgs/pkgs/tools/system/daemon/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.sander ];
     platforms = platforms.unix;
+    mainProgram = "daemon";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/daemonize/default.nix b/nixpkgs/pkgs/tools/system/daemonize/default.nix
index b3cf2a4356f6..3a1340e606d0 100644
--- a/nixpkgs/pkgs/tools/system/daemonize/default.nix
+++ b/nixpkgs/pkgs/tools/system/daemonize/default.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation rec {
     homepage = "http://software.clapper.org/daemonize/";
     license = licenses.bsd3;
     platforms = with platforms; linux ++ freebsd ++ darwin;
+    mainProgram = "daemonize";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/datefudge/default.nix b/nixpkgs/pkgs/tools/system/datefudge/default.nix
index d83e4aa383bc..e32fb70e2e09 100644
--- a/nixpkgs/pkgs/tools/system/datefudge/default.nix
+++ b/nixpkgs/pkgs/tools/system/datefudge/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ leenaars ];
+    mainProgram = "datefudge";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/dcfldd/default.nix b/nixpkgs/pkgs/tools/system/dcfldd/default.nix
index 7047d41c5bb5..395b4431acee 100644
--- a/nixpkgs/pkgs/tools/system/dcfldd/default.nix
+++ b/nixpkgs/pkgs/tools/system/dcfldd/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
 
     platforms = platforms.all;
     maintainers = with maintainers; [ qknight ];
+    mainProgram = "dcfldd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/ddh/default.nix b/nixpkgs/pkgs/tools/system/ddh/default.nix
index cba8ade1f428..33618da36376 100644
--- a/nixpkgs/pkgs/tools/system/ddh/default.nix
+++ b/nixpkgs/pkgs/tools/system/ddh/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ h7x4 ];
     platforms = platforms.all;
+    mainProgram = "ddh";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/ddrescueview/default.nix b/nixpkgs/pkgs/tools/system/ddrescueview/default.nix
index c22c74cd4a84..3576c0eb6537 100644
--- a/nixpkgs/pkgs/tools/system/ddrescueview/default.nix
+++ b/nixpkgs/pkgs/tools/system/ddrescueview/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ orivej ];
+    mainProgram = "ddrescueview";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/dfc/default.nix b/nixpkgs/pkgs/tools/system/dfc/default.nix
index 6478e699539f..0ad1d745b066 100644
--- a/nixpkgs/pkgs/tools/system/dfc/default.nix
+++ b/nixpkgs/pkgs/tools/system/dfc/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [qknight];
     platforms = lib.platforms.all;
+    mainProgram = "dfc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/dfrs/default.nix b/nixpkgs/pkgs/tools/system/dfrs/default.nix
index f9bbbd12388f..002e421900b9 100644
--- a/nixpkgs/pkgs/tools/system/dfrs/default.nix
+++ b/nixpkgs/pkgs/tools/system/dfrs/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/anthraxx/dfrs";
     license = licenses.mit;
     maintainers = with maintainers; [ wamserma ];
+    mainProgram = "dfrs";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/disk-filltest/default.nix b/nixpkgs/pkgs/tools/system/disk-filltest/default.nix
index ecfa14aa91be..aeef6732236f 100644
--- a/nixpkgs/pkgs/tools/system/disk-filltest/default.nix
+++ b/nixpkgs/pkgs/tools/system/disk-filltest/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ caadar ];
     platforms = platforms.all;
+    mainProgram = "disk-filltest";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/system/dog/default.nix b/nixpkgs/pkgs/tools/system/dog/default.nix
index 6d15f5bbd52b..b8ed50c0c63e 100644
--- a/nixpkgs/pkgs/tools/system/dog/default.nix
+++ b/nixpkgs/pkgs/tools/system/dog/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ qknight ];
     platforms = platforms.all;
+    mainProgram = "dog";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/dool/default.nix b/nixpkgs/pkgs/tools/system/dool/default.nix
index 27d98a49ef7d..a54bcd4b14e8 100644
--- a/nixpkgs/pkgs/tools/system/dool/default.nix
+++ b/nixpkgs/pkgs/tools/system/dool/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ figsoda ];
     platforms = platforms.unix;
+    mainProgram = "dool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/envconsul/default.nix b/nixpkgs/pkgs/tools/system/envconsul/default.nix
index 5f21a0bcafdc..f3e5609d9abd 100644
--- a/nixpkgs/pkgs/tools/system/envconsul/default.nix
+++ b/nixpkgs/pkgs/tools/system/envconsul/default.nix
@@ -29,5 +29,6 @@ buildGoModule rec {
     description = "Read and set environmental variables for processes from Consul";
     license = licenses.mpl20;
     maintainers = with maintainers; [ pradeepchhetri ];
+    mainProgram = "envconsul";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/epilys-bb/default.nix b/nixpkgs/pkgs/tools/system/epilys-bb/default.nix
index 169e10bc30c4..44a1e566c5d4 100644
--- a/nixpkgs/pkgs/tools/system/epilys-bb/default.nix
+++ b/nixpkgs/pkgs/tools/system/epilys-bb/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ cafkafk ];
     platforms = platforms.linux;
+    mainProgram = "bb";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/facter/default.nix b/nixpkgs/pkgs/tools/system/facter/default.nix
index c6c091c1fba1..02c48d302ac3 100644
--- a/nixpkgs/pkgs/tools/system/facter/default.nix
+++ b/nixpkgs/pkgs/tools/system/facter/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     maintainers = [ maintainers.womfoo ];
     platforms = platforms.unix;
+    mainProgram = "facter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/foreman/default.nix b/nixpkgs/pkgs/tools/system/foreman/default.nix
index ce2f20176290..8a7cfde32ee0 100644
--- a/nixpkgs/pkgs/tools/system/foreman/default.nix
+++ b/nixpkgs/pkgs/tools/system/foreman/default.nix
@@ -11,5 +11,6 @@ bundlerEnv {
     license = licenses.mit;
     maintainers = with maintainers; [ zimbatm ];
     platforms = ruby.meta.platforms;
+    mainProgram = "foreman";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/foremost/default.nix b/nixpkgs/pkgs/tools/system/foremost/default.nix
index 140ce91fd66c..a1a09826c537 100644
--- a/nixpkgs/pkgs/tools/system/foremost/default.nix
+++ b/nixpkgs/pkgs/tools/system/foremost/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     license = licenses.publicDomain;
     maintainers = [ maintainers.jiegec ];
     platforms = platforms.linux ++ platforms.darwin;
+    mainProgram = "foremost";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/gdmap/default.nix b/nixpkgs/pkgs/tools/system/gdmap/default.nix
index 2d5cafc4de1c..900dabf834b5 100644
--- a/nixpkgs/pkgs/tools/system/gdmap/default.nix
+++ b/nixpkgs/pkgs/tools/system/gdmap/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "gdmap";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/gdu/default.nix b/nixpkgs/pkgs/tools/system/gdu/default.nix
index 1b6f44fd700b..ba95a6730630 100644
--- a/nixpkgs/pkgs/tools/system/gdu/default.nix
+++ b/nixpkgs/pkgs/tools/system/gdu/default.nix
@@ -55,5 +55,6 @@ buildGoModule rec {
     changelog = "https://github.com/dundee/gdu/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab zowoq ];
+    mainProgram = "gdu";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/gkraken/default.nix b/nixpkgs/pkgs/tools/system/gkraken/default.nix
index f37a21db79f4..330d9f1129f7 100644
--- a/nixpkgs/pkgs/tools/system/gkraken/default.nix
+++ b/nixpkgs/pkgs/tools/system/gkraken/default.nix
@@ -82,5 +82,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ OPNA2608 ];
     platforms = platforms.linux;
+    mainProgram = "gkraken";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/go-audit/default.nix b/nixpkgs/pkgs/tools/system/go-audit/default.nix
index 83bd7827fff5..38fd38897390 100644
--- a/nixpkgs/pkgs/tools/system/go-audit/default.nix
+++ b/nixpkgs/pkgs/tools/system/go-audit/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
     platforms = platforms.linux;
+    mainProgram = "go-audit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/gohai/default.nix b/nixpkgs/pkgs/tools/system/gohai/default.nix
index 64d051a923f2..5fa84e873ba3 100644
--- a/nixpkgs/pkgs/tools/system/gohai/default.nix
+++ b/nixpkgs/pkgs/tools/system/gohai/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
       information. It is used by the Datadog agent to provide detailed
       system metrics.
     '';
+    mainProgram = "gohai";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/gopsuinfo/default.nix b/nixpkgs/pkgs/tools/system/gopsuinfo/default.nix
index df8cd5026eaf..b4a1003e40cf 100644
--- a/nixpkgs/pkgs/tools/system/gopsuinfo/default.nix
+++ b/nixpkgs/pkgs/tools/system/gopsuinfo/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ otini ];
     platforms = platforms.linux;
+    mainProgram = "gopsuinfo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/gotop/default.nix b/nixpkgs/pkgs/tools/system/gotop/default.nix
index 966406971a55..9681d3286cef 100644
--- a/nixpkgs/pkgs/tools/system/gotop/default.nix
+++ b/nixpkgs/pkgs/tools/system/gotop/default.nix
@@ -49,5 +49,6 @@ buildGoModule rec {
     changelog = "https://github.com/xxxserxxx/gotop/raw/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = [ maintainers.magnetophon ];
+    mainProgram = "gotop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/gptman/default.nix b/nixpkgs/pkgs/tools/system/gptman/default.nix
index e8fc661dd72d..3e3fc623a9e7 100644
--- a/nixpkgs/pkgs/tools/system/gptman/default.nix
+++ b/nixpkgs/pkgs/tools/system/gptman/default.nix
@@ -26,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/rust-disk-partition-management/gptman";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ akshgpt7 ];
+    mainProgram = "gptman";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/gt5/default.nix b/nixpkgs/pkgs/tools/system/gt5/default.nix
index edd1a8ecfd48..49d9fe651d49 100644
--- a/nixpkgs/pkgs/tools/system/gt5/default.nix
+++ b/nixpkgs/pkgs/tools/system/gt5/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [viric];
     platforms = with lib.platforms; all;
+    mainProgram = "gt5";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/gtop/default.nix b/nixpkgs/pkgs/tools/system/gtop/default.nix
index 766719dfb347..327f09a91fb3 100644
--- a/nixpkgs/pkgs/tools/system/gtop/default.nix
+++ b/nixpkgs/pkgs/tools/system/gtop/default.nix
@@ -23,5 +23,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/aksakalli/gtop";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ tfc ];
+    mainProgram = "gtop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/hardinfo/default.nix b/nixpkgs/pkgs/tools/system/hardinfo/default.nix
index 66669b5e850c..99ffe50786ec 100644
--- a/nixpkgs/pkgs/tools/system/hardinfo/default.nix
+++ b/nixpkgs/pkgs/tools/system/hardinfo/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ bjornfor ];
     platforms = [ "x86_64-linux" "i686-linux" ]; # ARMv7 and AArch64 are unsupported
+    mainProgram = "hardinfo";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/hddfancontrol/default.nix b/nixpkgs/pkgs/tools/system/hddfancontrol/default.nix
index 117acd7f7531..64409cbcdba0 100644
--- a/nixpkgs/pkgs/tools/system/hddfancontrol/default.nix
+++ b/nixpkgs/pkgs/tools/system/hddfancontrol/default.nix
@@ -30,5 +30,6 @@ python3Packages.buildPythonPackage rec {
     homepage = "https://github.com/desbma/hddfancontrol";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ benley ];
+    mainProgram = "hddfancontrol";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/hiera-eyaml/default.nix b/nixpkgs/pkgs/tools/system/hiera-eyaml/default.nix
index be6fb1c7462a..1f48d37f5847 100644
--- a/nixpkgs/pkgs/tools/system/hiera-eyaml/default.nix
+++ b/nixpkgs/pkgs/tools/system/hiera-eyaml/default.nix
@@ -13,5 +13,6 @@ bundlerEnv {
     license = licenses.mit;
     maintainers = with maintainers; [ benley nicknovitski ];
     platforms = platforms.unix;
+    mainProgram = "eyaml";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/honcho/default.nix b/nixpkgs/pkgs/tools/system/honcho/default.nix
index 1fef47933bb5..08c0fb3f6b58 100644
--- a/nixpkgs/pkgs/tools/system/honcho/default.nix
+++ b/nixpkgs/pkgs/tools/system/honcho/default.nix
@@ -34,5 +34,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/nickstenning/honcho";
     maintainers = with maintainers; [ benley ];
     platforms = platforms.unix;
+    mainProgram = "honcho";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/hostctl/default.nix b/nixpkgs/pkgs/tools/system/hostctl/default.nix
index 9f349423f9f0..76c41d85ecdf 100644
--- a/nixpkgs/pkgs/tools/system/hostctl/default.nix
+++ b/nixpkgs/pkgs/tools/system/hostctl/default.nix
@@ -42,5 +42,6 @@ buildGoModule rec {
     homepage = "https://guumaster.github.io/hostctl/";
     license = licenses.mit;
     maintainers = with maintainers; [ blaggacao ];
+    mainProgram = "hostctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/hw-probe/default.nix b/nixpkgs/pkgs/tools/system/hw-probe/default.nix
index 501ae69dbfd2..8b190087ffd5 100644
--- a/nixpkgs/pkgs/tools/system/hw-probe/default.nix
+++ b/nixpkgs/pkgs/tools/system/hw-probe/default.nix
@@ -136,5 +136,6 @@ stdenv.mkDerivation rec {
     platforms = with platforms; (linux ++ freebsd ++ netbsd ++ openbsd);
     license = with licenses; [ lgpl21 bsdOriginal ];
     maintainers = with maintainers; [ rehno-lindeque  ];
+    mainProgram = "hw-probe";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/idle3tools/default.nix b/nixpkgs/pkgs/tools/system/idle3tools/default.nix
index c0386fb66bcf..d66a7f9b66a8 100644
--- a/nixpkgs/pkgs/tools/system/idle3tools/default.nix
+++ b/nixpkgs/pkgs/tools/system/idle3tools/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3;
     maintainers = with lib.maintainers; [viric];
     platforms = with lib.platforms; linux;
+    mainProgram = "idle3ctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/illum/default.nix b/nixpkgs/pkgs/tools/system/illum/default.nix
index c9e87bef6214..3d33be9ed635 100644
--- a/nixpkgs/pkgs/tools/system/illum/default.nix
+++ b/nixpkgs/pkgs/tools/system/illum/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
     platforms = lib.platforms.linux;
     maintainers = [ lib.maintainers.dancek ];
     license = lib.licenses.agpl3;
+    mainProgram = "illum-d";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/inxi/default.nix b/nixpkgs/pkgs/tools/system/inxi/default.nix
index b03a7c14a7d6..a376146032ac 100644
--- a/nixpkgs/pkgs/tools/system/inxi/default.nix
+++ b/nixpkgs/pkgs/tools/system/inxi/default.nix
@@ -58,5 +58,6 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ ];
+    mainProgram = "inxi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/ioping/default.nix b/nixpkgs/pkgs/tools/system/ioping/default.nix
index 9af290503f49..f610258cf503 100644
--- a/nixpkgs/pkgs/tools/system/ioping/default.nix
+++ b/nixpkgs/pkgs/tools/system/ioping/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.gpl3Plus;
     homepage = "https://github.com/koct9i/ioping";
+    mainProgram = "ioping";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/java-service-wrapper/default.nix b/nixpkgs/pkgs/tools/system/java-service-wrapper/default.nix
index 63300964f672..332f58749654 100644
--- a/nixpkgs/pkgs/tools/system/java-service-wrapper/default.nix
+++ b/nixpkgs/pkgs/tools/system/java-service-wrapper/default.nix
@@ -1,6 +1,10 @@
-{ lib, stdenv, fetchurl
+{ lib
+, stdenv
+, fetchurl
 , jdk
-, ant, cunit, ncurses
+, ant
+, cunit
+, ncurses
 }:
 
 stdenv.mkDerivation rec {
@@ -12,18 +16,25 @@ stdenv.mkDerivation rec {
     hash = "sha256-t16i1WqvDqr4J5sDldeUk6+DAyN/6oWGV6eME5yj+i4=";
   };
 
-  buildInputs = [ jdk ];
-  nativeBuildInputs = [ ant cunit ncurses ];
+  strictDeps = true;
+
+  buildInputs = [ cunit ncurses ];
+
+  nativeBuildInputs = [ ant jdk ];
+
+  postConfigure = ''
+    substituteInPlace default.properties \
+      --replace "javac.target.version=1.4" "javac.target.version=8"
+  '';
 
   buildPhase = ''
     runHook preBuild
 
-    export ANT_HOME=${ant}
-    export JAVA_HOME=${jdk}/lib/openjdk/jre/
+    export JAVA_HOME=${jdk}/lib/openjdk/
     export JAVA_TOOL_OPTIONS=-Djava.home=$JAVA_HOME
     export CLASSPATH=${jdk}/lib/openjdk/lib/tools.jar
 
-    ${if stdenv.isi686 then "./build32.sh" else "./build64.sh"}
+    ant -f build.xml -Dbits=${if stdenv.isi686 then "32" else "64"}
 
     runHook postBuild
   '';
@@ -46,5 +57,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     platforms = [ "x86_64-linux" "i686-linux" ];
     maintainers = [ maintainers.suhr ];
+    mainProgram = "wrapper";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/jobber/default.nix b/nixpkgs/pkgs/tools/system/jobber/default.nix
index d226d82d8cd8..d9620e49977b 100644
--- a/nixpkgs/pkgs/tools/system/jobber/default.nix
+++ b/nixpkgs/pkgs/tools/system/jobber/default.nix
@@ -36,5 +36,6 @@ buildGoModule rec {
     description = "An alternative to cron, with sophisticated status-reporting and error-handling";
     license = licenses.mit;
     maintainers = with maintainers; [ urandom ];
+    mainProgram = "jobber";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/jsvc/default.nix b/nixpkgs/pkgs/tools/system/jsvc/default.nix
index 4dcc773ebf43..9d1b07895fc3 100644
--- a/nixpkgs/pkgs/tools/system/jsvc/default.nix
+++ b/nixpkgs/pkgs/tools/system/jsvc/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     maintainers = with lib.maintainers; [ rsynnest ];
     license     = lib.licenses.asl20;
     platforms = with lib.platforms; unix;
+    mainProgram = "jsvc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/jump/default.nix b/nixpkgs/pkgs/tools/system/jump/default.nix
index 3ff64996d013..483ea356f0e9 100644
--- a/nixpkgs/pkgs/tools/system/jump/default.nix
+++ b/nixpkgs/pkgs/tools/system/jump/default.nix
@@ -31,5 +31,6 @@ buildGoModule rec {
     homepage = "https://github.com/gsamokovarov/jump";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
+    mainProgram = "jump";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/kmon/default.nix b/nixpkgs/pkgs/tools/system/kmon/default.nix
index 4b9b2d009932..df7ccfa4cf25 100644
--- a/nixpkgs/pkgs/tools/system/kmon/default.nix
+++ b/nixpkgs/pkgs/tools/system/kmon/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ figsoda misuzu matthiasbeyer ];
+    mainProgram = "kmon";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/lact/default.nix b/nixpkgs/pkgs/tools/system/lact/default.nix
index e91326972949..16ce41007ea7 100644
--- a/nixpkgs/pkgs/tools/system/lact/default.nix
+++ b/nixpkgs/pkgs/tools/system/lact/default.nix
@@ -1,6 +1,7 @@
 { lib
 , rustPlatform
 , fetchFromGitHub
+, blueprint-compiler
 , pkg-config
 , wrapGAppsHook
 , gdk-pixbuf
@@ -13,18 +14,19 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "lact";
-  version = "0.4.4";
+  version = "0.5.0";
 
   src = fetchFromGitHub {
     owner = "ilya-zlobintsev";
     repo = "LACT";
     rev = "v${version}";
-    hash = "sha256-5tFXwx76KudojKnynCB+cnHcClB/JJD+9ugwxHG5xy4=";
+    hash = "sha256-B3YAlEKELbHGIQ8AIvortYZsHY6wsuaFxm9lC9Uh+Zg=";
   };
 
-  cargoHash = "sha256-QnJmczOep9XtPoNolrO2DSj+g6qLLowd4rgWQilnV+U=";
+  cargoHash = "sha256-MbE6OrYJGPoQPQggxa9dssx8Nc6/5w53V58E1yLLeq0=";
 
   nativeBuildInputs = [
+    blueprint-compiler
     pkg-config
     wrapGAppsHook
   ];
@@ -53,7 +55,7 @@ rustPlatform.buildRustPackage rec {
 
     pushd $cargoDepsCopy/pciid-parser
     oldHash=$(sha256sum src/lib.rs | cut -d " " -f 1)
-    sed 's|@hwdata@|${hwdata}|g' < ${./pci-ids.patch} | patch -p1
+    substituteInPlace src/lib.rs --subst-var-by hwdata ${hwdata}
     substituteInPlace .cargo-checksum.json \
       --replace $oldHash $(sha256sum src/lib.rs | cut -d " " -f 1)
     popd
@@ -76,5 +78,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
     platforms = platforms.linux;
+    mainProgram = "lact";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/lact/pci-ids.patch b/nixpkgs/pkgs/tools/system/lact/pci-ids.patch
deleted file mode 100644
index e861ade68ace..000000000000
--- a/nixpkgs/pkgs/tools/system/lact/pci-ids.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/src/lib.rs
-+++ b/src/lib.rs
-@@ -18,7 +18,7 @@ use std::{
- };
- use tracing::trace;
- 
--const DB_PATHS: &[&str] = &["/usr/share/hwdata/pci.ids", "/usr/share/misc/pci.ids"];
-+const DB_PATHS: &[&str] = &["@hwdata@/share/hwdata/pci.ids"];
- #[cfg(feature = "online")]
- const URL: &str = "https://pci-ids.ucw.cz/v2.2/pci.ids";
diff --git a/nixpkgs/pkgs/tools/system/localtime/default.nix b/nixpkgs/pkgs/tools/system/localtime/default.nix
index 10ee42bf0308..bdb1fa2e7444 100644
--- a/nixpkgs/pkgs/tools/system/localtime/default.nix
+++ b/nixpkgs/pkgs/tools/system/localtime/default.nix
@@ -39,5 +39,6 @@ buildGoModule {
     maintainers = with maintainers; [ lovesegfault ];
     platforms = platforms.linux;
     license = licenses.gpl3;
+    mainProgram = "localtimed";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/logrotate/default.nix b/nixpkgs/pkgs/tools/system/logrotate/default.nix
index e7d60479a3e5..e92f34188f4f 100644
--- a/nixpkgs/pkgs/tools/system/logrotate/default.nix
+++ b/nixpkgs/pkgs/tools/system/logrotate/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.viric ];
     platforms = platforms.all;
+    mainProgram = "logrotate";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/lr/default.nix b/nixpkgs/pkgs/tools/system/lr/default.nix
index 806b329196a2..e3f62a79e4c1 100644
--- a/nixpkgs/pkgs/tools/system/lr/default.nix
+++ b/nixpkgs/pkgs/tools/system/lr/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ vikanezrimaya ];
+    mainProgram = "lr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/lshw/default.nix b/nixpkgs/pkgs/tools/system/lshw/default.nix
index f5b4486365c3..9878f82b9d09 100644
--- a/nixpkgs/pkgs/tools/system/lshw/default.nix
+++ b/nixpkgs/pkgs/tools/system/lshw/default.nix
@@ -47,5 +47,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ thiagokokada ];
     platforms = platforms.linux;
+    mainProgram = "lshw";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/mediawriter/default.nix b/nixpkgs/pkgs/tools/system/mediawriter/default.nix
index eaea077c8520..f0b8305bc8e8 100644
--- a/nixpkgs/pkgs/tools/system/mediawriter/default.nix
+++ b/nixpkgs/pkgs/tools/system/mediawriter/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     changelog = "https://github.com/FedoraQt/MediaWriter/releases/tag/${version}";
     license = licenses.lgpl2Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "mediawriter";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/memtester/default.nix b/nixpkgs/pkgs/tools/system/memtester/default.nix
index 14b3610abe97..7753ed804e16 100644
--- a/nixpkgs/pkgs/tools/system/memtester/default.nix
+++ b/nixpkgs/pkgs/tools/system/memtester/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.dezgeg ];
     platforms = platforms.unix;
+    mainProgram = "memtester";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/minijail/default.nix b/nixpkgs/pkgs/tools/system/minijail/default.nix
index ab237dd30727..87913252ab4b 100644
--- a/nixpkgs/pkgs/tools/system/minijail/default.nix
+++ b/nixpkgs/pkgs/tools/system/minijail/default.nix
@@ -43,5 +43,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ pcarrier qyliss ];
     platforms = platforms.linux;
+    mainProgram = "minijail0";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/mlc/default.nix b/nixpkgs/pkgs/tools/system/mlc/default.nix
index 5df3579ca9a1..409738e4a353 100644
--- a/nixpkgs/pkgs/tools/system/mlc/default.nix
+++ b/nixpkgs/pkgs/tools/system/mlc/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.unfree;
     maintainers = with maintainers; [ basvandijk ];
     platforms = with platforms; linux;
+    mainProgram = "mlc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/monit/default.nix b/nixpkgs/pkgs/tools/system/monit/default.nix
index f1ebd6596c5b..bd36d6fa400e 100644
--- a/nixpkgs/pkgs/tools/system/monit/default.nix
+++ b/nixpkgs/pkgs/tools/system/monit/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.agpl3;
     maintainers = with lib.maintainers; [ raskin wmertens ryantm ];
     platforms = with lib; platforms.linux ++ platforms.darwin;
+    mainProgram = "monit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/mq-cli/default.nix b/nixpkgs/pkgs/tools/system/mq-cli/default.nix
index cdbff1921a79..81adc7daa272 100644
--- a/nixpkgs/pkgs/tools/system/mq-cli/default.nix
+++ b/nixpkgs/pkgs/tools/system/mq-cli/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     license          = licenses.mit;
     maintainers      = with maintainers; [ tazjin ];
     platforms        = platforms.linux;
+    mainProgram      = "mq";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/nats-top/default.nix b/nixpkgs/pkgs/tools/system/nats-top/default.nix
index 49d70e0b30cf..c26c65d48a89 100644
--- a/nixpkgs/pkgs/tools/system/nats-top/default.nix
+++ b/nixpkgs/pkgs/tools/system/nats-top/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     changelog = "https://github.com/nats-io/nats-top/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "nats-top";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/opencl-info/default.nix b/nixpkgs/pkgs/tools/system/opencl-info/default.nix
index 124b53512d72..fc549d2d7961 100644
--- a/nixpkgs/pkgs/tools/system/opencl-info/default.nix
+++ b/nixpkgs/pkgs/tools/system/opencl-info/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ abbradar ];
+    mainProgram = "opencl-info";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/osquery/Use-locale.h-instead-of-removed-xlocale.h-header.patch b/nixpkgs/pkgs/tools/system/osquery/Use-locale.h-instead-of-removed-xlocale.h-header.patch
index 63dd5a387f30..6c6765309053 100644
--- a/nixpkgs/pkgs/tools/system/osquery/Use-locale.h-instead-of-removed-xlocale.h-header.patch
+++ b/nixpkgs/pkgs/tools/system/osquery/Use-locale.h-instead-of-removed-xlocale.h-header.patch
@@ -1,15 +1,21 @@
-From: Jack Baldry <jack.baldry@grafana.com>
-Date: Tue, 15 Nov 2022 14:34:33 -0400
-Subject: [PATCH] Use locale.h instead of removed xlocale.h header
-
-https://sourceware.org/glibc/wiki/Release/2.26#Removal_of_.27xlocale.h.27
-
-Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
----
- libraries/cmake/source/augeas/gnulib/generated/linux/x86_64/lib/locale.h  | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
+diff --git a/libraries/cmake/source/augeas/gnulib/generated/linux/aarch64/lib/locale.h b/libraries/cmake/source/augeas/gnulib/generated/linux/aarch64/lib/locale.h
+index 4f9baece2..afe947956 100644
+--- a/libraries/cmake/source/augeas/gnulib/generated/linux/aarch64/lib/locale.h
++++ b/libraries/cmake/source/augeas/gnulib/generated/linux/aarch64/lib/locale.h
+@@ -48,9 +48,9 @@
+ /* NetBSD 5.0 mis-defines NULL.  */
+ #include <stddef.h>
+ 
+-/* Mac OS X 10.5 defines the locale_t type in <xlocale.h>.  */
++/* Mac OS X 10.5 defines the locale_t type in <locale.h>.  */
+ #if 1
+-# include <xlocale.h>
++# include <locale.h>
+ #endif
+ 
+ /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
 diff --git a/libraries/cmake/source/augeas/gnulib/generated/linux/x86_64/lib/locale.h b/libraries/cmake/source/augeas/gnulib/generated/linux/x86_64/lib/locale.h
+index 4f9baece2..afe947956 100644
 --- a/libraries/cmake/source/augeas/gnulib/generated/linux/x86_64/lib/locale.h
 +++ b/libraries/cmake/source/augeas/gnulib/generated/linux/x86_64/lib/locale.h
 @@ -48,9 +48,9 @@
@@ -24,6 +30,3 @@ diff --git a/libraries/cmake/source/augeas/gnulib/generated/linux/x86_64/lib/loc
  #endif
  
  /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
--- 
-2.38.1
-
diff --git a/nixpkgs/pkgs/tools/system/osquery/default.nix b/nixpkgs/pkgs/tools/system/osquery/default.nix
index a7c8f18214fa..a5d7fa3d4413 100644
--- a/nixpkgs/pkgs/tools/system/osquery/default.nix
+++ b/nixpkgs/pkgs/tools/system/osquery/default.nix
@@ -1,6 +1,7 @@
 { lib
 , cmake
 , fetchFromGitHub
+, fetchpatch
 , git
 , llvmPackages
 , nixosTests
@@ -32,6 +33,15 @@ buildStdenv.mkDerivation rec {
     ./Remove-circular-definition-of-AUDIT_FILTER_EXCLUDE.patch
     # For current state of compilation against glibc in the clangWithLLVM toolchain, refer to the upstream issue in https://github.com/osquery/osquery/issues/7823.
     ./Remove-system-controls-table.patch
+
+    # osquery uses a vendored boost library that still relies on old standard types (e.g. `std::unary_function`)
+    # which have been removed as of C++17. The patch is already checked in upstream, but there have been no
+    # releases yet. Can likely be removed with versions > 5.10.2.
+    (fetchpatch {
+      name = "fix-build-on-clang-16.patch";
+      url  = "https://github.com/osquery/osquery/commit/222991a15b4ae0a0fb919e4965603616536e1b0a.patch";
+      hash = "sha256-PdzEoeR1LXVri1Cd+7KMhKmDC8yZhAx3f1+9tjLJKyo=";
+    })
   ];
 
 
diff --git a/nixpkgs/pkgs/tools/system/pcstat/default.nix b/nixpkgs/pkgs/tools/system/pcstat/default.nix
index 8e45896632b3..85e6c791990e 100644
--- a/nixpkgs/pkgs/tools/system/pcstat/default.nix
+++ b/nixpkgs/pkgs/tools/system/pcstat/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/tobert/pcstat";
     license = licenses.asl20;
     maintainers = with maintainers; [ aminechikhaoui ];
+    mainProgram = "pcstat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/procodile/default.nix b/nixpkgs/pkgs/tools/system/procodile/default.nix
index 6c463b454333..3c4437ea09c4 100644
--- a/nixpkgs/pkgs/tools/system/procodile/default.nix
+++ b/nixpkgs/pkgs/tools/system/procodile/default.nix
@@ -13,5 +13,6 @@ bundlerApp {
     license     = with licenses; mit;
     maintainers = with maintainers; [ manveru nicknovitski ];
     platforms   = platforms.unix;
+    mainProgram = "procodile";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/ps_mem/default.nix b/nixpkgs/pkgs/tools/system/ps_mem/default.nix
index 8408ed5e8d18..96c21e461d4a 100644
--- a/nixpkgs/pkgs/tools/system/ps_mem/default.nix
+++ b/nixpkgs/pkgs/tools/system/ps_mem/default.nix
@@ -17,5 +17,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.lgpl21;
     maintainers = [ ];
     platforms = platforms.linux;
+    mainProgram = "ps_mem";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/psensor/default.nix b/nixpkgs/pkgs/tools/system/psensor/default.nix
index b6c6e947b0c4..47456b76f325 100644
--- a/nixpkgs/pkgs/tools/system/psensor/default.nix
+++ b/nixpkgs/pkgs/tools/system/psensor/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
+    mainProgram = "psensor";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/psstop/default.nix b/nixpkgs/pkgs/tools/system/psstop/default.nix
index 1d4fff918ec7..1adb6c4e5ed5 100644
--- a/nixpkgs/pkgs/tools/system/psstop/default.nix
+++ b/nixpkgs/pkgs/tools/system/psstop/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     description = "Show processes' memory usage by looking into pss"; # upstream summary
     license = licenses.gpl3;
     maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "psstop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/r10k/default.nix b/nixpkgs/pkgs/tools/system/r10k/default.nix
index 12522bd8cff1..75b75d00253e 100644
--- a/nixpkgs/pkgs/tools/system/r10k/default.nix
+++ b/nixpkgs/pkgs/tools/system/r10k/default.nix
@@ -19,5 +19,6 @@ bundlerApp {
     license     = licenses.asl20;
     maintainers = with maintainers; [ zimbatm manveru nicknovitski ];
     platforms = platforms.unix;
+    mainProgram = "r10k";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/retry/default.nix b/nixpkgs/pkgs/tools/system/retry/default.nix
index 34d4bbb13960..998ba8cb7286 100644
--- a/nixpkgs/pkgs/tools/system/retry/default.nix
+++ b/nixpkgs/pkgs/tools/system/retry/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ gfrascadorio ];
     platforms = platforms.all;
+    mainProgram = "retry";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/system/rofi-systemd/default.nix b/nixpkgs/pkgs/tools/system/rofi-systemd/default.nix
index f64a84c55095..b8be1adea984 100644
--- a/nixpkgs/pkgs/tools/system/rofi-systemd/default.nix
+++ b/nixpkgs/pkgs/tools/system/rofi-systemd/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     maintainers = with lib.maintainers; [ imalison ];
     license = lib.licenses.gpl3;
     platforms = with lib.platforms; linux;
+    mainProgram = "rofi-systemd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/runitor/default.nix b/nixpkgs/pkgs/tools/system/runitor/default.nix
index d724d4c43700..d5d2f50cc0f5 100644
--- a/nixpkgs/pkgs/tools/system/runitor/default.nix
+++ b/nixpkgs/pkgs/tools/system/runitor/default.nix
@@ -39,5 +39,6 @@ buildGoModule rec {
     '';
     license = licenses.bsd0;
     maintainers = with maintainers; [ bdd ];
+    mainProgram = "runitor";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/rwc/default.nix b/nixpkgs/pkgs/tools/system/rwc/default.nix
index 7180c2554702..19d1c1abbfec 100644
--- a/nixpkgs/pkgs/tools/system/rwc/default.nix
+++ b/nixpkgs/pkgs/tools/system/rwc/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
     license = licenses.publicDomain;
     platforms = platforms.linux;
     maintainers = with maintainers; [ somasis ];
+    mainProgram = "rwc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/s-tui/default.nix b/nixpkgs/pkgs/tools/system/s-tui/default.nix
index 29b37aa0b0fd..8f81ba97a0da 100644
--- a/nixpkgs/pkgs/tools/system/s-tui/default.nix
+++ b/nixpkgs/pkgs/tools/system/s-tui/default.nix
@@ -32,5 +32,6 @@ python3Packages.buildPythonPackage rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ infinisil ];
     broken = stdenv.isDarwin; # https://github.com/amanusk/s-tui/issues/49
+    mainProgram = "s-tui";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/s0ix-selftest-tool/default.nix b/nixpkgs/pkgs/tools/system/s0ix-selftest-tool/default.nix
index f75ba42ac90a..535a68f6ff75 100644
--- a/nixpkgs/pkgs/tools/system/s0ix-selftest-tool/default.nix
+++ b/nixpkgs/pkgs/tools/system/s0ix-selftest-tool/default.nix
@@ -76,5 +76,6 @@ resholve.mkDerivation {
     license = licenses.gpl2Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [adamcstephens];
+    mainProgram = "s0ix-selftest-tool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/safe-rm/default.nix b/nixpkgs/pkgs/tools/system/safe-rm/default.nix
index bac9bb356024..26b0aba9889f 100644
--- a/nixpkgs/pkgs/tools/system/safe-rm/default.nix
+++ b/nixpkgs/pkgs/tools/system/safe-rm/default.nix
@@ -32,5 +32,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = with maintainers; [ SuperSandro2000 ];
+    mainProgram = "safe-rm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/safecopy/default.nix b/nixpkgs/pkgs/tools/system/safecopy/default.nix
index ff7149a4063a..2bf454777765 100644
--- a/nixpkgs/pkgs/tools/system/safecopy/default.nix
+++ b/nixpkgs/pkgs/tools/system/safecopy/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
 
     platforms = lib.platforms.linux;
     maintainers = [ lib.maintainers.bluescreen303 ];
+    mainProgram = "safecopy";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/setserial/default.nix b/nixpkgs/pkgs/tools/system/setserial/default.nix
index be4ffa3388e7..d224b96d89dc 100644
--- a/nixpkgs/pkgs/tools/system/setserial/default.nix
+++ b/nixpkgs/pkgs/tools/system/setserial/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     description = "Serial port configuration utility";
     platforms = lib.platforms.linux;
     license = lib.licenses.gpl2;
+    mainProgram = "setserial";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/skeema/default.nix b/nixpkgs/pkgs/tools/system/skeema/default.nix
index 86798155047c..1d5c7c4886a9 100644
--- a/nixpkgs/pkgs/tools/system/skeema/default.nix
+++ b/nixpkgs/pkgs/tools/system/skeema/default.nix
@@ -53,5 +53,6 @@ buildGoModule rec {
     homepage = "https://skeema.io/";
     license = licenses.asl20;
     maintainers = with maintainers; [ aaronjheng ];
+    mainProgram = "skeema";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/snooze/default.nix b/nixpkgs/pkgs/tools/system/snooze/default.nix
index bfe91c6e0e8d..1a719a494f84 100644
--- a/nixpkgs/pkgs/tools/system/snooze/default.nix
+++ b/nixpkgs/pkgs/tools/system/snooze/default.nix
@@ -15,5 +15,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ kaction ];
     license = licenses.cc0;
     platforms = platforms.unix;
+    mainProgram = "snooze";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/stacer/default.nix b/nixpkgs/pkgs/tools/system/stacer/default.nix
index 75068148bd74..57d376bea9fe 100644
--- a/nixpkgs/pkgs/tools/system/stacer/default.nix
+++ b/nixpkgs/pkgs/tools/system/stacer/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ dit7ya ];
     platforms = platforms.linux;
+    mainProgram = "stacer";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/stress-ng/default.nix b/nixpkgs/pkgs/tools/system/stress-ng/default.nix
index b6ce8fc8d8a4..40211cb4e71b 100644
--- a/nixpkgs/pkgs/tools/system/stress-ng/default.nix
+++ b/nixpkgs/pkgs/tools/system/stress-ng/default.nix
@@ -70,5 +70,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ c0bw3b ];
     platforms = platforms.unix;
+    mainProgram = "stress-ng";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/stress/default.nix b/nixpkgs/pkgs/tools/system/stress/default.nix
index ab765c820131..0334ed757b36 100644
--- a/nixpkgs/pkgs/tools/system/stress/default.nix
+++ b/nixpkgs/pkgs/tools/system/stress/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     description = "Simple workload generator for POSIX systems. It imposes a configurable amount of CPU, memory, I/O, and disk stress on the system";
     license = licenses.gpl2;
     platforms = platforms.unix;
+    mainProgram = "stress";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/stressapptest/default.nix b/nixpkgs/pkgs/tools/system/stressapptest/default.nix
index 2a1bc008e18c..3243db0d0076 100644
--- a/nixpkgs/pkgs/tools/system/stressapptest/default.nix
+++ b/nixpkgs/pkgs/tools/system/stressapptest/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
     platforms = platforms.unix;
+    mainProgram = "stressapptest";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/supercronic/default.nix b/nixpkgs/pkgs/tools/system/supercronic/default.nix
index 3b3f285a0865..6b2b4ef5c43a 100644
--- a/nixpkgs/pkgs/tools/system/supercronic/default.nix
+++ b/nixpkgs/pkgs/tools/system/supercronic/default.nix
@@ -34,5 +34,6 @@ buildGoModule rec {
     homepage = "https://github.com/aptible/supercronic";
     license = licenses.mit;
     maintainers = with maintainers; [ nasageek ];
+    mainProgram = "supercronic";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/symlinks/default.nix b/nixpkgs/pkgs/tools/system/symlinks/default.nix
index 8d1213c0afef..3a4029542559 100644
--- a/nixpkgs/pkgs/tools/system/symlinks/default.nix
+++ b/nixpkgs/pkgs/tools/system/symlinks/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ goibhniu ckauhaus ];
     platforms = platforms.unix;
+    mainProgram = "symlinks";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/syslog-ng/default.nix b/nixpkgs/pkgs/tools/system/syslog-ng/default.nix
index f511323f9e55..299988b8367c 100644
--- a/nixpkgs/pkgs/tools/system/syslog-ng/default.nix
+++ b/nixpkgs/pkgs/tools/system/syslog-ng/default.nix
@@ -59,13 +59,14 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "syslog-ng";
-  version = "4.4.0";
+  version = "4.5.0";
 
   src = fetchFromGitHub {
     owner = "syslog-ng";
     repo = "syslog-ng";
     rev = "syslog-ng-${version}";
-    hash = "sha256-NXwd4dyPfnHO3yjl3GPAMQYqenfpp7xFOil2G1e66w4=";
+    hash = "sha256-cWlTGACuHm8o2563Axh43Ks7EhYok6+V9mOkrYp4km8=";
+    fetchSubmodules = true;
   };
   nativeBuildInputs = [ autoreconfHook autoconf-archive pkg-config which bison flex libxslt perl ];
 
diff --git a/nixpkgs/pkgs/tools/system/systemd-journal2gelf/default.nix b/nixpkgs/pkgs/tools/system/systemd-journal2gelf/default.nix
index ef7f5b039cfb..cb319fbd52d8 100644
--- a/nixpkgs/pkgs/tools/system/systemd-journal2gelf/default.nix
+++ b/nixpkgs/pkgs/tools/system/systemd-journal2gelf/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     homepage = "https://github.com/parse-nl/SystemdJournal2Gelf";
     license = licenses.bsd2;
     maintainers = with maintainers; [ fadenb fpletz ];
+    mainProgram = "SystemdJournal2Gelf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/thermald/default.nix b/nixpkgs/pkgs/tools/system/thermald/default.nix
index 9f667bb4203e..193287b022d2 100644
--- a/nixpkgs/pkgs/tools/system/thermald/default.nix
+++ b/nixpkgs/pkgs/tools/system/thermald/default.nix
@@ -70,5 +70,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = [ "x86_64-linux" "i686-linux" ];
     maintainers = with maintainers; [ abbradar ];
+    mainProgram = "thermald";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/thinkfan/default.nix b/nixpkgs/pkgs/tools/system/thinkfan/default.nix
index dc6920a97bdc..17887cc7bdf5 100644
--- a/nixpkgs/pkgs/tools/system/thinkfan/default.nix
+++ b/nixpkgs/pkgs/tools/system/thinkfan/default.nix
@@ -55,5 +55,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/vmatare/thinkfan";
     maintainers = with lib.maintainers; [ domenkozar rnhmjoj ];
     platforms = lib.platforms.linux;
+    mainProgram = "thinkfan";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/tm/default.nix b/nixpkgs/pkgs/tools/system/tm/default.nix
index 19ade9b929cb..129630596373 100644
--- a/nixpkgs/pkgs/tools/system/tm/default.nix
+++ b/nixpkgs/pkgs/tools/system/tm/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ viric ];
     platforms = platforms.all;
+    mainProgram = "tm";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/tp-auto-kbbl/default.nix b/nixpkgs/pkgs/tools/system/tp-auto-kbbl/default.nix
index fa257fc2a361..60bd8dcc6410 100644
--- a/nixpkgs/pkgs/tools/system/tp-auto-kbbl/default.nix
+++ b/nixpkgs/pkgs/tools/system/tp-auto-kbbl/default.nix
@@ -29,5 +29,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ sebtm ];
     platforms = platforms.linux;
+    mainProgram = "tp-auto-kbbl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/ts/default.nix b/nixpkgs/pkgs/tools/system/ts/default.nix
index df19955b6076..843249f911e8 100644
--- a/nixpkgs/pkgs/tools/system/ts/default.nix
+++ b/nixpkgs/pkgs/tools/system/ts/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ viric ];
     platforms = platforms.all;
+    mainProgram = "ts";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/ttop/default.nix b/nixpkgs/pkgs/tools/system/ttop/default.nix
deleted file mode 100644
index ceea0e215b1f..000000000000
--- a/nixpkgs/pkgs/tools/system/ttop/default.nix
+++ /dev/null
@@ -1,35 +0,0 @@
-{ lib, nimPackages, fetchFromGitHub, testers }:
-
-nimPackages.buildNimPackage (finalAttrs: {
-  pname = "ttop";
-  version = "1.2.7";
-  nimBinOnly = true;
-
-  src = fetchFromGitHub {
-    owner = "inv2004";
-    repo = "ttop";
-    rev = "v${finalAttrs.version}";
-    hash = "sha256-oPdaUqh6eN1X5kAYVvevOndkB/xnQng9QVLX9bu5P5E=";
-  };
-
-  buildInputs = with nimPackages; [ asciigraph illwill jsony parsetoml zippy ];
-
-  nimFlags = [
-    "-d:NimblePkgVersion=${finalAttrs.version}"
-  ];
-
-  passthru.tests = {
-    version = testers.testVersion {
-      package = finalAttrs.finalPackage;
-    };
-  };
-
-  meta = with lib; {
-    description = "Top-like system monitoring tool";
-    homepage = "https://github.com/inv2004/ttop";
-    changelog = "https://github.com/inv2004/ttop/releases/tag/${finalAttrs.src.rev}";
-    license = licenses.mit;
-    platforms = platforms.linux;
-    maintainers = with maintainers; [ figsoda sikmir ];
-  };
-})
diff --git a/nixpkgs/pkgs/tools/system/tuptime/default.nix b/nixpkgs/pkgs/tools/system/tuptime/default.nix
index b49063d68093..d93f1a346ca6 100644
--- a/nixpkgs/pkgs/tools/system/tuptime/default.nix
+++ b/nixpkgs/pkgs/tools/system/tuptime/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.evils ];
+    mainProgram = "tuptime";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/ufiformat/default.nix b/nixpkgs/pkgs/tools/system/ufiformat/default.nix
index 5b778c5230e3..52204a073ae7 100644
--- a/nixpkgs/pkgs/tools/system/ufiformat/default.nix
+++ b/nixpkgs/pkgs/tools/system/ufiformat/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.amarshall ];
     platforms = platforms.linux;
     license = licenses.gpl2Plus;
+    mainProgram = "ufiformat";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/undaemonize/default.nix b/nixpkgs/pkgs/tools/system/undaemonize/default.nix
index 50ae366d10bd..83007db867dc 100644
--- a/nixpkgs/pkgs/tools/system/undaemonize/default.nix
+++ b/nixpkgs/pkgs/tools/system/undaemonize/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.canndrew ];
     platforms = lib.platforms.linux;
+    mainProgram = "undaemonize";
   };
 }
 
diff --git a/nixpkgs/pkgs/tools/system/vbetool/default.nix b/nixpkgs/pkgs/tools/system/vbetool/default.nix
index ebdeae60c386..8cc7b338ca96 100644
--- a/nixpkgs/pkgs/tools/system/vbetool/default.nix
+++ b/nixpkgs/pkgs/tools/system/vbetool/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.raskin ];
     platforms = platforms.linux;
     license = licenses.gpl2;
+    mainProgram = "vbetool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/wsysmon/default.nix b/nixpkgs/pkgs/tools/system/wsysmon/default.nix
index 96c3cc30587e..8f03fdf90ccd 100644
--- a/nixpkgs/pkgs/tools/system/wsysmon/default.nix
+++ b/nixpkgs/pkgs/tools/system/wsysmon/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = [ licenses.mit ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ totoroot ];
+    mainProgram = "WSysMon";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/xe/default.nix b/nixpkgs/pkgs/tools/system/xe/default.nix
index 133c7d873619..2a8231b7fb03 100644
--- a/nixpkgs/pkgs/tools/system/xe/default.nix
+++ b/nixpkgs/pkgs/tools/system/xe/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     license = licenses.publicDomain;
     platforms = platforms.all;
     maintainers = with maintainers; [ ];
+    mainProgram = "xe";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/yeshup/default.nix b/nixpkgs/pkgs/tools/system/yeshup/default.nix
index 113d17b09b53..723021d0ee74 100644
--- a/nixpkgs/pkgs/tools/system/yeshup/default.nix
+++ b/nixpkgs/pkgs/tools/system/yeshup/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.cc-by-sa-30; # From Stackoverflow answer
     maintainers = with maintainers; [ obadz ];
+    mainProgram = "yeshup";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/zfxtop/default.nix b/nixpkgs/pkgs/tools/system/zfxtop/default.nix
index 0ffbeac5e638..5c216c7ca0cb 100644
--- a/nixpkgs/pkgs/tools/system/zfxtop/default.nix
+++ b/nixpkgs/pkgs/tools/system/zfxtop/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/ssleert/zfxtop";
     license = licenses.bsd2;
     maintainers = with maintainers; [ wozeparrot ];
+    mainProgram = "zfxtop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/zps/default.nix b/nixpkgs/pkgs/tools/system/zps/default.nix
index 91ce2ed8f6a8..776a53cdc72c 100644
--- a/nixpkgs/pkgs/tools/system/zps/default.nix
+++ b/nixpkgs/pkgs/tools/system/zps/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ figsoda ];
     platforms = platforms.linux;
+    mainProgram = "zps";
   };
 }
diff --git a/nixpkgs/pkgs/tools/system/zx/default.nix b/nixpkgs/pkgs/tools/system/zx/default.nix
index 857661c31f2f..1dec344ed3aa 100644
--- a/nixpkgs/pkgs/tools/system/zx/default.nix
+++ b/nixpkgs/pkgs/tools/system/zx/default.nix
@@ -21,5 +21,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/google/zx";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ hlolli ];
+    mainProgram = "zx";
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/comrak/default.nix b/nixpkgs/pkgs/tools/text/comrak/default.nix
index 2254bb7e2c27..83dd18e0c037 100644
--- a/nixpkgs/pkgs/tools/text/comrak/default.nix
+++ b/nixpkgs/pkgs/tools/text/comrak/default.nix
@@ -2,16 +2,16 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "comrak";
-  version = "0.19.0";
+  version = "0.20.0";
 
   src = fetchFromGitHub {
     owner = "kivikakk";
     repo = pname;
     rev = version;
-    sha256 = "sha256-eyLgAVo4U0a1JByJsoWOnKGhDcaOhul145KeOOkmHq8=";
+    sha256 = "sha256-E7aSbqBest7NxphPOsxG2n5z6QdtTiYaFmgRmLh3cCI=";
   };
 
-  cargoSha256 = "sha256-Q9VmiC07UxstwRPertTteeHX34zTo58a2wPkQtSwUPU=";
+  cargoSha256 = "sha256-SQ+G1rdiAfQj8MwjTiCgtPD5O8+jD3PSHy+rBUJlj2g=";
 
   meta = with lib; {
     description = "A CommonMark-compatible GitHub Flavored Markdown parser and formatter";
diff --git a/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock b/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock
index f381f2979312..e3a8902da002 100644
--- a/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock
+++ b/nixpkgs/pkgs/tools/text/difftastic/Cargo.lock
@@ -15,9 +15,9 @@ dependencies = [
 
 [[package]]
 name = "aho-corasick"
-version = "0.7.20"
+version = "1.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
+checksum = "0c378d78423fdad8089616f827526ee33c19f2fddbd5de1629152c9593ba4783"
 dependencies = [
  "memchr",
 ]
@@ -28,7 +28,7 @@ version = "2.0.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d5c2ca00549910ec251e3bd15f87aeeb206c9456b9a77b43ff6c97c54042a472"
 dependencies = [
- "bstr",
+ "bstr 0.2.17",
  "doc-comment",
  "predicates",
  "predicates-core",
@@ -42,7 +42,7 @@ version = "0.2.14"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.1.19",
  "libc",
  "winapi",
 ]
@@ -60,6 +60,12 @@ 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 = "bstr"
 version = "0.2.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -67,7 +73,17 @@ checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
 dependencies = [
  "lazy_static",
  "memchr",
- "regex-automata",
+ "regex-automata 0.1.10",
+]
+
+[[package]]
+name = "bstr"
+version = "1.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
+dependencies = [
+ "memchr",
+ "serde",
 ]
 
 [[package]]
@@ -104,7 +120,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"
 dependencies = [
  "atty",
- "bitflags",
+ "bitflags 1.3.2",
  "clap_lex",
  "indexmap",
  "lazy_static",
@@ -190,11 +206,11 @@ dependencies = [
 
 [[package]]
 name = "crossterm"
-version = "0.26.1"
+version = "0.27.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13"
+checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df"
 dependencies = [
- "bitflags",
+ "bitflags 2.4.1",
  "crossterm_winapi",
  "libc",
  "mio",
@@ -206,9 +222,9 @@ dependencies = [
 
 [[package]]
 name = "crossterm_winapi"
-version = "0.9.0"
+version = "0.9.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ae1b35a484aa10e07fe0638d02301c5ad24de82d310ccbd2f3693da5f09bf1c"
+checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b"
 dependencies = [
  "winapi",
 ]
@@ -237,8 +253,9 @@ checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
 
 [[package]]
 name = "difftastic"
-version = "0.52.0"
+version = "0.53.1"
 dependencies = [
+ "aho-corasick",
  "assert_cmd",
  "bumpalo",
  "cc",
@@ -248,12 +265,15 @@ dependencies = [
  "glob",
  "hashbrown 0.12.3",
  "humansize",
+ "ignore",
+ "is-terminal",
  "itertools 0.11.0",
  "lazy_static",
  "libc",
  "libmimalloc-sys",
  "line-numbers",
  "log",
+ "memchr",
  "mimalloc",
  "owo-colors",
  "predicates",
@@ -272,7 +292,6 @@ dependencies = [
  "typed-arena",
  "unicode-width",
  "version_check",
- "walkdir",
  "wu-diff",
 ]
 
@@ -290,18 +309,28 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
 
 [[package]]
 name = "env_logger"
-version = "0.7.1"
+version = "0.10.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
+checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
 dependencies = [
- "atty",
  "humantime",
+ "is-terminal",
  "log",
  "regex",
  "termcolor",
 ]
 
 [[package]]
+name = "errno"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860"
+dependencies = [
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
 name = "fixedbitset"
 version = "0.4.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -340,6 +369,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
 
 [[package]]
+name = "globset"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
+dependencies = [
+ "aho-corasick",
+ "bstr 1.6.0",
+ "fnv",
+ "log",
+ "regex",
+]
+
+[[package]]
 name = "hashbrown"
 version = "0.11.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -370,6 +412,12 @@ dependencies = [
 ]
 
 [[package]]
+name = "hermit-abi"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+
+[[package]]
 name = "humansize"
 version = "2.1.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -380,11 +428,26 @@ dependencies = [
 
 [[package]]
 name = "humantime"
-version = "1.3.0"
+version = "2.1.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
+checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+
+[[package]]
+name = "ignore"
+version = "0.4.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "713f1b139373f96a2e0ce3ac931cd01ee973c3c5dd7c40c0c2efe96ad2b6751d"
 dependencies = [
- "quick-error",
+ "crossbeam-utils",
+ "globset",
+ "lazy_static",
+ "log",
+ "memchr",
+ "regex",
+ "same-file",
+ "thread_local",
+ "walkdir",
+ "winapi-util",
 ]
 
 [[package]]
@@ -398,6 +461,29 @@ dependencies = [
 ]
 
 [[package]]
+name = "io-lifetimes"
+version = "1.0.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+dependencies = [
+ "hermit-abi 0.3.3",
+ "libc",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
+name = "is-terminal"
+version = "0.4.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f"
+dependencies = [
+ "hermit-abi 0.3.3",
+ "io-lifetimes",
+ "rustix",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
 name = "itertools"
 version = "0.10.3"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -429,9 +515,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
 
 [[package]]
 name = "libc"
-version = "0.2.139"
+version = "0.2.149"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b"
 
 [[package]]
 name = "libm"
@@ -450,9 +536,15 @@ dependencies = [
 
 [[package]]
 name = "line-numbers"
-version = "0.2.2"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b25f5068853805faa3c19f44d0c401446e4eb3f47cc808fa331eec30f0ba35c"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.3.8"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "793a75315eb63b8699158825bdea85d63eeb850e7543cb834abef3c7b5b53780"
+checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
 
 [[package]]
 name = "lock_api"
@@ -512,7 +604,7 @@ dependencies = [
  "libc",
  "log",
  "wasi",
- "windows-sys",
+ "windows-sys 0.42.0",
 ]
 
 [[package]]
@@ -546,7 +638,7 @@ version = "1.13.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
 dependencies = [
- "hermit-abi",
+ "hermit-abi 0.1.19",
  "libc",
 ]
 
@@ -597,7 +689,7 @@ dependencies = [
  "libc",
  "redox_syscall",
  "smallvec",
- "windows-sys",
+ "windows-sys 0.42.0",
 ]
 
 [[package]]
@@ -654,9 +746,9 @@ dependencies = [
 
 [[package]]
 name = "pretty_env_logger"
-version = "0.4.0"
+version = "0.5.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "926d36b9553851b8b0005f1275891b392ee4d2d833852c417ed025477350fb9d"
+checksum = "865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c"
 dependencies = [
  "env_logger",
  "log",
@@ -672,12 +764,6 @@ dependencies = [
 ]
 
 [[package]]
-name = "quick-error"
-version = "1.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
-
-[[package]]
 name = "quote"
 version = "1.0.32"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -720,17 +806,18 @@ version = "0.2.16"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
 dependencies = [
- "bitflags",
+ "bitflags 1.3.2",
 ]
 
 [[package]]
 name = "regex"
-version = "1.7.3"
+version = "1.9.4"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b1f693b24f6ac912f4893ef08244d70b6067480d2f1a46e950c9691e6749d1d"
+checksum = "12de2eff854e5fa4b1295edd650e227e9d8fb0c9e90b12e7f36d6a6811791a29"
 dependencies = [
  "aho-corasick",
  "memchr",
+ "regex-automata 0.3.7",
  "regex-syntax",
 ]
 
@@ -741,10 +828,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
 
 [[package]]
+name = "regex-automata"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49530408a136e16e5b486e883fbb6ba058e8e4e8ae6621a77b048b314336e629"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
 name = "regex-syntax"
-version = "0.6.29"
+version = "0.7.5"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
+checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da"
 
 [[package]]
 name = "rustc-hash"
@@ -753,6 +851,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
 
 [[package]]
+name = "rustix"
+version = "0.37.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
+dependencies = [
+ "bitflags 1.3.2",
+ "errno",
+ "io-lifetimes",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
 name = "rustversion"
 version = "1.0.12"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -812,9 +924,9 @@ dependencies = [
 
 [[package]]
 name = "signal-hook"
-version = "0.3.14"
+version = "0.3.17"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
 dependencies = [
  "libc",
  "signal-hook-registry",
@@ -931,6 +1043,16 @@ dependencies = [
 ]
 
 [[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 = "tree-sitter"
 version = "0.20.9"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1045,13 +1167,37 @@ version = "0.42.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7"
 dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.42.1",
+ "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 0.42.1",
+ "windows_x86_64_msvc 0.42.1",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.48.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+dependencies = [
+ "windows-targets",
+]
+
+[[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]]
@@ -1061,42 +1207,84 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
 
 [[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_msvc"
 version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
 
 [[package]]
+name = "windows_aarch64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+
+[[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_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+
+[[package]]
 name = "windows_i686_msvc"
 version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
 
 [[package]]
+name = "windows_i686_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+
+[[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_gnu"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+
+[[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_gnullvm"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+
+[[package]]
 name = "windows_x86_64_msvc"
 version = "0.42.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
 
 [[package]]
+name = "windows_x86_64_msvc"
+version = "0.48.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+
+[[package]]
 name = "wu-diff"
 version = "0.1.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/nixpkgs/pkgs/tools/text/difftastic/default.nix b/nixpkgs/pkgs/tools/text/difftastic/default.nix
index 98c3db975edc..317c79239009 100644
--- a/nixpkgs/pkgs/tools/text/difftastic/default.nix
+++ b/nixpkgs/pkgs/tools/text/difftastic/default.nix
@@ -17,13 +17,13 @@ in
 
 rustPlatform.buildRustPackage rec {
   pname = "difftastic";
-  version = "0.52.0";
+  version = "0.53.1";
 
   src = fetchFromGitHub {
     owner = "wilfred";
     repo = pname;
     rev = version;
-    hash = "sha256-ve5oUvclHGgw56UEIuEQ0tSdzad94MfL6qzc2hoB0dw=";
+    hash = "sha256-D//LMfwk2n5jGOXhix2jZyoppYMxVkTkg4HuNHCtHNI=";
   };
 
   cargoLock = {
@@ -33,6 +33,11 @@ rustPlatform.buildRustPackage rec {
     };
   };
 
+  # skip flaky tests
+  checkFlags = [
+    "--skip=options::tests::test_detect_display_width"
+  ];
+
   # Work around https://github.com/NixOS/nixpkgs/issues/166205.
   env = lib.optionalAttrs stdenv.cc.isClang {
     NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
diff --git a/nixpkgs/pkgs/tools/text/frawk/default.nix b/nixpkgs/pkgs/tools/text/frawk/default.nix
index 1f975823fa1d..230d1328d457 100644
--- a/nixpkgs/pkgs/tools/text/frawk/default.nix
+++ b/nixpkgs/pkgs/tools/text/frawk/default.nix
@@ -6,6 +6,7 @@
 , zlib
 , features ? [ "default" ]
 , llvmPackages_12
+, stdenv
 }:
 
 rustPlatform.buildRustPackage rec {
@@ -30,6 +31,11 @@ rustPlatform.buildRustPackage rec {
     export RUSTC_BOOTSTRAP=1
   '';
 
+  # Work around https://github.com/NixOS/nixpkgs/issues/166205.
+  env = lib.optionalAttrs stdenv.cc.isClang {
+    NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
+  };
+
   # depends on cpu instructions that may not be available on builders
   doCheck = false;
 
diff --git a/nixpkgs/pkgs/tools/text/frogmouth/default.nix b/nixpkgs/pkgs/tools/text/frogmouth/default.nix
index e4347989aa1b..9ec9134c661e 100644
--- a/nixpkgs/pkgs/tools/text/frogmouth/default.nix
+++ b/nixpkgs/pkgs/tools/text/frogmouth/default.nix
@@ -5,14 +5,14 @@
 
 python3.pkgs.buildPythonApplication rec {
   pname = "frogmouth";
-  version = "0.9.0";
+  version = "0.9.1";
   format = "pyproject";
 
   src = fetchFromGitHub {
     owner = "Textualize";
     repo = "frogmouth";
     rev = "v${version}";
-    hash = "sha256-TMCeIwMEoNDQV9iue4XrdYQMmwofXDvdMMLTZKILQ9Q=";
+    hash = "sha256-0fcCON/M9JklE7X9aRfzTkEFG4ckJqLoQlYCSrWHHGQ=";
   };
 
   # Per <https://github.com/srstevenson/xdg-base-dirs/tree/6.0.0#xdg-base-dirs>, the package is
diff --git a/nixpkgs/pkgs/tools/text/gtranslator/default.nix b/nixpkgs/pkgs/tools/text/gtranslator/default.nix
index d51ac05701d4..5c9c7c868738 100644
--- a/nixpkgs/pkgs/tools/text/gtranslator/default.nix
+++ b/nixpkgs/pkgs/tools/text/gtranslator/default.nix
@@ -6,28 +6,27 @@
 , pkg-config
 , itstool
 , gettext
-, python3
-, wrapGAppsHook
+, wrapGAppsHook4
 , libxml2
+, libadwaita
 , libgda6
-, libhandy
 , libsoup_3
+, libspelling
 , json-glib
-, gspell
 , glib
-, gtk3
-, gtksourceview4
+, gtk4
+, gtksourceview5
 , gnome
 , gsettings-desktop-schemas
 }:
 
 stdenv.mkDerivation rec {
   pname = "gtranslator";
-  version = "42.0";
+  version = "45.3";
 
   src = fetchurl {
     url = "mirror://gnome/sources/${pname}/${lib.versions.major version}/${pname}-${version}.tar.xz";
-    sha256 = "Kme8v+ZDBhsGltiaEIR9UL81kF/zNhuYcTV9PjQi8Ts=";
+    sha256 = "MBAgTfXHpa4Cf1owsVRNaXfUF/Dku53il/CtGoAzGHM=";
   };
 
   nativeBuildInputs = [
@@ -36,29 +35,23 @@ stdenv.mkDerivation rec {
     pkg-config
     itstool
     gettext
-    python3
-    wrapGAppsHook
+    wrapGAppsHook4
   ];
 
   buildInputs = [
     libxml2
     glib
-    gtk3
-    gtksourceview4
+    gtk4
+    gtksourceview5
+    libadwaita
     libgda6
-    libhandy
     libsoup_3
+    libspelling
     json-glib
     gettext
-    gspell
     gsettings-desktop-schemas
   ];
 
-  postPatch = ''
-    chmod +x build-aux/meson/meson_post_install.py
-    patchShebangs build-aux/meson/meson_post_install.py
-  '';
-
   passthru = {
     updateScript = gnome.updateScript {
       packageName = pname;
diff --git a/nixpkgs/pkgs/tools/text/highlight/default.nix b/nixpkgs/pkgs/tools/text/highlight/default.nix
index 4287b7964801..7e02f3f60ceb 100644
--- a/nixpkgs/pkgs/tools/text/highlight/default.nix
+++ b/nixpkgs/pkgs/tools/text/highlight/default.nix
@@ -3,13 +3,13 @@
 let
   self = stdenv.mkDerivation rec {
     pname = "highlight";
-    version = "4.7";
+    version = "4.10";
 
     src = fetchFromGitLab {
       owner = "saalen";
       repo = "highlight";
       rev = "v${version}";
-      sha256 = "sha256-WblpRrvfFp4PlyH4RS2VNKXYD911H+OcnSL5rctyxiM=";
+      sha256 = "sha256-WBX5WQXGgB7n7htxHxpBNIE1wFCFht6sMy5lkqeieqM=";
     };
 
     enableParallelBuilding = true;
diff --git a/nixpkgs/pkgs/tools/text/mdbook-footnote/default.nix b/nixpkgs/pkgs/tools/text/mdbook-footnote/default.nix
new file mode 100644
index 000000000000..d69c7e4fdd86
--- /dev/null
+++ b/nixpkgs/pkgs/tools/text/mdbook-footnote/default.nix
@@ -0,0 +1,28 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rustPlatform
+, CoreServices
+}:
+rustPlatform.buildRustPackage rec {
+  pname = "mdbook-footnote";
+  version = "0.1.1";
+
+  src = fetchFromGitHub {
+    owner = "daviddrysdale";
+    repo = "mdbook-footnote";
+    rev = "v${version}";
+    hash = "sha256-WUMgm1hwsU9BeheLfb8Di0AfvVQ6j92kXxH2SyG3ses=";
+  };
+
+  cargoSha256 = "sha256-Ig+uVCO5oHIkkvFsKiBiUFzjUgH/Pydn4MVJHb2wKGc=";
+
+  buildInputs = lib.optionals stdenv.isDarwin [ CoreServices ];
+
+  meta = with lib; {
+    description = "A preprocessor for mdbook to support the inclusion of automatically numbered footnotes";
+    homepage = "https://github.com/daviddrysdale/mdbook-footnote";
+    license = licenses.asl20;
+    maintainers = with maintainers; [ brianmcgillion ];
+  };
+}
diff --git a/nixpkgs/pkgs/tools/text/mdhtml/default.nix b/nixpkgs/pkgs/tools/text/mdhtml/default.nix
index 8882ca5ea192..4c9f6e5da28b 100644
--- a/nixpkgs/pkgs/tools/text/mdhtml/default.nix
+++ b/nixpkgs/pkgs/tools/text/mdhtml/default.nix
@@ -5,14 +5,14 @@
 
 buildGoModule rec {
   pname = "mdhtml";
-  version = "0.3.0";
+  version = "0.3.1";
 
   src = fetchFromGitea {
     domain = "codeberg.org";
     owner = "Tomkoid";
     repo = pname;
     rev = version;
-    hash = "sha256-Pzl6Hmc24uWQ02FQM84rsypTJy1GdvYqfLDjN6Ryq4Q=";
+    hash = "sha256-ISZUadJZOWwUygLnGYvuMUNCmTNGZLYq+q/FeK++kWE=";
   };
 
   vendorHash = null;
diff --git a/nixpkgs/pkgs/tools/text/poedit/default.nix b/nixpkgs/pkgs/tools/text/poedit/default.nix
index e9889c45e029..022bf39f87ca 100644
--- a/nixpkgs/pkgs/tools/text/poedit/default.nix
+++ b/nixpkgs/pkgs/tools/text/poedit/default.nix
@@ -4,13 +4,13 @@
 
 stdenv.mkDerivation rec {
   pname = "poedit";
-  version = "3.4";
+  version = "3.4.1";
 
   src = fetchFromGitHub {
     owner = "vslavik";
     repo = "poedit";
     rev = "v${version}-oss";
-    hash = "sha256-Z2DT+RO35EcJFOnrjmJ8v2tsINQnsPkbFhZW9OZqob4=";
+    hash = "sha256-VV8af2PVGPL0wzJbUigqPq4FDFUkwbafligNbfB6a9w=";
   };
 
   nativeBuildInputs = [ autoconf automake asciidoc wrapGAppsHook
diff --git a/nixpkgs/pkgs/tools/text/ripgrep/default.nix b/nixpkgs/pkgs/tools/text/ripgrep/default.nix
index 456956986cb4..5c8427679c82 100644
--- a/nixpkgs/pkgs/tools/text/ripgrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/ripgrep/default.nix
@@ -1,39 +1,43 @@
 { lib, stdenv
+, buildPackages
 , fetchFromGitHub
 , rustPlatform
-, asciidoctor
 , installShellFiles
 , pkg-config
 , Security
 , withPCRE2 ? true
 , pcre2
+, enableManpages ? stdenv.hostPlatform.emulatorAvailable buildPackages
 }:
 
 rustPlatform.buildRustPackage rec {
   pname = "ripgrep";
-  version = "13.0.0";
+  version = "14.0.3";
 
   src = fetchFromGitHub {
     owner = "BurntSushi";
     repo = pname;
     rev = version;
-    sha256 = "0pdcjzfi0fclbzmmf701fdizb95iw427vy3m1svy6gdn2zwj3ldr";
+    hash = "sha256-NBGbiy+1AUIBJFx6kcGPSKo08a+dkNo4rNH2I1pki4U=";
   };
 
-  cargoSha256 = "1kfdgh8dra4jxgcdb0lln5wwrimz0dpp33bq3h7jgs8ngaq2a9wp";
+  cargoHash = "sha256-s6oK0/eL+NAhG3ySUlJBRatUuWXxfRVgAvlJm++0lkg=";
 
-  nativeBuildInputs = [ asciidoctor installShellFiles ]
+  nativeBuildInputs = [ installShellFiles ]
     ++ lib.optional withPCRE2 pkg-config;
   buildInputs = lib.optional withPCRE2 pcre2
     ++ lib.optional stdenv.isDarwin Security;
 
   buildFeatures = lib.optional withPCRE2 "pcre2";
 
-  preFixup = ''
-    installManPage $releaseDir/build/ripgrep-*/out/rg.1
-
-    installShellCompletion $releaseDir/build/ripgrep-*/out/rg.{bash,fish}
-    installShellCompletion --zsh complete/_rg
+  preFixup = lib.optionalString enableManpages ''
+    ${stdenv.hostPlatform.emulator buildPackages} $out/bin/rg --generate man > rg.1
+    installManPage rg.1
+  '' + ''
+    installShellCompletion --cmd rg \
+      --bash <($out/bin/rg --generate complete-bash) \
+      --fish <($out/bin/rg --generate complete-fish) \
+      --zsh <($out/bin/rg --generate complete-zsh)
   '';
 
   doInstallCheck = true;
@@ -49,6 +53,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description = "A utility that combines the usability of The Silver Searcher with the raw speed of grep";
     homepage = "https://github.com/BurntSushi/ripgrep";
+    changelog = "https://github.com/BurntSushi/ripgrep/releases/tag/${version}";
     license = with licenses; [ unlicense /* or */ mit ];
     maintainers = with maintainers; [ globin ma27 zowoq ];
     mainProgram = "rg";
diff --git a/nixpkgs/pkgs/tools/text/ugrep/default.nix b/nixpkgs/pkgs/tools/text/ugrep/default.nix
index a8acf6f1aa42..ff034c853a7a 100644
--- a/nixpkgs/pkgs/tools/text/ugrep/default.nix
+++ b/nixpkgs/pkgs/tools/text/ugrep/default.nix
@@ -14,13 +14,13 @@
 
 stdenv.mkDerivation (finalAttrs: {
   pname = "ugrep";
-  version = "4.3.3";
+  version = "4.3.4";
 
   src = fetchFromGitHub {
     owner = "Genivia";
     repo = "ugrep";
     rev = "v${finalAttrs.version}";
-    hash = "sha256-GYqIunSApnBfct+olre0eGy8KuOtbaiPvW0tQIcBRLQ=";
+    hash = "sha256-rA6qgjzlR7a7bf5v2q1vMx1QXcKgnK5wK1Ix9CfbPro=";
   };
 
   buildInputs = [
diff --git a/nixpkgs/pkgs/tools/text/xml/rxp/default.nix b/nixpkgs/pkgs/tools/text/xml/rxp/default.nix
index 918a491ede38..b45c89af1c03 100644
--- a/nixpkgs/pkgs/tools/text/xml/rxp/default.nix
+++ b/nixpkgs/pkgs/tools/text/xml/rxp/default.nix
@@ -9,10 +9,13 @@ stdenv.mkDerivation rec {
     sha256 = "0y365r36wzj4xn1dzhb03spxljnrx8vwqbiwnnwz4630129gzpm6";
   };
 
+  env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=implicit-function-declaration -Wno-error=int-conversion";
+
   meta = {
     license = lib.licenses.gpl2Plus;
     description = "A validating XML parser written in C";
     homepage = "https://www.cogsci.ed.ac.uk/~richard/rxp.html";
     platforms = lib.platforms.unix;
+    mainProgram = "rxp";
   };
 }
diff --git a/nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix b/nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix
index 99c97452fe58..111e95c9508d 100644
--- a/nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix
+++ b/nixpkgs/pkgs/tools/text/xml/xmlstarlet/default.nix
@@ -1,4 +1,11 @@
-{ lib, stdenv, fetchurl, pkg-config, libxml2, libxslt }:
+{ lib
+, stdenv
+, fetchurl
+, autoreconfHook
+, pkg-config
+, libxml2
+, libxslt
+}:
 
 stdenv.mkDerivation rec {
   pname = "xmlstarlet";
@@ -9,7 +16,7 @@ stdenv.mkDerivation rec {
     sha256 = "1jp737nvfcf6wyb54fla868yrr39kcbijijmjpyk4lrpyg23in0m";
   };
 
-  nativeBuildInputs = [ pkg-config ];
+  nativeBuildInputs = [ autoreconfHook pkg-config ];
   buildInputs = [ libxml2 libxslt ];
 
   patches = [
@@ -17,18 +24,16 @@ stdenv.mkDerivation rec {
     ./fix-incompatible-function-pointer.patch
   ];
 
-  preConfigure =
-    ''
-      export LIBXSLT_PREFIX=${libxslt.dev}
-      export LIBXML_PREFIX=${libxml2.dev}
-      export LIBXSLT_LIBS=$(pkg-config --libs libxslt libexslt)
-      export LIBXML_LIBS=$(pkg-config --libs libxml-2.0)
-    '';
+  preConfigure = ''
+    export LIBXSLT_PREFIX=${libxslt.dev}
+    export LIBXML_PREFIX=${libxml2.dev}
+    export LIBXSLT_LIBS=$($PKG_CONFIG --libs libxslt libexslt)
+    export LIBXML_LIBS=$($PKG_CONFIG --libs libxml-2.0)
+  '';
 
-  postInstall =
-    ''
-      ln -s xml $out/bin/xmlstarlet
-    '';
+  postInstall = ''
+    ln -s xml $out/bin/xmlstarlet
+  '';
 
   meta = {
     description = "A command line tool for manipulating and querying XML data";
diff --git a/nixpkgs/pkgs/tools/text/zim-tools/default.nix b/nixpkgs/pkgs/tools/text/zim-tools/default.nix
index 855b1baf8aac..e51755dd7e44 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.2.0";
+  version = "3.3.0";
 
   src = fetchFromGitHub {
     owner = "openzim";
     repo = "zim-tools";
     rev = version;
-    sha256 = "sha256-E4E2ETuhlzBZKXMy2hNA66Vq1z2VzomgCsQp2y00XHQ=";
+    sha256 = "sha256-kPUw13GVYZ1GLb4b4ch64GkJZtf6PW1gae8F/cgyG90=";
   };
 
   nativeBuildInputs = [ meson ninja pkg-config ];
diff --git a/nixpkgs/pkgs/tools/typesetting/asciidoctorj/default.nix b/nixpkgs/pkgs/tools/typesetting/asciidoctorj/default.nix
index ac8683a36db3..91ce383f9a4d 100644
--- a/nixpkgs/pkgs/tools/typesetting/asciidoctorj/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/asciidoctorj/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     platforms = platforms.all;
     maintainers = with maintainers; [ moaxcp ];
+    mainProgram = "asciidoctorj";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/biber-ms/default.nix b/nixpkgs/pkgs/tools/typesetting/biber-ms/default.nix
index f5c161fe2cbc..9cf2bbe014f1 100644
--- a/nixpkgs/pkgs/tools/typesetting/biber-ms/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/biber-ms/default.nix
@@ -50,5 +50,6 @@ perlPackages.buildPerlModule {
     license = biberSource.meta.license;
     platforms = platforms.unix;
     maintainers = [ maintainers.xworld21 ];
+    mainProgram = "biber-ms";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/biber/default.nix b/nixpkgs/pkgs/tools/typesetting/biber/default.nix
index b09a4b092f9b..08038c41377f 100644
--- a/nixpkgs/pkgs/tools/typesetting/biber/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/biber/default.nix
@@ -31,5 +31,6 @@ perlPackages.buildPerlModule {
     license = biberSource.meta.license;
     platforms = platforms.unix;
     maintainers = [ maintainers.ttuegel ];
+    mainProgram = "biber";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/biblatex-check/default.nix b/nixpkgs/pkgs/tools/typesetting/biblatex-check/default.nix
index d3d3be0f430f..beff04156190 100644
--- a/nixpkgs/pkgs/tools/typesetting/biblatex-check/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/biblatex-check/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/Pezmc/BibLatex-Check";
     license = licenses.mit;
     maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "biblatex-check";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/coq2html/default.nix b/nixpkgs/pkgs/tools/typesetting/coq2html/default.nix
index 267309e2e35b..69b3bc0ff239 100644
--- a/nixpkgs/pkgs/tools/typesetting/coq2html/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/coq2html/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation  rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ jwiegley siraben ];
     platforms = platforms.unix;
+    mainProgram = "coq2html";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/djvu2pdf/default.nix b/nixpkgs/pkgs/tools/typesetting/djvu2pdf/default.nix
index e6c8f80f9d25..9396d43b3962 100644
--- a/nixpkgs/pkgs/tools/typesetting/djvu2pdf/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/djvu2pdf/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     homepage = "https://0x2a.at/site/projects/djvu2pdf/";
     license = lib.licenses.gpl1Only;
     platforms = lib.platforms.all;
+    mainProgram = "djvu2pdf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/docbook2odf/default.nix b/nixpkgs/pkgs/tools/typesetting/docbook2odf/default.nix
index e17acac3dd96..7608fb1228ed 100644
--- a/nixpkgs/pkgs/tools/typesetting/docbook2odf/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/docbook2odf/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "docbook2odf";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/fop/default.nix b/nixpkgs/pkgs/tools/typesetting/fop/default.nix
index 0855c442deb9..254f29d27a78 100644
--- a/nixpkgs/pkgs/tools/typesetting/fop/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/fop/default.nix
@@ -54,5 +54,6 @@ stdenv.mkDerivation rec {
     ];
     platforms = platforms.all;
     maintainers = with maintainers; [ bjornfor ];
+    mainProgram = "fop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/git-latexdiff/default.nix b/nixpkgs/pkgs/tools/typesetting/git-latexdiff/default.nix
index 154781d1ef18..e7e4351a2088 100644
--- a/nixpkgs/pkgs/tools/typesetting/git-latexdiff/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/git-latexdiff/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     maintainers = [ ];
     license = licenses.bsd3; # https://gitlab.com/git-latexdiff/git-latexdiff/issues/9
     platforms = platforms.unix;
+    mainProgram = "git-latexdiff";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/halibut/default.nix b/nixpkgs/pkgs/tools/typesetting/halibut/default.nix
index de76c4956d7a..3429df706d2f 100644
--- a/nixpkgs/pkgs/tools/typesetting/halibut/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/halibut/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ pSub ];
     platforms = with platforms; unix;
+    mainProgram = "halibut";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/hayagriva/default.nix b/nixpkgs/pkgs/tools/typesetting/hayagriva/default.nix
index 6723e1acecdb..2a49d0b727ed 100644
--- a/nixpkgs/pkgs/tools/typesetting/hayagriva/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/hayagriva/default.nix
@@ -5,20 +5,21 @@
 
 rustPlatform.buildRustPackage rec {
   pname = "hayagriva";
-  version = "0.4.0";
+  version = "0.5.0";
 
   src = fetchCrate {
     inherit pname version;
-    hash = "sha256-d4T+GF0bdMjpjwcN56yYpEw4aZCvJ19P1cbPuVhFR0A=";
+    hash = "sha256-oUIMtyQoOqn3C8XOSLFHso76GOHB54ZoLBSDWaDcqdE=";
   };
 
-  cargoHash = "sha256-mRKvCnW4XVXYzOKQ5rASwiwpLdqpEgGlq8W4gB7hHco=";
+  cargoHash = "sha256-l1iFF44qTaBu2QDxkTLZTo+R32OTu5za1qdXtq43IM8=";
 
   buildFeatures = [ "cli" ];
 
   checkFlags = [
     # requires internet access
     "--skip=try_archive"
+    "--skip=always_archive"
 
     # requires a separate large repository
     "--skip=csl::tests::test_csl"
@@ -30,5 +31,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/typst/hayagriva/releases/tag/v${version}";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "hayagriva";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/htmldoc/default.nix b/nixpkgs/pkgs/tools/typesetting/htmldoc/default.nix
index 02a1a97010c5..da54f7c62970 100644
--- a/nixpkgs/pkgs/tools/typesetting/htmldoc/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/htmldoc/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
       generates corresponding HTML, PostScript, or PDF files with an optional
       table of contents.
     '';
+    mainProgram = "htmldoc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/kramdown-asciidoc/default.nix b/nixpkgs/pkgs/tools/typesetting/kramdown-asciidoc/default.nix
index ebe57e3695f5..f3058156848e 100644
--- a/nixpkgs/pkgs/tools/typesetting/kramdown-asciidoc/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/kramdown-asciidoc/default.nix
@@ -30,6 +30,7 @@ let
       license = licenses.mit;
       maintainers = with maintainers; [ ];
       platforms = platforms.unix;
+      mainProgram = "kramdoc";
     };
   };
 in
diff --git a/nixpkgs/pkgs/tools/typesetting/lowdown/default.nix b/nixpkgs/pkgs/tools/typesetting/lowdown/default.nix
index ba510fe256b7..189ba55838b6 100644
--- a/nixpkgs/pkgs/tools/typesetting/lowdown/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/lowdown/default.nix
@@ -7,13 +7,13 @@
 
 stdenv.mkDerivation rec {
   pname = "lowdown";
-  version = "1.0.2";
+  version = "1.1.0";
 
   outputs = [ "out" "lib" "dev" "man" ];
 
   src = fetchurl {
     url = "https://kristaps.bsd.lv/lowdown/snapshots/lowdown-${version}.tar.gz";
-    hash = "sha512-tahhm2QsaC9xP6V9qWEf6HkXiyWjRo3pzEKi9tyBLvonQKUMgV+pmWkvtubUUnxYVrhTm0Xsne1lemKj9ecfWQ==";
+    hash = "sha512-EpAWTz7Zy+2qqJGgzLrt0tK7WEZ+hHbdyqzAmMiaqc6uNXscR88git6/UbTjvB9Yanvetvw9huSuyhcORCEIug==";
   };
 
   nativeBuildInputs = [ which dieHook ]
@@ -46,7 +46,7 @@ stdenv.mkDerivation rec {
 
   postInstall =
     let
-      soVersion = "3";
+      soVersion = "1";
     in
 
     # Check that soVersion is up to date even if we are not on darwin
diff --git a/nixpkgs/pkgs/tools/typesetting/mmark/default.nix b/nixpkgs/pkgs/tools/typesetting/mmark/default.nix
index 0cb100dde5e3..3e1c95ca0241 100644
--- a/nixpkgs/pkgs/tools/typesetting/mmark/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/mmark/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     homepage = "https://github.com/mmarkdown/mmark";
     license = with lib.licenses; bsd2;
     maintainers = with lib.maintainers; [ yrashk ];
+    mainProgram = "mmark";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/pdf2djvu/default.nix b/nixpkgs/pkgs/tools/typesetting/pdf2djvu/default.nix
index 9cbf61304b9a..09285cf2843b 100644
--- a/nixpkgs/pkgs/tools/typesetting/pdf2djvu/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/pdf2djvu/default.nix
@@ -62,5 +62,6 @@ stdenv.mkDerivation rec {
     homepage = "https://jwilk.net/software/pdf2djvu";
     license = licenses.gpl2;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "pdf2djvu";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/pdf2odt/default.nix b/nixpkgs/pkgs/tools/typesetting/pdf2odt/default.nix
deleted file mode 100644
index e0063d2f72e8..000000000000
--- a/nixpkgs/pkgs/tools/typesetting/pdf2odt/default.nix
+++ /dev/null
@@ -1,60 +0,0 @@
-{ lib
-, resholve
-, fetchFromGitHub
-, bc
-, coreutils
-, file
-, gawk
-, ghostscript
-, gnused
-, imagemagick
-, zip
-, bash
-, findutils
-}:
-
-resholve.mkDerivation rec {
-  pname = "pdf2odt";
-  version = "20170207";
-
-  src = fetchFromGitHub {
-    owner  = "gutschke";
-    repo   = "pdf2odt";
-    rev    = "4533bd14306c30c085001db59dbb8114ea09c360";
-    sha256 = "14f9r5f0g6jzanl54jv86ls0frvspka1p9c8dy3fnriqpm584j0r";
-  };
-
-  patches = [ ./use_mktemp.patch ];
-
-  installPhase = ''
-    install -Dm0755 pdf2odt           -t $out/bin
-    install -Dm0644 README.md LICENSE -t $out/share/doc/pdf2odt
-
-    ln -rs $out/bin/pdf2odt $out/bin/pdf2ods
-  '';
-  solutions = {
-    default = {
-      scripts = [ "bin/pdf2odt" ];
-      interpreter = "${bash}/bin/bash";
-      inputs = [
-        coreutils
-        bc
-        file
-        imagemagick
-        gawk
-        gnused
-        ghostscript
-        zip
-        findutils
-      ];
-    };
-  };
-
-  meta = with lib; {
-    description = "PDF to ODT format converter";
-    homepage    = "https://github.com/gutschke/pdf2odt";
-    license     = licenses.mit;
-    platforms   = platforms.all;
-    maintainers = with maintainers; [ peterhoeg ];
-  };
-}
diff --git a/nixpkgs/pkgs/tools/typesetting/pdf2odt/use_mktemp.patch b/nixpkgs/pkgs/tools/typesetting/pdf2odt/use_mktemp.patch
deleted file mode 100644
index 1425aa5ae6a3..000000000000
--- a/nixpkgs/pkgs/tools/typesetting/pdf2odt/use_mktemp.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff --git a/pdf2odt b/pdf2odt
-index d38bb07..e1ddf05 100755
---- a/pdf2odt
-+++ b/pdf2odt
-@@ -173,13 +173,7 @@ if [ -e "${out}" ] &&
- fi
- 
- # Set up temporary staging directory
--TMPDIR="/tmp/pdf2odt.$$"
--[ \! -e "${TMPDIR}" ] || {
--  echo "Staging directory ${TMPDIR} already exists" >&2
--  exit 1
--}
--trap 'rm -rf "${TMPDIR}"' EXIT INT TERM QUIT HUP
--mkdir -p "${TMPDIR}"
-+TMPDIR=$(mktemp -d)
- 
- # Adjust DPI so that the image fits on a letter- or a4-sized page.
- function scale() {
diff --git a/nixpkgs/pkgs/tools/typesetting/pdfchain/default.nix b/nixpkgs/pkgs/tools/typesetting/pdfchain/default.nix
index 256a8ebd6c53..6d772a6fea20 100644
--- a/nixpkgs/pkgs/tools/typesetting/pdfchain/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/pdfchain/default.nix
@@ -53,5 +53,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ hqurve ];
     platforms = platforms.unix;
+    mainProgram = "pdfchain";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/pdfgrep/default.nix b/nixpkgs/pkgs/tools/typesetting/pdfgrep/default.nix
index 3b926a3a4fdc..44854592348b 100644
--- a/nixpkgs/pkgs/tools/typesetting/pdfgrep/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/pdfgrep/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ qknight fpletz ];
     platforms = with lib.platforms; unix;
+    mainProgram = "pdfgrep";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/pdfsandwich/default.nix b/nixpkgs/pkgs/tools/typesetting/pdfsandwich/default.nix
index 26037b05664d..377a7f7bf432 100644
--- a/nixpkgs/pkgs/tools/typesetting/pdfsandwich/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/pdfsandwich/default.nix
@@ -28,5 +28,6 @@ meta = with lib; {
     license = licenses.gpl2;
     maintainers = [ maintainers.rps ];
     platforms = platforms.linux;
+    mainProgram = "pdfsandwich";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/pdftk/default.nix b/nixpkgs/pkgs/tools/typesetting/pdftk/default.nix
index b11975d83c7f..27d95c00c01b 100644
--- a/nixpkgs/pkgs/tools/typesetting/pdftk/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/pdftk/default.nix
@@ -95,5 +95,6 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ raskin averelld ];
     platforms = platforms.unix;
+    mainProgram = "pdftk";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/psutils/default.nix b/nixpkgs/pkgs/tools/typesetting/psutils/default.nix
index 3ff93ad23011..93c7b9f2a23a 100644
--- a/nixpkgs/pkgs/tools/typesetting/psutils/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/psutils/default.nix
@@ -9,9 +9,14 @@ stdenv.mkDerivation rec {
     hash = "sha256-OFPreVhLqPvieoFUJbZan38Vsljg1DoFqFa9t11YiuQ=";
   };
 
+  postPatch = ''
+    sed -i 's/void main/int main/' *.c
+  '';
+
   configurePhase = ''
     sed -e 's,/usr/local/bin/perl,${perl}/bin/perl,' \
       -e "s,/usr/local,$out," \
+      -e "s,CFLAGS =,CFLAGS = -std=c89," \
       Makefile.unix > Makefile
   '';
 
diff --git a/nixpkgs/pkgs/tools/typesetting/pulldown-cmark/default.nix b/nixpkgs/pkgs/tools/typesetting/pulldown-cmark/default.nix
index ee2b124b04ab..9a946eae732d 100644
--- a/nixpkgs/pkgs/tools/typesetting/pulldown-cmark/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/pulldown-cmark/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/raphlinus/pulldown-cmark";
     license = with lib.licenses; [ mit ];
     maintainers = with lib.maintainers; [ CobaltCause ];
+    mainProgram = "pulldown-cmark";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/rfc-bibtex/default.nix b/nixpkgs/pkgs/tools/typesetting/rfc-bibtex/default.nix
index a748983222ef..d9bed6946697 100644
--- a/nixpkgs/pkgs/tools/typesetting/rfc-bibtex/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/rfc-bibtex/default.nix
@@ -29,5 +29,6 @@ with python3.pkgs; buildPythonApplication rec {
     description = "Generate Bibtex entries for IETF RFCs and Internet-Drafts";
     license = licenses.mit;
     maintainers = with maintainers; [ teto ];
+    mainProgram = "rfcbibtex";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/satysfi/default.nix b/nixpkgs/pkgs/tools/typesetting/satysfi/default.nix
index 6d77faac76a9..7284e2cc2fdc 100644
--- a/nixpkgs/pkgs/tools/typesetting/satysfi/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/satysfi/default.nix
@@ -80,5 +80,6 @@ in
       license = licenses.lgpl3Only;
       maintainers = [ maintainers.mt-caret maintainers.marsam ];
       platforms = platforms.all;
+      mainProgram = "satysfi";
     };
   }
diff --git a/nixpkgs/pkgs/tools/typesetting/sile/default.nix b/nixpkgs/pkgs/tools/typesetting/sile/default.nix
index 3c64e8872019..f2005f491a17 100644
--- a/nixpkgs/pkgs/tools/typesetting/sile/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/sile/default.nix
@@ -137,5 +137,6 @@ stdenv.mkDerivation (finalAttrs: {
     platforms = platforms.unix;
     maintainers = with maintainers; [ doronbehar alerque ];
     license = licenses.mit;
+    mainProgram = "sile";
   };
 })
diff --git a/nixpkgs/pkgs/tools/typesetting/sshlatex/default.nix b/nixpkgs/pkgs/tools/typesetting/sshlatex/default.nix
index 8a5b4811d770..ed1252928bb3 100644
--- a/nixpkgs/pkgs/tools/typesetting/sshlatex/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/sshlatex/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3Plus;  # actually dual-licensed gpl3Plus | lppl13cplus
     platforms = lib.platforms.all;
     maintainers = [ maintainers.iblech ];
+    mainProgram = "sshlatex";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/tectonic/default.nix b/nixpkgs/pkgs/tools/typesetting/tectonic/default.nix
index 3c8713a4fe53..607e71cfbb44 100644
--- a/nixpkgs/pkgs/tools/typesetting/tectonic/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/tectonic/default.nix
@@ -30,6 +30,9 @@ rustPlatform.buildRustPackage rec {
   buildInputs = [ icu fontconfig harfbuzz openssl ]
     ++ lib.optionals stdenv.isDarwin (with darwin.apple_sdk.frameworks; [ ApplicationServices Cocoa Foundation ]);
 
+  # workaround for https://github.com/NixOS/nixpkgs/issues/166205
+  NIX_LDFLAGS = lib.optionalString (stdenv.cc.isClang && stdenv.cc.libcxx != null) " -l${stdenv.cc.libcxx.cxxabi.libName}";
+
   postInstall = lib.optionalString stdenv.isLinux ''
     substituteInPlace dist/appimage/tectonic.desktop \
       --replace Exec=tectonic Exec=$out/bin/tectonic
diff --git a/nixpkgs/pkgs/tools/typesetting/tex/auctex/default.nix b/nixpkgs/pkgs/tools/typesetting/tex/auctex/default.nix
index b0fcc3b4d476..fe053e41be1e 100644
--- a/nixpkgs/pkgs/tools/typesetting/tex/auctex/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/tex/auctex/default.nix
@@ -4,14 +4,14 @@ let auctex = stdenv.mkDerivation ( rec {
   # Make this a valid tex(live-new) package;
   # the pkgs attribute is provided with a hack below.
   pname = "auctex";
-  version = "12.3";
+  version = "13.2";
   tlType = "run";
 
   outputs = [ "out" "tex" ];
 
   src = fetchurl {
     url = "mirror://gnu/${pname}/${pname}-${version}.tar.gz";
-    hash = "sha256-L9T+MLaUV8knf+IE0+g8hHK89QDI/kqBDXREBhdMqd0=";
+    hash = "sha256-Hn5AKrz4RmlOuncZklvwlcI+8zpeZgIgHHS2ymCUQDU=";
   };
 
   buildInputs = [
@@ -22,6 +22,7 @@ let auctex = stdenv.mkDerivation ( rec {
 
   preConfigure = ''
     mkdir -p "$tex"
+    export HOME=$(mktemp -d)
   '';
 
   configureFlags = [
diff --git a/nixpkgs/pkgs/tools/typesetting/tex/texlive/build-tex-env.nix b/nixpkgs/pkgs/tools/typesetting/tex/texlive/build-tex-env.nix
index 133723cc3911..0074991eaaf6 100644
--- a/nixpkgs/pkgs/tools/typesetting/tex/texlive/build-tex-env.nix
+++ b/nixpkgs/pkgs/tools/typesetting/tex/texlive/build-tex-env.nix
@@ -58,7 +58,7 @@ let
         keySet = p: {
           key = ((p.name or "${p.pname}-${p.version}") + "-" + p.tlOutputName or p.outputName or "");
           inherit p;
-          tlDeps = p.tlDeps or (p.requiredTeXPackages or (_: [ ]) [ ]);
+          tlDeps = if p ? tlDeps then ensurePkgSets p.tlDeps else (p.requiredTeXPackages or (_: [ ]) tl);
         };
       in
       # texlive.combine: the wrapper already resolves all dependencies
diff --git a/nixpkgs/pkgs/tools/typesetting/tikzit/default.nix b/nixpkgs/pkgs/tools/typesetting/tikzit/default.nix
index 2f6d169d0cb5..44c2fed0508a 100644
--- a/nixpkgs/pkgs/tools/typesetting/tikzit/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/tikzit/default.nix
@@ -29,5 +29,6 @@ mkDerivation {
     license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.iblech maintainers.mgttlinger ];
+    mainProgram = "tikzit";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/typstfmt/default.nix b/nixpkgs/pkgs/tools/typesetting/typstfmt/default.nix
index c6c054888f82..cec70394e4f9 100644
--- a/nixpkgs/pkgs/tools/typesetting/typstfmt/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/typstfmt/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/astrale-sharp/typstfmt/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda geri1701 ];
+    mainProgram = "typstfmt";
   };
 }
diff --git a/nixpkgs/pkgs/tools/typesetting/xmlroff/default.nix b/nixpkgs/pkgs/tools/typesetting/xmlroff/default.nix
index dd8adab9ee8a..f1e7e2c3243f 100644
--- a/nixpkgs/pkgs/tools/typesetting/xmlroff/default.nix
+++ b/nixpkgs/pkgs/tools/typesetting/xmlroff/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     homepage = "http://xmlroff.org/";
     platforms = platforms.unix;
     license = licenses.bsd3;
+    mainProgram = "xmlroff";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/dvgrab/default.nix b/nixpkgs/pkgs/tools/video/dvgrab/default.nix
index c5bb05853bf9..de5c5e906bf5 100644
--- a/nixpkgs/pkgs/tools/video/dvgrab/default.nix
+++ b/nixpkgs/pkgs/tools/video/dvgrab/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation {
 
     license = licenses.gpl2Plus;
     platforms = platforms.gnu ++ platforms.linux;
+    mainProgram = "dvgrab";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/go2rtc/default.nix b/nixpkgs/pkgs/tools/video/go2rtc/default.nix
index 9b0f9bbe3f70..c6f8b66d1bcd 100644
--- a/nixpkgs/pkgs/tools/video/go2rtc/default.nix
+++ b/nixpkgs/pkgs/tools/video/go2rtc/default.nix
@@ -35,5 +35,6 @@ buildGoModule rec {
     changelog = "https://github.com/AlexxIT/go2rtc/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
+    mainProgram = "go2rtc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/gopro/default.nix b/nixpkgs/pkgs/tools/video/gopro/default.nix
index a1991772bf10..7f234ae5247a 100644
--- a/nixpkgs/pkgs/tools/video/gopro/default.nix
+++ b/nixpkgs/pkgs/tools/video/gopro/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.gpl3;
     maintainers = with maintainers; [ jonringer ];
+    mainProgram = "gopro";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/harvid/default.nix b/nixpkgs/pkgs/tools/video/harvid/default.nix
index 655d1ba3874f..2860e5f22280 100644
--- a/nixpkgs/pkgs/tools/video/harvid/default.nix
+++ b/nixpkgs/pkgs/tools/video/harvid/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ mitchmindtree ];
+    mainProgram = "harvid";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/lux/default.nix b/nixpkgs/pkgs/tools/video/lux/default.nix
index f6a4ea61f2dc..fe81c15940e0 100644
--- a/nixpkgs/pkgs/tools/video/lux/default.nix
+++ b/nixpkgs/pkgs/tools/video/lux/default.nix
@@ -7,18 +7,18 @@
 
 buildGoModule rec {
   pname = "lux";
-  version = "0.21.0";
+  version = "0.22.0";
 
   src = fetchFromGitHub {
     owner = "iawia002";
     repo = "lux";
     rev = "v${version}";
-    hash = "sha256-LCYWfF7O8wByCJNDi2BZsI7EU6wJqhcr/sbNOoQ2Src=";
+    hash = "sha256-v74+Ykz9aro1x+9psg2LnuodKE2/pCw9knZop0etQOg=";
   };
 
   nativeBuildInputs = [ makeWrapper ];
 
-  vendorHash = "sha256-wW/jrsurmyLcDX+58lp0M+snJ2avEs0HciNZ8BgIqrI=";
+  vendorHash = "sha256-1VZFKDoSuSUmYw7g6SwB/dXnFaw7+cGHKfgT96HaI/o=";
 
   ldflags = [
     "-s"
@@ -39,5 +39,6 @@ buildGoModule rec {
     changelog = "https://github.com/iawia002/lux/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ galaxy ];
+    mainProgram = "lux";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/play-with-mpv/default.nix b/nixpkgs/pkgs/tools/video/play-with-mpv/default.nix
index 9047f9062462..16e645eb4455 100644
--- a/nixpkgs/pkgs/tools/video/play-with-mpv/default.nix
+++ b/nixpkgs/pkgs/tools/video/play-with-mpv/default.nix
@@ -57,5 +57,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/Thann/play-with-mpv";
     license = licenses.mit;
     maintainers = with maintainers; [ dawidsowa ];
+    mainProgram = "play-with-mpv";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/rav1e/default.nix b/nixpkgs/pkgs/tools/video/rav1e/default.nix
index 146ff6072544..859e523dfa65 100644
--- a/nixpkgs/pkgs/tools/video/rav1e/default.nix
+++ b/nixpkgs/pkgs/tools/video/rav1e/default.nix
@@ -63,5 +63,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/xiph/rav1e/releases/tag/v${version}";
     license = licenses.bsd2;
     maintainers = [ ];
+    mainProgram = "rav1e";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/recyclarr/default.nix b/nixpkgs/pkgs/tools/video/recyclarr/default.nix
index c360d191064d..6db69039205c 100644
--- a/nixpkgs/pkgs/tools/video/recyclarr/default.nix
+++ b/nixpkgs/pkgs/tools/video/recyclarr/default.nix
@@ -26,10 +26,10 @@ let
     or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
 
   hash = {
-    x64-linux_hash = "sha256-4xBT4IuonAQPSPKedecNd6YjoOh6pe3nCXMXpNBWP1g=";
-    arm64-linux_hash = "sha256-4s/W1Xz0M1L6xm79AJy836OhNmW0Z4YoRsc7Qd5EwaM=";
-    x64-osx_hash = "sha256-IQgKbZrINt6K3ezS+XjUEYoDIYtngvo++RTpCk+SeSc=";
-    arm64-osx_hash = "sha256-9vHzGAH+fbn+x3lm3/UuNfd0Fv8s2MPPGSe5VnaASeg=";
+    x64-linux_hash = "sha256-Skf3wY52B6KnWS8YurAL0b5Sdkvp4YYn3IvHrAKyvK8=";
+    arm64-linux_hash = "sha256-66OCz13eLyAfEC3kYUniqq+QhsHoZNBJieXmmsLG5eM=";
+    x64-osx_hash = "sha256-6cNpfcjwgfxZRlBnZQrZLMPaXDHEXSbS3Z/qcx1Z3HA=";
+    arm64-osx_hash = "sha256-OkM+LgqXOHzyzEWH6D3czH86Sncym9FpfTFaacp2aN0=";
   }."${arch}-${os}_hash";
 
   libPath = {
@@ -40,7 +40,7 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "recyclarr";
-  version = "6.0.1";
+  version = "6.0.2";
 
   src = fetchurl {
     url = "https://github.com/recyclarr/recyclarr/releases/download/v${version}/recyclarr-${os}-${arch}.tar.xz";
diff --git a/nixpkgs/pkgs/tools/video/replay-sorcery/default.nix b/nixpkgs/pkgs/tools/video/replay-sorcery/default.nix
index 8f362c3beb96..7323644cdefb 100644
--- a/nixpkgs/pkgs/tools/video/replay-sorcery/default.nix
+++ b/nixpkgs/pkgs/tools/video/replay-sorcery/default.nix
@@ -58,5 +58,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ kira-bruneau ];
     platforms = platforms.linux;
+    mainProgram = "replay-sorcery";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/swfmill/default.nix b/nixpkgs/pkgs/tools/video/swfmill/default.nix
index 28d7e0039edd..c93534bf1a20 100644
--- a/nixpkgs/pkgs/tools/video/swfmill/default.nix
+++ b/nixpkgs/pkgs/tools/video/swfmill/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = "http://swfmill.org";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.linux;
+    mainProgram = "swfmill";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/vcsi/default.nix b/nixpkgs/pkgs/tools/video/vcsi/default.nix
index bb3bc4c9856c..7db0fdd6962e 100644
--- a/nixpkgs/pkgs/tools/video/vcsi/default.nix
+++ b/nixpkgs/pkgs/tools/video/vcsi/default.nix
@@ -33,5 +33,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/amietn/vcsi";
     license = licenses.mit;
     maintainers = with maintainers; [ dandellion zopieux ];
+    mainProgram = "vcsi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/vncrec/default.nix b/nixpkgs/pkgs/tools/video/vncrec/default.nix
index 02608ac16b20..3b3391284f07 100644
--- a/nixpkgs/pkgs/tools/video/vncrec/default.nix
+++ b/nixpkgs/pkgs/tools/video/vncrec/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation {
     homepage = "http://ronja.twibright.com/utils/vncrec/";
     platforms = lib.platforms.linux;
     license = lib.licenses.gpl2;
+    mainProgram = "vncrec";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/wtwitch/default.nix b/nixpkgs/pkgs/tools/video/wtwitch/default.nix
index 9b2a9a7be031..0035e184540c 100644
--- a/nixpkgs/pkgs/tools/video/wtwitch/default.nix
+++ b/nixpkgs/pkgs/tools/video/wtwitch/default.nix
@@ -67,5 +67,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ urandom ];
     platforms = platforms.all;
+    mainProgram = "wtwitch";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/yamdi/default.nix b/nixpkgs/pkgs/tools/video/yamdi/default.nix
index 6665637e6371..1bcfffb92903 100644
--- a/nixpkgs/pkgs/tools/video/yamdi/default.nix
+++ b/nixpkgs/pkgs/tools/video/yamdi/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     platforms = platforms.all;
     maintainers = [ maintainers.ryanartecona ];
+    mainProgram = "yamdi";
   };
 }
diff --git a/nixpkgs/pkgs/tools/video/yaydl/default.nix b/nixpkgs/pkgs/tools/video/yaydl/default.nix
index ce7e4ef8eebf..7dea97bf649e 100644
--- a/nixpkgs/pkgs/tools/video/yaydl/default.nix
+++ b/nixpkgs/pkgs/tools/video/yaydl/default.nix
@@ -40,5 +40,6 @@ rustPlatform.buildRustPackage rec {
     description = "Yet another youtube down loader";
     license = licenses.cddl;
     maintainers = with maintainers; [];
+    mainProgram = "yaydl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/alpine-make-vm-image/default.nix b/nixpkgs/pkgs/tools/virtualization/alpine-make-vm-image/default.nix
index 95cfaea90e43..c06efa3617f0 100644
--- a/nixpkgs/pkgs/tools/virtualization/alpine-make-vm-image/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/alpine-make-vm-image/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ qyliss ];
     license = licenses.mit;
     platforms = platforms.unix;
+    mainProgram = "alpine-make-vm-image";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/amazon-ecs-cli/default.nix b/nixpkgs/pkgs/tools/virtualization/amazon-ecs-cli/default.nix
index fa74aa26cec3..16b43012e260 100644
--- a/nixpkgs/pkgs/tools/virtualization/amazon-ecs-cli/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/amazon-ecs-cli/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ Scriptkiddi ];
     platforms = [ "x86_64-linux" "x86_64-darwin" ];
+    mainProgram = "ecs-cli";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/distrobuilder/default.nix b/nixpkgs/pkgs/tools/virtualization/distrobuilder/default.nix
index 3619d2f25a14..e6b867139165 100644
--- a/nixpkgs/pkgs/tools/virtualization/distrobuilder/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/distrobuilder/default.nix
@@ -8,7 +8,8 @@
 , gnutar
 , squashfsTools
 , debootstrap
-, fetchpatch
+, callPackage
+, nixosTests
 }:
 
 let
@@ -22,34 +23,20 @@ let
 in
 buildGoModule rec {
   pname = "distrobuilder";
-  version = "2.1";
+  version = "3.0";
 
-  vendorHash = "sha256-yRMsf8KfpNmVUX4Rn4ZPLUPFZCT/g78MKAfgbFDPVkE=";
+  vendorHash = "sha256-pFrEkZnrcx0d3oM1klQrNHH+MiLvO4V1uFQdE0kXUqM=";
 
   src = fetchFromGitHub {
     owner = "lxc";
     repo = "distrobuilder";
-    rev = "distrobuilder-${version}";
-    sha256 = "sha256-t3ECLtb0tvIzTWgjmVQDFza+kcm3abTZZMSGYjvw1qQ=";
+    rev = "refs/tags/distrobuilder-${version}";
+    sha256 = "sha256-JfME9VaqaQnrhnzhSLGUy9uU+tki1hXdnwqBUD/5XH0=";
     fetchSubmodules = false;
   };
 
   buildInputs = bins;
 
-  patches = [
-    # go.mod update: needed to to include a newer lxd which contains
-    # https://github.com/canonical/lxd/commit/d83f061a21f509d42b7a334b97403d2a019a7b52
-    # which is needed to fix the build w/glibc-2.36.
-    (fetchpatch {
-      url = "https://github.com/lxc/distrobuilder/commit/5346bcc77dd7f141a36a8da851f016d0b929835e.patch";
-      sha256 = "sha256-H6cSbY0v/FThx72AvoAvUCs2VCYN/PQ0W4H82mQQ3SI=";
-    })
-    # Fixup to keep it building after go.mod update.
-    (fetchpatch {
-      url = "https://github.com/lxc/distrobuilder/commit/2c8cbfbf603e7446efce9f30812812336ccf4f2c.patch";
-      sha256 = "sha256-qqofghcHGosR2qycGb02c8rwErFyRRhsRKdQfyah8Ds=";
-    })
-  ];
 
   # tests require a local keyserver (mkg20001/nixpkgs branch distrobuilder-with-tests) but gpg is currently broken in tests
   doCheck = false;
@@ -63,11 +50,18 @@ buildGoModule rec {
     wrapProgram $out/bin/distrobuilder --prefix PATH ":" ${lib.makeBinPath bins}
   '';
 
-  meta = with lib; {
+  passthru = {
+    tests.incus = nixosTests.incus.container;
+
+    generator = callPackage ./generator.nix { inherit src version; };
+  };
+
+  meta = {
     description = "System container image builder for LXC and LXD";
     homepage = "https://github.com/lxc/distrobuilder";
-    license = licenses.asl20;
-    maintainers = with maintainers; [ megheaiulian ];
-    platforms = platforms.linux;
+    license = lib.licenses.asl20;
+    maintainers = with lib.maintainers; [ megheaiulian adamcstephens ];
+    platforms = lib.platforms.linux;
+    mainProgram = "distrobuilder";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/distrobuilder/generator.nix b/nixpkgs/pkgs/tools/virtualization/distrobuilder/generator.nix
new file mode 100644
index 000000000000..e514a7df2e08
--- /dev/null
+++ b/nixpkgs/pkgs/tools/virtualization/distrobuilder/generator.nix
@@ -0,0 +1,19 @@
+{ stdenvNoCC, lib, src, version, makeWrapper, coreutils, findutils, gnugrep, systemd }:
+
+stdenvNoCC.mkDerivation {
+  name = "distrobuilder-nixos-generator";
+
+  inherit src version;
+
+  patches = [
+    ./nixos-generator.patch
+  ];
+
+  dontBuild = true;
+  nativeBuildInputs = [ makeWrapper ];
+
+  installPhase = ''
+    install -D -m 0555 distrobuilder/lxc.generator $out/lib/systemd/system-generators/lxc
+    wrapProgram $out/lib/systemd/system-generators/lxc --prefix PATH : ${lib.makeBinPath [coreutils findutils gnugrep systemd]}:${systemd}/lib/systemd
+  '';
+}
diff --git a/nixpkgs/pkgs/tools/virtualization/distrobuilder/nixos-generator.patch b/nixpkgs/pkgs/tools/virtualization/distrobuilder/nixos-generator.patch
new file mode 100644
index 000000000000..6194f33e1918
--- /dev/null
+++ b/nixpkgs/pkgs/tools/virtualization/distrobuilder/nixos-generator.patch
@@ -0,0 +1,113 @@
+diff --git a/distrobuilder/lxc.generator b/distrobuilder/lxc.generator
+index 0ad81d1..69dbfe7 100644
+--- a/distrobuilder/lxc.generator
++++ b/distrobuilder/lxc.generator
+@@ -25,16 +25,6 @@ is_incus_vm() {
+ 	[ -e /dev/virtio-ports/org.linuxcontainers.incus ]
+ }
+ 
+-# is_in_path succeeds if the given file exists in on of the paths
+-is_in_path() {
+-	# Don't use $PATH as that may not include all relevant paths
+-	for path in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin; do
+-		[ -e "${path}/$1" ] && return 0
+-	done
+-
+-	return 1
+-}
+-
+ ## Fix functions
+ # fix_ro_paths avoids udevd issues with /sys and /proc being writable
+ fix_ro_paths() {
+@@ -45,35 +35,6 @@ BindReadOnlyPaths=/sys /proc
+ EOF
+ }
+ 
+-# fix_nm_link_state forces the network interface to a DOWN state ahead of NetworkManager starting up
+-fix_nm_link_state() {
+-	[ -e "/sys/class/net/$1" ] || return 0
+-	ip_path=
+-	if [ -f /sbin/ip ]; then
+-		ip_path=/sbin/ip
+-	elif [ -f /bin/ip ]; then
+-		ip_path=/bin/ip
+-	else
+-		return 0
+-	fi
+-	cat <<-EOF > /run/systemd/system/network-device-down.service
+-[Unit]
+-Description=Turn off network device
+-Before=NetworkManager.service
+-Before=systemd-networkd.service
+-[Service]
+-# do not turn off if there is a default route to 169.254.0.1, i.e. the device is a routed nic
+-ExecCondition=/bin/sh -c '! /usr/bin/grep -qs 00000000.0100FEA9 /proc/net/route'
+-ExecStart=-${ip_path} link set $1 down
+-Type=oneshot
+-RemainAfterExit=true
+-[Install]
+-WantedBy=default.target
+-EOF
+-	mkdir -p /run/systemd/system/default.target.wants
+-	ln -sf /run/systemd/system/network-device-down.service /run/systemd/system/default.target.wants/network-device-down.service
+-}
+-
+ # fix_systemd_override_unit generates a unit specific override
+ fix_systemd_override_unit() {
+ 	dropin_dir="/run/systemd/${1}.d"
+@@ -112,16 +73,7 @@ fix_systemd_mask() {
+ # fix_systemd_udev_trigger overrides the systemd-udev-trigger.service to match the latest version
+ # of the file which uses "ExecStart=-" instead of "ExecStart=".
+ fix_systemd_udev_trigger() {
+-	cmd=
+-	if [ -f /usr/bin/udevadm ]; then
+-		cmd=/usr/bin/udevadm
+-	elif [ -f /sbin/udevadm ]; then
+-		cmd=/sbin/udevadm
+-	elif [ -f /bin/udevadm ]; then
+-		cmd=/bin/udevadm
+-	else
+-		return 0
+-	fi
++	cmd=udevadm
+ 
+ 	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
+ }
+ 
+ ## 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
+ 
+ # Exit immediately if not an Incus/LXC container
+ is_lxc_container || exit 0
+ 
+-# Check for NetworkManager
+-nm_exists=0
+-
+-is_in_path NetworkManager && nm_exists=1
+-
+ # Determine systemd version
+-for path in /usr/lib/systemd/systemd /lib/systemd/systemd; do
+-	[ -x "${path}" ] || continue
+-
+-	systemd_version="$("${path}" --version | head -n1 | cut -d' ' -f2)"
+-	break
+-done
++systemd_version="$(systemd --version | head -n1 | cut -d' ' -f2)"
+ 
+ # Determine distro name and release
+ ID=""
+@@ -222,11 +162,6 @@ ACTION=="add|change|move", ENV{ID_NET_DRIVER}=="veth", ENV{INTERFACE}=="eth[0-9]
+ EOF
+ fi
+ 
+-# Workarounds for NetworkManager in containers
+-if [ "${nm_exists}" -eq 1 ]; then
+-	fix_nm_link_state eth0
+-fi
+-
+ # Allow masking units created by the lxc system-generator.
+ for d in /etc/systemd/system /usr/lib/systemd/system /lib/systemd/system; do
+ 	if ! [ -d "${d}" ]; then
diff --git a/nixpkgs/pkgs/tools/virtualization/extra-container/default.nix b/nixpkgs/pkgs/tools/virtualization/extra-container/default.nix
index 894622d74eb0..71ba276f4bd4 100644
--- a/nixpkgs/pkgs/tools/virtualization/extra-container/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/extra-container/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = [ maintainers.erikarvstedt ];
+    mainProgram = "extra-container";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/govc/default.nix b/nixpkgs/pkgs/tools/virtualization/govc/default.nix
index a2c37dfb679e..18d5a83a591d 100644
--- a/nixpkgs/pkgs/tools/virtualization/govc/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/govc/default.nix
@@ -26,5 +26,6 @@ buildGoModule rec {
     homepage = "https://github.com/vmware/govmomi/tree/master/govc";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ nicknovitski ];
+    mainProgram = "govc";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/jumppad/default.nix b/nixpkgs/pkgs/tools/virtualization/jumppad/default.nix
index 174fe292f459..c10b6887aeec 100644
--- a/nixpkgs/pkgs/tools/virtualization/jumppad/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/jumppad/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     homepage = "https://jumppad.dev";
     license = licenses.mpl20;
     maintainers = with maintainers; [ cpcloud ];
+    mainProgram = "jumppad";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/kubevirt/default.nix b/nixpkgs/pkgs/tools/virtualization/kubevirt/default.nix
index 733c2ef62323..67027dc4bd28 100644
--- a/nixpkgs/pkgs/tools/virtualization/kubevirt/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/kubevirt/default.nix
@@ -8,13 +8,13 @@
 
 buildGoModule rec {
   pname = "kubevirt";
-  version = "1.0.1";
+  version = "1.1.0";
 
   src = fetchFromGitHub {
     owner = "kubevirt";
     repo = "kubevirt";
     rev = "v${version}";
-    sha256 = "sha256-L+spWtYuXq0bPYmE1eGnzTfCAh8Q3j5DUS+k6dNGdOU=";
+    sha256 = "sha256-dW2rHW/37Jpk3vuu3O87nynK8Mp0IAqpkRvBDxT/++I=";
   };
 
   vendorHash = null;
@@ -49,5 +49,6 @@ buildGoModule rec {
     homepage = "https://kubevirt.io/";
     license = licenses.asl20;
     maintainers = with maintainers; [ haslersn ];
+    mainProgram = "virtctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/lxd-image-server/default.nix b/nixpkgs/pkgs/tools/virtualization/lxd-image-server/default.nix
index aeb6ac336932..43f46a8a72fc 100644
--- a/nixpkgs/pkgs/tools/virtualization/lxd-image-server/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/lxd-image-server/default.nix
@@ -46,5 +46,6 @@ python3.pkgs.buildPythonApplication rec {
     license = licenses.asl20;
     platforms = platforms.unix;
     maintainers = with maintainers; [ mkg20001 ];
+    mainProgram = "lxd-image-server";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/marathonctl/default.nix b/nixpkgs/pkgs/tools/virtualization/marathonctl/default.nix
index e8f27e00d851..85576b4f6640 100644
--- a/nixpkgs/pkgs/tools/virtualization/marathonctl/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/marathonctl/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     description = "CLI tool for Marathon";
     license = licenses.mit;
     maintainers = with maintainers; [ manveru ];
+    mainProgram = "marathonctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/mininet/default.nix b/nixpkgs/pkgs/tools/virtualization/mininet/default.nix
index ccc79d36c8f6..c33389861dd0 100644
--- a/nixpkgs/pkgs/tools/virtualization/mininet/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/mininet/default.nix
@@ -9,7 +9,7 @@ let
 in
 stdenv.mkDerivation rec {
   pname = "mininet";
-  version = "2.3.0";
+  version = "2.3.1b4";
 
   outputs = [ "out" "py" ];
 
@@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
     owner = "mininet";
     repo = "mininet";
     rev = version;
-    sha256 = "sha256-bCppmeB+zQMKTptnzhsXtl72XJXU3USo7cQgP1Z6SrY=";
+    hash = "sha256-Z7Vbfu0EJ4+rCpckXrt3hgxeB9N2nnyPIXgPBnpV4uw=";
   };
 
   buildFlags = [ "mnexec" ];
@@ -41,11 +41,10 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Emulator for rapid prototyping of Software Defined Networks";
-    license = {
-      fullName = "Mininet 2.3.0 License";
-    };
+    license = licenses.bsd3;
     platforms = platforms.linux;
     homepage = "https://github.com/mininet/mininet";
     maintainers = with maintainers; [ teto ];
+    mainProgram = "mnexec";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/mkosi/default.nix b/nixpkgs/pkgs/tools/virtualization/mkosi/default.nix
index 3b1a4988f47d..38ffb1cd4838 100644
--- a/nixpkgs/pkgs/tools/virtualization/mkosi/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/mkosi/default.nix
@@ -5,6 +5,7 @@
 , python3
 , bubblewrap
 , systemd
+, pandoc
 
   # Python packages
 , setuptools
@@ -60,14 +61,16 @@ let
 in
 buildPythonApplication rec {
   pname = "mkosi";
-  version = "18";
+  version = "19";
   format = "pyproject";
 
+  outputs = [ "out" "man" ];
+
   src = fetchFromGitHub {
     owner = "systemd";
     repo = "mkosi";
     rev = "v${version}";
-    hash = "sha256-bnd2P6lq1XqKed3m4hDYrR9IcdrPaJxNBL2Z6jCruV4=";
+    hash = "sha256-KjJM+KZCgUnsaEN2ZorhH0AR5nmiV2h3i7Vb3KdGFtI=";
   };
 
   # Fix ctypes finding library
@@ -84,15 +87,12 @@ buildPythonApplication rec {
   '';
 
   nativeBuildInputs = [
+    pandoc
     setuptools
     setuptools-scm
     wheel
   ];
 
-  makeWrapperArgs = [
-    "--set MKOSI_INTERPRETER ${python3pefile}/bin/python3"
-  ];
-
   propagatedBuildInputs = [
     systemdForMkosi
     bubblewrap
@@ -100,15 +100,28 @@ buildPythonApplication rec {
     qemu
   ];
 
-  postInstall = ''
-    wrapProgram $out/bin/mkosi \
-      --prefix PYTHONPATH : "$PYTHONPATH"
+  postBuild = ''
+    ./tools/make-man-page.sh
   '';
 
   checkInputs = [
     pytestCheckHook
   ];
 
+  pythonImportsCheck = [
+    "mkosi"
+  ];
+
+  postInstall = ''
+    mkdir -p $out/share/man/man1
+    mv mkosi/resources/mkosi.1 $out/share/man/man1/
+  '';
+
+  makeWrapperArgs = [
+    "--set MKOSI_INTERPRETER ${python3pefile}/bin/python3"
+    "--prefix PYTHONPATH : \"$PYTHONPATH\""
+  ];
+
   meta = with lib; {
     description = "Build legacy-free OS images";
     homepage = "https://github.com/systemd/mkosi";
diff --git a/nixpkgs/pkgs/tools/virtualization/multipass/default.nix b/nixpkgs/pkgs/tools/virtualization/multipass/default.nix
index f69ee671a404..8be9488c46e5 100644
--- a/nixpkgs/pkgs/tools/virtualization/multipass/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/multipass/default.nix
@@ -46,8 +46,14 @@ stdenv.mkDerivation
     owner = "canonical";
     repo = "multipass";
     rev = "refs/tags/v${version}";
-    hash = "sha256-OWZiVw3ztx1g1slq/5a7/JcLdDNB5RqYT5U3w1UXUpg=";
+    hash = "sha256-1k0jbYMwfYuHmM/Cm76sbo3+mN6WypALMQBwlZ+9d+c=";
     fetchSubmodules = true;
+    leaveDotGit = true;
+    postFetch = ''
+      # Workaround for https://github.com/NixOS/nixpkgs/issues/8567
+      cd $out
+      rm -rf .git
+    '';
   };
 
   patches = [
diff --git a/nixpkgs/pkgs/tools/virtualization/nixos-shell/default.nix b/nixpkgs/pkgs/tools/virtualization/nixos-shell/default.nix
index 59225a5162e3..6f7340835523 100644
--- a/nixpkgs/pkgs/tools/virtualization/nixos-shell/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/nixos-shell/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ mic92 ];
     platforms = platforms.unix;
+    mainProgram = "nixos-shell";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/onmetal-image/default.nix b/nixpkgs/pkgs/tools/virtualization/onmetal-image/default.nix
index 7e324fc03cc3..2b535dfb6d93 100644
--- a/nixpkgs/pkgs/tools/virtualization/onmetal-image/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/onmetal-image/default.nix
@@ -35,5 +35,6 @@ buildGoModule rec {
     homepage = "https://github.com/onmetal/onmetal-image";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
+    mainProgram = "onmetal-image";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/ovftool/default.nix b/nixpkgs/pkgs/tools/virtualization/ovftool/default.nix
index 5cc8fb01b41b..9bdf4429ff16 100644
--- a/nixpkgs/pkgs/tools/virtualization/ovftool/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/ovftool/default.nix
@@ -145,5 +145,6 @@ stdenv.mkDerivation rec {
     license = licenses.unfree;
     maintainers = with maintainers; [ numinit wolfangaukang ];
     platforms = builtins.attrNames ovftoolSystems;
+    mainProgram = "ovftool";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/reg/default.nix b/nixpkgs/pkgs/tools/virtualization/reg/default.nix
index 84aecc3ff671..545b208035b3 100644
--- a/nixpkgs/pkgs/tools/virtualization/reg/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/reg/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     homepage = "https://github.com/genuinetools/reg";
     license = licenses.mit;
     maintainers = with maintainers; [ ereslibre ];
+    mainProgram = "reg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/supermin/default.nix b/nixpkgs/pkgs/tools/virtualization/supermin/default.nix
index b970b66a8f64..b7600f6bb898 100644
--- a/nixpkgs/pkgs/tools/virtualization/supermin/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/supermin/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation (finalAttrs: {
     maintainers = with maintainers; [ qyliss ];
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
+    mainProgram = "supermin";
   };
 })
diff --git a/nixpkgs/pkgs/tools/virtualization/udocker/default.nix b/nixpkgs/pkgs/tools/virtualization/udocker/default.nix
index 4fbccf813f2f..e13376211a89 100644
--- a/nixpkgs/pkgs/tools/virtualization/udocker/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/udocker/default.nix
@@ -53,6 +53,7 @@ python3Packages.buildPythonApplication rec {
     license = licenses.asl20;
     maintainers = [ maintainers.bzizou ];
     platforms = platforms.linux;
+    mainProgram = "udocker";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/uefi-run/default.nix b/nixpkgs/pkgs/tools/virtualization/uefi-run/default.nix
index 9486995538ce..9d954d9ed03d 100644
--- a/nixpkgs/pkgs/tools/virtualization/uefi-run/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/uefi-run/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/Richard-W/uefi-run";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
+    mainProgram = "uefi-run";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/vpsfree-client/default.nix b/nixpkgs/pkgs/tools/virtualization/vpsfree-client/default.nix
index 749f6820320b..cffdc267e53c 100644
--- a/nixpkgs/pkgs/tools/virtualization/vpsfree-client/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/vpsfree-client/default.nix
@@ -13,5 +13,6 @@ bundlerApp {
     maintainers = with maintainers; [ aither64 zimbatm ];
     license = licenses.gpl3;
     platforms = platforms.unix;
+    mainProgram = "vpsfreectl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/virtualization/xva-img/default.nix b/nixpkgs/pkgs/tools/virtualization/xva-img/default.nix
index e4f75c8ad3ca..bb5c9d5a5992 100644
--- a/nixpkgs/pkgs/tools/virtualization/xva-img/default.nix
+++ b/nixpkgs/pkgs/tools/virtualization/xva-img/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     description = "Tool for converting Xen images to raw and back";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.unix;
+    mainProgram = "xva-img";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/aw-watcher-window-wayland/default.nix b/nixpkgs/pkgs/tools/wayland/aw-watcher-window-wayland/default.nix
index 20235737d98b..6ffaf29a77d3 100644
--- a/nixpkgs/pkgs/tools/wayland/aw-watcher-window-wayland/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/aw-watcher-window-wayland/default.nix
@@ -35,5 +35,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/ActivityWatch/aw-watcher-window-wayland";
     license = licenses.mpl20;
     maintainers = with maintainers; [ esau79p ];
+    mainProgram = "aw-watcher-window-wayland";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/chayang/default.nix b/nixpkgs/pkgs/tools/wayland/chayang/default.nix
index 30780ed90a8b..d92a729bd28e 100644
--- a/nixpkgs/pkgs/tools/wayland/chayang/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/chayang/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation (finalAttrs: {
     '';
     maintainers = with maintainers; [ mxkrsv ];
     platforms = platforms.linux;
+    mainProgram = "chayang";
   };
 })
diff --git a/nixpkgs/pkgs/tools/wayland/clapboard/default.nix b/nixpkgs/pkgs/tools/wayland/clapboard/default.nix
index 151675bf3caf..4f14de873375 100644
--- a/nixpkgs/pkgs/tools/wayland/clapboard/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/clapboard/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ dit7ya ];
     platforms = platforms.linux;
+    mainProgram = "clapboard";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/clipman/default.nix b/nixpkgs/pkgs/tools/wayland/clipman/default.nix
index cf229b3c2e72..05eab08da9b6 100644
--- a/nixpkgs/pkgs/tools/wayland/clipman/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/clipman/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ ma27 ];
     platforms = platforms.linux;
+    mainProgram = "clipman";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/gnome-randr/default.nix b/nixpkgs/pkgs/tools/wayland/gnome-randr/default.nix
index 130b29f8412d..51c460852c0a 100644
--- a/nixpkgs/pkgs/tools/wayland/gnome-randr/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/gnome-randr/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage {
     license = licenses.mit;
     maintainers = [ maintainers.roberth ];
     platforms = platforms.linux;
+    mainProgram = "gnome-randr";
   };
 }
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 f6412a3ca745..e8c0d543d6e7 100644
--- a/nixpkgs/pkgs/tools/wayland/hyprland-per-window-layout/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/hyprland-per-window-layout/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = [ maintainers.azazak123 ];
     platforms = platforms.linux;
+    mainProgram = "hyprland-per-window-layout";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/proycon-wayout/default.nix b/nixpkgs/pkgs/tools/wayland/proycon-wayout/default.nix
index 265d585ce1df..7b0aa87694d1 100644
--- a/nixpkgs/pkgs/tools/wayland/proycon-wayout/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/proycon-wayout/default.nix
@@ -43,5 +43,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ wentam ];
+    mainProgram = "proycon-wayout";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/shikane/default.nix b/nixpkgs/pkgs/tools/wayland/shikane/default.nix
index 229217d0ac23..b9cac576b587 100644
--- a/nixpkgs/pkgs/tools/wayland/shikane/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/shikane/default.nix
@@ -41,5 +41,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ michaelpachec0 natsukium ];
     platforms = platforms.linux;
+    mainProgram = "shikane";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/swaycwd/default.nix b/nixpkgs/pkgs/tools/wayland/swaycwd/default.nix
deleted file mode 100644
index d53dc95dad5a..000000000000
--- a/nixpkgs/pkgs/tools/wayland/swaycwd/default.nix
+++ /dev/null
@@ -1,33 +0,0 @@
-{ lib
-, nimPackages
-, fetchFromGitLab
-, enableShells ? [ "bash" "zsh" "fish" "sh" "posh" "codium" ]
-}:
-nimPackages.buildNimPackage rec{
-  pname = "swaycwd";
-  version = "0.2.1";
-
-  src = fetchFromGitLab {
-    owner = "cab404";
-    repo = pname;
-    rev = "v${version}";
-    hash = "sha256-R/LnojbA0vBQVivGLaoM0+M4qVJ7vjf4kggB59i896w=";
-  };
-
-  preConfigure = ''
-    {
-      echo 'let enabledShells: seq[string] = @${builtins.toJSON enableShells}'
-      echo 'export enabledShells'
-    } > src/shells.nim
-  '';
-
-  nimFlags = [ "--opt:speed" ];
-
-  meta = with lib; {
-    homepage = "https://gitlab.com/cab404/swaycwd";
-    description = "Returns cwd for shell in currently focused sway window, or home directory if cannot find shell";
-    maintainers = with maintainers; [ cab404 ];
-    platforms = platforms.linux;
-    license = licenses.gpl3Only;
-  };
-}
diff --git a/nixpkgs/pkgs/tools/wayland/swayimg/default.nix b/nixpkgs/pkgs/tools/wayland/swayimg/default.nix
index 8f483e79a4da..78a7ab67bad9 100644
--- a/nixpkgs/pkgs/tools/wayland/swayimg/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/swayimg/default.nix
@@ -74,5 +74,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ matthewcroughan ];
     platforms = platforms.linux;
+    mainProgram = "swayimg";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/swaykbdd/default.nix b/nixpkgs/pkgs/tools/wayland/swaykbdd/default.nix
index 36ab908dfe50..c4ab6098f21b 100644
--- a/nixpkgs/pkgs/tools/wayland/swaykbdd/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/swaykbdd/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ ivankovnatsky ];
     platforms = platforms.linux;
+    mainProgram = "swaykbdd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/swayrbar/default.nix b/nixpkgs/pkgs/tools/wayland/swayrbar/default.nix
index bd4ef671de46..f8f085f1632b 100644
--- a/nixpkgs/pkgs/tools/wayland/swayrbar/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/swayrbar/default.nix
@@ -33,5 +33,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ gpl3Plus ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ sebtm ];
+    mainProgram = "swayrbar";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/swaysome/default.nix b/nixpkgs/pkgs/tools/wayland/swaysome/default.nix
index 8c4c2eef5d52..4acf4115a048 100644
--- a/nixpkgs/pkgs/tools/wayland/swaysome/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/swaysome/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ esclear ];
     platforms = platforms.linux;
+    mainProgram = "swaysome";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/way-displays/default.nix b/nixpkgs/pkgs/tools/wayland/way-displays/default.nix
index bac42d39fd1a..ffd16ac50c08 100644
--- a/nixpkgs/pkgs/tools/wayland/way-displays/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/way-displays/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ simoneruffini ];
     platforms = platforms.linux;
+    mainProgram = "way-displays";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/waylogout/default.nix b/nixpkgs/pkgs/tools/wayland/waylogout/default.nix
index 553d1a9fd593..6bf3b89eea40 100644
--- a/nixpkgs/pkgs/tools/wayland/waylogout/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/waylogout/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation {
     license = licenses.mit;
     maintainers = with maintainers; [ dit7ya ];
     platforms = platforms.linux;
+    mainProgram = "waylogout";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/waynergy/default.nix b/nixpkgs/pkgs/tools/wayland/waynergy/default.nix
index 646ed3698504..b72b057793f9 100644
--- a/nixpkgs/pkgs/tools/wayland/waynergy/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/waynergy/default.nix
@@ -39,6 +39,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/r-c-f/waynergy";
     license = licenses.mit;
     platforms = platforms.linux;
-    maintainers = with maintainers; [ maxhero pedrohlc ];
+    maintainers = with maintainers; [ maxhero ];
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wayout/default.nix b/nixpkgs/pkgs/tools/wayland/wayout/default.nix
index ca3a3f419116..b548279d401e 100644
--- a/nixpkgs/pkgs/tools/wayland/wayout/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wayout/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ onny ];
     platforms = platforms.linux;
+    mainProgram = "wayout";
   };
 
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wdomirror/default.nix b/nixpkgs/pkgs/tools/wayland/wdomirror/default.nix
index 486bed320c58..8796b2036dd5 100644
--- a/nixpkgs/pkgs/tools/wayland/wdomirror/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wdomirror/default.nix
@@ -51,5 +51,6 @@ stdenv.mkDerivation {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ jpas ];
+    mainProgram = "wdomirror";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wev/default.nix b/nixpkgs/pkgs/tools/wayland/wev/default.nix
index 506b67d14e5b..c4913e6f75f5 100644
--- a/nixpkgs/pkgs/tools/wayland/wev/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wev/default.nix
@@ -40,6 +40,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ primeos ];
     platforms = platforms.linux;
-
+    mainProgram = "wev";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wl-color-picker/default.nix b/nixpkgs/pkgs/tools/wayland/wl-color-picker/default.nix
index 9fcbc76bff28..bb5f21ded61d 100644
--- a/nixpkgs/pkgs/tools/wayland/wl-color-picker/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wl-color-picker/default.nix
@@ -58,5 +58,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
     platforms = platforms.linux;
+    mainProgram = "wl-color-picker";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wl-gammactl/default.nix b/nixpkgs/pkgs/tools/wayland/wl-gammactl/default.nix
index 3aae67b47359..7cb8eb6e7fb6 100644
--- a/nixpkgs/pkgs/tools/wayland/wl-gammactl/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wl-gammactl/default.nix
@@ -1,6 +1,6 @@
 { lib, stdenv, fetchFromGitHub
 , meson, pkg-config, ninja
-, wayland, wayland-scanner, wlroots, wlr-protocols, gtk3, glib
+, wayland, wayland-scanner, wlr-protocols, gtk3, glib
 }:
 
 stdenv.mkDerivation rec {
@@ -16,13 +16,15 @@ stdenv.mkDerivation rec {
 
   strictDeps = true;
   nativeBuildInputs = [ meson pkg-config ninja glib wayland-scanner ];
-  buildInputs = [ wayland wlroots gtk3 ];
+  buildInputs = [ wayland gtk3 ];
 
   postUnpack = ''
     rmdir source/wlr-protocols
     ln -s ${wlr-protocols}/share/wlr-protocols source
   '';
 
+  patches = [ ./dont-need-wlroots.diff ];
+
   postPatch = ''
     substituteInPlace meson.build --replace "git = find_program('git')" "git = 'false'"
   '';
@@ -37,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ lodi ];
+    mainProgram = "wl-gammactl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wl-gammactl/dont-need-wlroots.diff b/nixpkgs/pkgs/tools/wayland/wl-gammactl/dont-need-wlroots.diff
new file mode 100644
index 000000000000..a5eeab64a7bb
--- /dev/null
+++ b/nixpkgs/pkgs/tools/wayland/wl-gammactl/dont-need-wlroots.diff
@@ -0,0 +1,20 @@
+diff --git a/meson.build b/meson.build
+index 5253f52..f5ff82e 100644
+--- a/meson.build
++++ b/meson.build
+@@ -6,7 +6,6 @@ project(
+ 
+ # Define dependecies
+ dep_gtk3 = dependency('gtk+-3.0')
+-dep_wlroots = dependency('wlroots')
+ dep_wayland_client = dependency('wayland-client')
+ 
+ 
+@@ -75,7 +74,6 @@ executable(
+ 	'wl-gammactl',
+ 	sources,
+ 	dependencies : [
+-		dep_wlroots,
+ 		dep_wayland_client,
+ 		dep_gtk3
+ 	],
diff --git a/nixpkgs/pkgs/tools/wayland/wlay/default.nix b/nixpkgs/pkgs/tools/wayland/wlay/default.nix
index 3a80e0627e37..c2330de5f7da 100644
--- a/nixpkgs/pkgs/tools/wayland/wlay/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wlay/default.nix
@@ -53,5 +53,6 @@ stdenv.mkDerivation {
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ AndersonTorres ];
     inherit (wayland.meta) platforms;
+    mainProgram = "wlay";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wlprop/default.nix b/nixpkgs/pkgs/tools/wayland/wlprop/default.nix
index 67c4918b371f..0637d0596ca2 100644
--- a/nixpkgs/pkgs/tools/wayland/wlprop/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wlprop/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ sebtm ];
     platforms = platforms.linux;
+    mainProgram = "wlprop";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wlr-randr/default.nix b/nixpkgs/pkgs/tools/wayland/wlr-randr/default.nix
index d9f7bc246cd0..41a1d2786575 100644
--- a/nixpkgs/pkgs/tools/wayland/wlr-randr/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wlr-randr/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ ma27 ];
     platforms = platforms.linux;
+    mainProgram = "wlr-randr";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wlr-which-key/default.nix b/nixpkgs/pkgs/tools/wayland/wlr-which-key/default.nix
index d333f1525402..bef65f8bc9db 100644
--- a/nixpkgs/pkgs/tools/wayland/wlr-which-key/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wlr-which-key/default.nix
@@ -38,5 +38,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ xlambein ];
     platforms = platforms.linux;
+    mainProgram = "wlr-which-key";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wlrctl/default.nix b/nixpkgs/pkgs/tools/wayland/wlrctl/default.nix
index ebe6629f3704..130c54731eaa 100644
--- a/nixpkgs/pkgs/tools/wayland/wlrctl/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wlrctl/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ puffnfresh artturin ];
     platforms = platforms.linux;
+    mainProgram = "wlrctl";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wlsunset/default.nix b/nixpkgs/pkgs/tools/wayland/wlsunset/default.nix
index 8dac99d93e45..df0f52fdf79d 100644
--- a/nixpkgs/pkgs/tools/wayland/wlsunset/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wlsunset/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ primeos ];
+    mainProgram = "wlsunset";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wluma/default.nix b/nixpkgs/pkgs/tools/wayland/wluma/default.nix
index 0dfc572c9b20..07142210c303 100644
--- a/nixpkgs/pkgs/tools/wayland/wluma/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wluma/default.nix
@@ -51,5 +51,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.isc;
     maintainers = with maintainers; [ yshym jmc-figueira ];
     platforms = platforms.linux;
+    mainProgram = "wluma";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wob/default.nix b/nixpkgs/pkgs/tools/wayland/wob/default.nix
index 32fad72384f9..67f7904192f9 100644
--- a/nixpkgs/pkgs/tools/wayland/wob/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wob/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ primeos ];
     platforms = platforms.linux;
+    mainProgram = "wob";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wpaperd/default.nix b/nixpkgs/pkgs/tools/wayland/wpaperd/default.nix
index 76a9bd5e24dd..dc7ce198e8e7 100644
--- a/nixpkgs/pkgs/tools/wayland/wpaperd/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wpaperd/default.nix
@@ -42,5 +42,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ DPDmancul ];
+    mainProgram = "wpaperd";
   };
 }
diff --git a/nixpkgs/pkgs/tools/wayland/wshowkeys/default.nix b/nixpkgs/pkgs/tools/wayland/wshowkeys/default.nix
index 268dbd8ddbc9..ef0c6fd6cd34 100644
--- a/nixpkgs/pkgs/tools/wayland/wshowkeys/default.nix
+++ b/nixpkgs/pkgs/tools/wayland/wshowkeys/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     # TODO: gpl3Only or gpl3Plus (ask upstream)?
     platforms = platforms.linux;
     maintainers = with maintainers; [ primeos berbiche ];
+    mainProgram = "wshowkeys";
   };
 }