about summary refs log tree commit diff
diff options
context:
space:
mode:
authorh7x4 <h7x4@nani.wtf>2023-11-23 22:09:35 +0100
committerBjørn Forsman <bjorn.forsman@gmail.com>2023-11-24 21:01:03 +0100
commit12315f53ff6afad470ece13a666c21dd8aad770f (patch)
treeef19ddaac26575ed4cbb5887b528c6e0aa6a20ab
parent14caf2eb45eebce6a8b6289882546bea6beba321 (diff)
treewide: add mainProgram
-rw-r--r--pkgs/games/atlauncher/default.nix1
-rw-r--r--pkgs/games/classicube/default.nix1
-rw-r--r--pkgs/games/gamepad-tool/default.nix1
-rw-r--r--pkgs/games/ivan/default.nix1
-rw-r--r--pkgs/games/mudlet/default.nix1
-rw-r--r--pkgs/games/rili/default.nix1
-rw-r--r--pkgs/games/steam-tui/default.nix1
-rw-r--r--pkgs/games/stepmania/default.nix1
-rw-r--r--pkgs/games/teetertorture/default.nix1
-rw-r--r--pkgs/games/xbill/default.nix1
-rw-r--r--pkgs/games/zaz/default.nix1
-rw-r--r--pkgs/games/zoom/default.nix1
-rw-r--r--pkgs/misc/ananicy-cpp/default.nix1
-rw-r--r--pkgs/misc/ananicy/default.nix1
-rw-r--r--pkgs/misc/apulse/default.nix1
-rw-r--r--pkgs/misc/autoadb/default.nix1
-rw-r--r--pkgs/misc/autotiling-rs/default.nix1
-rw-r--r--pkgs/misc/autotiling/default.nix1
-rw-r--r--pkgs/misc/doge/default.nix1
-rw-r--r--pkgs/misc/fastly/default.nix1
-rw-r--r--pkgs/misc/frescobaldi/default.nix1
-rw-r--r--pkgs/misc/lightspark/default.nix1
-rw-r--r--pkgs/misc/long-shebang/default.nix1
-rw-r--r--pkgs/misc/lssecret/default.nix1
-rw-r--r--pkgs/misc/moonfire-nvr/default.nix1
-rw-r--r--pkgs/misc/mxt-app/default.nix1
-rw-r--r--pkgs/misc/nflz/default.nix1
-rw-r--r--pkgs/misc/opcua-client-gui/default.nix1
-rw-r--r--pkgs/misc/plasma-hud/default.nix1
-rw-r--r--pkgs/misc/present/default.nix1
-rw-r--r--pkgs/misc/ptouch-print/default.nix1
-rw-r--r--pkgs/misc/pylode/default.nix1
-rw-r--r--pkgs/misc/rich-cli/default.nix1
-rw-r--r--pkgs/misc/rivalcfg/default.nix1
-rw-r--r--pkgs/misc/rkdeveloptool-pine64/default.nix1
-rw-r--r--pkgs/misc/rkdeveloptool/default.nix1
-rw-r--r--pkgs/misc/sailsd/default.nix1
-rw-r--r--pkgs/misc/scrcpy/default.nix1
-rw-r--r--pkgs/misc/solfege/default.nix1
-rw-r--r--pkgs/misc/t-rec/default.nix1
-rw-r--r--pkgs/misc/tpm2-pkcs11/default.nix1
-rw-r--r--pkgs/misc/uq/default.nix1
-rw-r--r--pkgs/misc/urbit/default.nix1
-rw-r--r--pkgs/misc/wiki-tui/default.nix1
-rw-r--r--pkgs/misc/zeyple/default.nix1
-rw-r--r--pkgs/servers/alice-lg/default.nix1
-rw-r--r--pkgs/servers/allmark/default.nix1
-rw-r--r--pkgs/servers/antennas/default.nix1
-rw-r--r--pkgs/servers/asouldocs/default.nix1
-rw-r--r--pkgs/servers/audiobookshelf/default.nix1
-rw-r--r--pkgs/servers/authelia/default.nix1
-rw-r--r--pkgs/servers/baserow/default.nix1
-rw-r--r--pkgs/servers/binserve/default.nix1
-rw-r--r--pkgs/servers/birdwatcher/default.nix1
-rw-r--r--pkgs/servers/confluencepot/default.nix1
-rw-r--r--pkgs/servers/db-rest/default.nix1
-rw-r--r--pkgs/servers/eris-go/default.nix1
-rw-r--r--pkgs/servers/gnss-share/default.nix1
-rw-r--r--pkgs/servers/go-autoconfig/default.nix1
-rw-r--r--pkgs/servers/hiraeth/default.nix1
-rw-r--r--pkgs/servers/imaginary/default.nix1
-rw-r--r--pkgs/servers/jellyseerr/default.nix1
-rw-r--r--pkgs/servers/jitsi-excalidraw/default.nix1
-rw-r--r--pkgs/servers/komga/default.nix1
-rw-r--r--pkgs/servers/lenpaste/default.nix1
-rw-r--r--pkgs/servers/mautrix-discord/default.nix1
-rw-r--r--pkgs/servers/mautrix-googlechat/default.nix1
-rw-r--r--pkgs/servers/mautrix-telegram/default.nix1
-rw-r--r--pkgs/servers/mbusd/default.nix1
-rw-r--r--pkgs/servers/memos/default.nix1
-rw-r--r--pkgs/servers/microbin/default.nix1
-rw-r--r--pkgs/servers/miniflux/default.nix1
-rw-r--r--pkgs/servers/minio/default.nix1
-rw-r--r--pkgs/servers/mirrorbits/default.nix1
-rw-r--r--pkgs/servers/mjolnir/default.nix1
-rw-r--r--pkgs/servers/moonraker/default.nix1
-rw-r--r--pkgs/servers/mpd/default.nix1
-rw-r--r--pkgs/servers/mtprotoproxy/default.nix1
-rw-r--r--pkgs/servers/mx-puppet-discord/default.nix1
-rw-r--r--pkgs/servers/mycorrhiza/default.nix1
-rw-r--r--pkgs/servers/nats-streaming-server/default.nix1
-rw-r--r--pkgs/servers/networkaudiod/default.nix1
-rw-r--r--pkgs/servers/nfs-ganesha/default.nix1
-rw-r--r--pkgs/servers/nominatim/default.nix1
-rw-r--r--pkgs/servers/nzbhydra2/default.nix1
-rw-r--r--pkgs/servers/oauth2-proxy/default.nix1
-rw-r--r--pkgs/servers/ombi/default.nix1
-rw-r--r--pkgs/servers/owncast/default.nix1
-rw-r--r--pkgs/servers/oxigraph/default.nix1
-rw-r--r--pkgs/servers/p910nd/default.nix1
-rw-r--r--pkgs/servers/persistent-evdev/default.nix1
-rw-r--r--pkgs/servers/photoprism/default.nix1
-rw-r--r--pkgs/servers/pinnwand/default.nix1
-rw-r--r--pkgs/servers/pocketbase/default.nix1
-rw-r--r--pkgs/servers/polaris/default.nix1
-rw-r--r--pkgs/servers/pr-tracker/default.nix1
-rw-r--r--pkgs/servers/psitransfer/default.nix1
-rw-r--r--pkgs/servers/redpanda/default.nix1
-rw-r--r--pkgs/servers/reproxy/default.nix1
-rw-r--r--pkgs/servers/resgate/default.nix1
-rw-r--r--pkgs/servers/rinetd/default.nix1
-rw-r--r--pkgs/servers/rippled/default.nix1
-rw-r--r--pkgs/servers/roon-bridge/default.nix1
-rw-r--r--pkgs/servers/roon-server/default.nix1
-rw-r--r--pkgs/servers/routinator/default.nix1
-rw-r--r--pkgs/servers/rpiplay/default.nix1
-rw-r--r--pkgs/servers/rustypaste/default.nix1
-rw-r--r--pkgs/servers/sabnzbd/default.nix1
-rw-r--r--pkgs/servers/scaphandre/default.nix1
-rw-r--r--pkgs/servers/ser2net/default.nix1
-rw-r--r--pkgs/servers/sftpgo/default.nix1
-rw-r--r--pkgs/servers/shairplay/default.nix1
-rw-r--r--pkgs/servers/simplehttp2server/default.nix1
-rw-r--r--pkgs/servers/skydns/default.nix1
-rw-r--r--pkgs/servers/spicedb/default.nix1
-rw-r--r--pkgs/servers/sqlpage/default.nix1
-rw-r--r--pkgs/servers/sshportal/default.nix1
-rw-r--r--pkgs/servers/static-web-server/default.nix1
-rw-r--r--pkgs/servers/stone/default.nix1
-rw-r--r--pkgs/servers/swego/default.nix1
-rw-r--r--pkgs/servers/syncstorage-rs/default.nix1
-rw-r--r--pkgs/servers/tarssh/default.nix1
-rw-r--r--pkgs/servers/telegram-bot-api/default.nix1
-rw-r--r--pkgs/servers/tidb/default.nix1
-rw-r--r--pkgs/servers/tmate-ssh-server/default.nix1
-rw-r--r--pkgs/servers/traefik/default.nix1
-rw-r--r--pkgs/servers/ttyd/default.nix1
-rw-r--r--pkgs/servers/tvheadend/default.nix1
-rw-r--r--pkgs/servers/u9fs/default.nix1
-rw-r--r--pkgs/servers/ucarp/default.nix1
-rw-r--r--pkgs/servers/ums/default.nix1
-rw-r--r--pkgs/servers/unpackerr/default.nix1
-rw-r--r--pkgs/servers/unpfs/default.nix1
-rw-r--r--pkgs/servers/uwsgi/default.nix1
-rw-r--r--pkgs/servers/uxplay/default.nix1
-rw-r--r--pkgs/servers/vouch-proxy/default.nix1
-rw-r--r--pkgs/servers/webdav-server-rs/default.nix1
-rw-r--r--pkgs/servers/webdav/default.nix1
-rw-r--r--pkgs/servers/webmetro/default.nix1
-rw-r--r--pkgs/servers/wesher/default.nix1
-rw-r--r--pkgs/servers/wishlist/default.nix1
-rw-r--r--pkgs/servers/wsdd/default.nix1
-rw-r--r--pkgs/servers/xandikos/default.nix1
-rw-r--r--pkgs/servers/xteve/default.nix1
-rw-r--r--pkgs/servers/zigbee2mqtt/default.nix1
-rw-r--r--pkgs/tools/X11/alttab/default.nix1
-rw-r--r--pkgs/tools/X11/autocutsel/default.nix1
-rw-r--r--pkgs/tools/X11/bgs/default.nix1
-rw-r--r--pkgs/tools/X11/ckbcomp/default.nix1
-rw-r--r--pkgs/tools/X11/devour/default.nix1
-rw-r--r--pkgs/tools/X11/dex/default.nix1
-rw-r--r--pkgs/tools/X11/dispad/default.nix1
-rw-r--r--pkgs/tools/X11/ffcast/default.nix1
-rw-r--r--pkgs/tools/X11/find-cursor/default.nix1
-rw-r--r--pkgs/tools/X11/gobble/default.nix1
-rw-r--r--pkgs/tools/X11/grobi/default.nix1
-rw-r--r--pkgs/tools/X11/icon-slicer/default.nix1
-rw-r--r--pkgs/tools/X11/imwheel/default.nix1
-rw-r--r--pkgs/tools/X11/inputplug/default.nix1
-rw-r--r--pkgs/tools/X11/kdocker/default.nix1
-rw-r--r--pkgs/tools/X11/keynav/default.nix1
-rw-r--r--pkgs/tools/X11/ksuperkey/default.nix1
-rw-r--r--pkgs/tools/X11/nitrogen/default.nix1
-rw-r--r--pkgs/tools/X11/obconf/default.nix1
-rw-r--r--pkgs/tools/X11/paperview/default.nix1
-rw-r--r--pkgs/tools/X11/pmenu/default.nix1
-rw-r--r--pkgs/tools/X11/ratmen/default.nix1
-rw-r--r--pkgs/tools/X11/run-scaled/default.nix1
-rw-r--r--pkgs/tools/X11/sbs/default.nix1
-rw-r--r--pkgs/tools/X11/setroot/default.nix1
-rw-r--r--pkgs/tools/X11/smart-wallpaper/default.nix1
-rw-r--r--pkgs/tools/X11/srandrd/default.nix1
-rw-r--r--pkgs/tools/X11/sselp/default.nix1
-rw-r--r--pkgs/tools/X11/sx/default.nix1
-rw-r--r--pkgs/tools/X11/vdpauinfo/default.nix1
-rw-r--r--pkgs/tools/X11/wayv/default.nix1
-rw-r--r--pkgs/tools/X11/wmctrl/default.nix1
-rw-r--r--pkgs/tools/X11/x11vnc/default.nix1
-rw-r--r--pkgs/tools/X11/x2vnc/default.nix1
-rw-r--r--pkgs/tools/X11/x2x/default.nix1
-rw-r--r--pkgs/tools/X11/xannotate/default.nix1
-rw-r--r--pkgs/tools/X11/xbanish/default.nix1
-rw-r--r--pkgs/tools/X11/xbindkeys-config/default.nix1
-rw-r--r--pkgs/tools/X11/xborders/default.nix1
-rw-r--r--pkgs/tools/X11/xbrightness/default.nix1
-rw-r--r--pkgs/tools/X11/xcalib/default.nix1
-rw-r--r--pkgs/tools/X11/xcape/default.nix1
-rw-r--r--pkgs/tools/X11/xchainkeys/default.nix1
-rw-r--r--pkgs/tools/X11/xcwd/default.nix1
-rw-r--r--pkgs/tools/X11/xdotool/default.nix1
-rw-r--r--pkgs/tools/X11/xgeometry-select/default.nix1
-rw-r--r--pkgs/tools/X11/xinput_calibrator/default.nix1
-rw-r--r--pkgs/tools/X11/xkb-switch-i3/default.nix1
-rw-r--r--pkgs/tools/X11/xkb-switch/default.nix1
-rw-r--r--pkgs/tools/X11/xkbset/default.nix1
-rw-r--r--pkgs/tools/X11/xkbvalidate/default.nix1
-rw-r--r--pkgs/tools/X11/xlayoutdisplay/default.nix1
-rw-r--r--pkgs/tools/X11/xlogo/default.nix1
-rw-r--r--pkgs/tools/X11/xmcp/default.nix1
-rw-r--r--pkgs/tools/X11/xmousepasteblock/default.nix1
-rw-r--r--pkgs/tools/X11/xnotify/default.nix1
-rw-r--r--pkgs/tools/X11/xob/default.nix1
-rw-r--r--pkgs/tools/X11/xplugd/default.nix1
-rw-r--r--pkgs/tools/X11/xpointerbarrier/default.nix1
-rw-r--r--pkgs/tools/X11/xprintidle-ng/default.nix1
-rw-r--r--pkgs/tools/X11/xprintidle/default.nix1
-rw-r--r--pkgs/tools/X11/xprompt/default.nix1
-rw-r--r--pkgs/tools/X11/xrectsel/default.nix1
-rw-r--r--pkgs/tools/X11/xrestop/default.nix1
-rw-r--r--pkgs/tools/X11/xtrace/default.nix1
-rw-r--r--pkgs/tools/X11/xtruss/default.nix1
-rw-r--r--pkgs/tools/X11/xvkbd/default.nix1
-rw-r--r--pkgs/tools/X11/xwallpaper/default.nix1
-rw-r--r--pkgs/tools/X11/xwinmosaic/default.nix1
-rw-r--r--pkgs/tools/X11/xwinwrap/default.nix1
-rw-r--r--pkgs/tools/X11/xzoom/default.nix1
-rw-r--r--pkgs/tools/audio/abcm2ps/default.nix1
-rw-r--r--pkgs/tools/audio/accuraterip-checksum/default.nix1
-rw-r--r--pkgs/tools/audio/acousticbrainz-client/default.nix1
-rw-r--r--pkgs/tools/audio/audiowaveform/default.nix1
-rw-r--r--pkgs/tools/audio/bark/default.nix1
-rw-r--r--pkgs/tools/audio/botamusique/default.nix1
-rw-r--r--pkgs/tools/audio/catnip-gtk4/default.nix1
-rw-r--r--pkgs/tools/audio/catnip/default.nix1
-rw-r--r--pkgs/tools/audio/dsp/default.nix1
-rw-r--r--pkgs/tools/audio/essentia-extractor/default.nix1
-rw-r--r--pkgs/tools/audio/gvolicon/default.nix1
-rw-r--r--pkgs/tools/audio/headset-charge-indicator/default.nix1
-rw-r--r--pkgs/tools/audio/linuxwave/default.nix1
-rw-r--r--pkgs/tools/audio/mictray/default.nix1
-rw-r--r--pkgs/tools/audio/midimonster/default.nix1
-rw-r--r--pkgs/tools/audio/mp3cat/default.nix1
-rw-r--r--pkgs/tools/audio/mpd-discord-rpc/default.nix1
-rw-r--r--pkgs/tools/audio/mpd-mpris/default.nix1
-rw-r--r--pkgs/tools/audio/mpd-notification/default.nix1
-rw-r--r--pkgs/tools/audio/mpd-sima/default.nix1
-rw-r--r--pkgs/tools/audio/mpdas/default.nix1
-rw-r--r--pkgs/tools/audio/mpdris2/default.nix1
-rw-r--r--pkgs/tools/audio/nanotts/default.nix1
-rw-r--r--pkgs/tools/audio/pasystray/default.nix1
-rw-r--r--pkgs/tools/audio/patray/default.nix1
-rw-r--r--pkgs/tools/audio/picotts/default.nix1
-rw-r--r--pkgs/tools/audio/piper/default.nix1
-rw-r--r--pkgs/tools/audio/pnmixer/default.nix1
-rw-r--r--pkgs/tools/audio/pw-volume/default.nix1
-rw-r--r--pkgs/tools/audio/stt/default.nix1
-rw-r--r--pkgs/tools/audio/tidal-dl/default.nix1
-rw-r--r--pkgs/tools/audio/unflac/default.nix1
-rw-r--r--pkgs/tools/audio/video2midi/default.nix1
-rw-r--r--pkgs/tools/audio/volctl/default.nix1
-rw-r--r--pkgs/tools/audio/volumeicon/default.nix1
-rw-r--r--pkgs/tools/audio/whisper-ctranslate2/default.nix1
-rw-r--r--pkgs/tools/audio/yabridgectl/default.nix1
-rw-r--r--pkgs/tools/filesystems/dupe-krill/default.nix1
-rw-r--r--pkgs/tools/filesystems/dysk/default.nix1
-rw-r--r--pkgs/tools/filesystems/eiciel/default.nix1
-rw-r--r--pkgs/tools/filesystems/ext4magic/default.nix1
-rw-r--r--pkgs/tools/filesystems/extundelete/default.nix1
-rw-r--r--pkgs/tools/filesystems/fatresize/default.nix1
-rw-r--r--pkgs/tools/filesystems/fatsort/default.nix1
-rw-r--r--pkgs/tools/filesystems/file-rename/default.nix1
-rw-r--r--pkgs/tools/filesystems/fuse-7z-ng/default.nix1
-rw-r--r--pkgs/tools/filesystems/fuse-archive/default.nix1
-rw-r--r--pkgs/tools/filesystems/fuse-overlayfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/fuseiso/default.nix1
-rw-r--r--pkgs/tools/filesystems/fwanalyzer/default.nix1
-rw-r--r--pkgs/tools/filesystems/garage/default.nix1
-rw-r--r--pkgs/tools/filesystems/genext2fs/default.nix1
-rw-r--r--pkgs/tools/filesystems/genimage/default.nix1
-rw-r--r--pkgs/tools/filesystems/genromfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/gitfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/go-mtpfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/goofys/default.nix1
-rw-r--r--pkgs/tools/filesystems/gpart/default.nix1
-rw-r--r--pkgs/tools/filesystems/grive2/default.nix1
-rw-r--r--pkgs/tools/filesystems/httm/default.nix1
-rw-r--r--pkgs/tools/filesystems/httpdirfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/ifuse/default.nix1
-rw-r--r--pkgs/tools/filesystems/ioztat/default.nix1
-rw-r--r--pkgs/tools/filesystems/jefferson/default.nix1
-rw-r--r--pkgs/tools/filesystems/jmtpfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/kdiskmark/default.nix1
-rw-r--r--pkgs/tools/filesystems/mhddfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/mkspiffs/default.nix1
-rw-r--r--pkgs/tools/filesystems/mount-zip/default.nix1
-rw-r--r--pkgs/tools/filesystems/mp3fs/default.nix1
-rw-r--r--pkgs/tools/filesystems/mtpfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/rdfind/default.nix1
-rw-r--r--pkgs/tools/filesystems/rmfuse/default.nix1
-rw-r--r--pkgs/tools/filesystems/rmount/default.nix1
-rw-r--r--pkgs/tools/filesystems/rnm/default.nix1
-rw-r--r--pkgs/tools/filesystems/romdirfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/s3backer/default.nix1
-rw-r--r--pkgs/tools/filesystems/sandboxfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/sasquatch/default.nix1
-rw-r--r--pkgs/tools/filesystems/sdat2img/default.nix1
-rw-r--r--pkgs/tools/filesystems/securefs/default.nix1
-rw-r--r--pkgs/tools/filesystems/sftpman/default.nix1
-rw-r--r--pkgs/tools/filesystems/simple-mtpfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/smbnetfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/snapraid/default.nix1
-rw-r--r--pkgs/tools/filesystems/stratis-cli/default.nix1
-rw-r--r--pkgs/tools/filesystems/svnfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/tar2ext4/default.nix1
-rw-r--r--pkgs/tools/filesystems/u3-tool/default.nix1
-rw-r--r--pkgs/tools/filesystems/ubidump/default.nix1
-rw-r--r--pkgs/tools/filesystems/wdfs/default.nix1
-rw-r--r--pkgs/tools/filesystems/wipefreespace/default.nix1
-rw-r--r--pkgs/tools/filesystems/yandex-disk/default.nix1
-rw-r--r--pkgs/tools/filesystems/zerofree/default.nix1
-rw-r--r--pkgs/tools/filesystems/zkfuse/default.nix1
-rw-r--r--pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix1
-rw-r--r--pkgs/tools/filesystems/zpool-iostat-viz/default.nix1
-rw-r--r--pkgs/tools/virtualization/alpine-make-vm-image/default.nix1
-rw-r--r--pkgs/tools/virtualization/amazon-ecs-cli/default.nix1
-rw-r--r--pkgs/tools/virtualization/distrobuilder/default.nix1
-rw-r--r--pkgs/tools/virtualization/extra-container/default.nix1
-rw-r--r--pkgs/tools/virtualization/govc/default.nix1
-rw-r--r--pkgs/tools/virtualization/jumppad/default.nix1
-rw-r--r--pkgs/tools/virtualization/kubevirt/default.nix1
-rw-r--r--pkgs/tools/virtualization/lxd-image-server/default.nix1
-rw-r--r--pkgs/tools/virtualization/marathonctl/default.nix1
-rw-r--r--pkgs/tools/virtualization/mininet/default.nix1
-rw-r--r--pkgs/tools/virtualization/nixos-shell/default.nix1
-rw-r--r--pkgs/tools/virtualization/onmetal-image/default.nix1
-rw-r--r--pkgs/tools/virtualization/ovftool/default.nix1
-rw-r--r--pkgs/tools/virtualization/reg/default.nix1
-rw-r--r--pkgs/tools/virtualization/supermin/default.nix1
-rw-r--r--pkgs/tools/virtualization/udocker/default.nix1
-rw-r--r--pkgs/tools/virtualization/uefi-run/default.nix1
-rw-r--r--pkgs/tools/virtualization/vpsfree-client/default.nix1
-rw-r--r--pkgs/tools/virtualization/xva-img/default.nix1
332 files changed, 332 insertions, 0 deletions
diff --git a/pkgs/games/atlauncher/default.nix b/pkgs/games/atlauncher/default.nix
index d6e3dc05a802a..da98159cde9e3 100644
--- a/pkgs/games/atlauncher/default.nix
+++ b/pkgs/games/atlauncher/default.nix
@@ -54,5 +54,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.gpl3;
     maintainers = [ maintainers.getpsyched ];
     platforms = platforms.all;
+    mainProgram = "atlauncher";
   };
 })
diff --git a/pkgs/games/classicube/default.nix b/pkgs/games/classicube/default.nix
index 96b941490b012..c6805cc58343d 100644
--- a/pkgs/games/classicube/default.nix
+++ b/pkgs/games/classicube/default.nix
@@ -97,5 +97,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     platforms = platforms.linux;
     maintainers = with maintainers; [ _360ied ];
+    mainProgram = "ClassiCube";
   };
 }
diff --git a/pkgs/games/gamepad-tool/default.nix b/pkgs/games/gamepad-tool/default.nix
index b73a1d4f3c0dc..11da7ab16d528 100644
--- a/pkgs/games/gamepad-tool/default.nix
+++ b/pkgs/games/gamepad-tool/default.nix
@@ -42,5 +42,6 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     license = licenses.unfree;
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ gador ];
+    mainProgram = "gamepad-tool";
   };
 })
diff --git a/pkgs/games/ivan/default.nix b/pkgs/games/ivan/default.nix
index 21f071af379bb..30620bea710b0 100644
--- a/pkgs/games/ivan/default.nix
+++ b/pkgs/games/ivan/default.nix
@@ -65,5 +65,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [];
+    mainProgram = "ivan";
   };
 }
diff --git a/pkgs/games/mudlet/default.nix b/pkgs/games/mudlet/default.nix
index 52990a2d5eab6..39faa5d4fb9bd 100644
--- a/pkgs/games/mudlet/default.nix
+++ b/pkgs/games/mudlet/default.nix
@@ -130,5 +130,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ wyvie pstn cpu ];
     platforms = platforms.linux;
     license = licenses.gpl2Plus;
+    mainProgram = "mudlet";
   };
 }
diff --git a/pkgs/games/rili/default.nix b/pkgs/games/rili/default.nix
index 7c47166eab56f..b02cf7e5dea09 100644
--- a/pkgs/games/rili/default.nix
+++ b/pkgs/games/rili/default.nix
@@ -37,5 +37,6 @@ to win.
     '';
     maintainers = with lib.maintainers; [ jcumming ];
     platforms = with lib.platforms; linux;
+    mainProgram = "Ri_li";
   };
 }
diff --git a/pkgs/games/steam-tui/default.nix b/pkgs/games/steam-tui/default.nix
index 63deb3b969ce0..769553a694224 100644
--- a/pkgs/games/steam-tui/default.nix
+++ b/pkgs/games/steam-tui/default.nix
@@ -41,5 +41,6 @@ rustPlatform.buildRustPackage rec {
     maintainers = with maintainers; [ lom ];
     # steam only supports that platform
     platforms = [ "x86_64-linux" ];
+    mainProgram = "steam-tui";
   };
 }
diff --git a/pkgs/games/stepmania/default.nix b/pkgs/games/stepmania/default.nix
index 3ba39fde9c6c2..65b9bfff189e1 100644
--- a/pkgs/games/stepmania/default.nix
+++ b/pkgs/games/stepmania/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     maintainers = [ ];
     # never built on aarch64-linux since first introduction in nixpkgs
     broken = stdenv.isLinux && stdenv.isAarch64;
+    mainProgram = "stepmania";
   };
 }
diff --git a/pkgs/games/teetertorture/default.nix b/pkgs/games/teetertorture/default.nix
index 6e18dbae07b27..b87faf6cea0b2 100644
--- a/pkgs/games/teetertorture/default.nix
+++ b/pkgs/games/teetertorture/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     description = "Simple shooting game with your cannon is sitting atop a teeter totter";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.linux;
+    mainProgram = "teetertorture";
   };
 }
diff --git a/pkgs/games/xbill/default.nix b/pkgs/games/xbill/default.nix
index ac387a4a8c022..05314e6911b94 100644
--- a/pkgs/games/xbill/default.nix
+++ b/pkgs/games/xbill/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
       Wingdows [TM], a virus cleverly designed to resemble a popular
       operating system.
     '';
+    mainProgram = "xbill";
   };
 }
diff --git a/pkgs/games/zaz/default.nix b/pkgs/games/zaz/default.nix
index 84db2a1356c6f..3b6c7244507cb 100644
--- a/pkgs/games/zaz/default.nix
+++ b/pkgs/games/zaz/default.nix
@@ -54,6 +54,7 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ fgaz ];
     platforms = platforms.all;
+    mainProgram = "zaz";
   };
 }
 
diff --git a/pkgs/games/zoom/default.nix b/pkgs/games/zoom/default.nix
index 8524ea601b470..275aca235209d 100644
--- a/pkgs/games/zoom/default.nix
+++ b/pkgs/games/zoom/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl3;
     platforms = platforms.linux;
+    mainProgram = "zoom";
   };
 }
diff --git a/pkgs/misc/ananicy-cpp/default.nix b/pkgs/misc/ananicy-cpp/default.nix
index 6d21f219c4637..9a771a470339f 100644
--- a/pkgs/misc/ananicy-cpp/default.nix
+++ b/pkgs/misc/ananicy-cpp/default.nix
@@ -65,5 +65,6 @@ clangStdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ artturin ];
+    mainProgram = "ananicy-cpp";
   };
 }
diff --git a/pkgs/misc/ananicy/default.nix b/pkgs/misc/ananicy/default.nix
index 62daaad2c6048..9567f2d4d0f7b 100644
--- a/pkgs/misc/ananicy/default.nix
+++ b/pkgs/misc/ananicy/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ artturin ];
+    mainProgram = "ananicy";
   };
 }
diff --git a/pkgs/misc/apulse/default.nix b/pkgs/misc/apulse/default.nix
index 95beb8bcdf3f8..00b53851b8297 100644
--- a/pkgs/misc/apulse/default.nix
+++ b/pkgs/misc/apulse/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = [ maintainers.jagajaga ];
+    mainProgram = "apulse";
   };
 }
diff --git a/pkgs/misc/autoadb/default.nix b/pkgs/misc/autoadb/default.nix
index 25043e9d45d69..8832d314df857 100644
--- a/pkgs/misc/autoadb/default.nix
+++ b/pkgs/misc/autoadb/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/rom1v/autoadb";
     license = licenses.asl20;
     maintainers = with maintainers; [ shawn8901 ];
+    mainProgram = "autoadb";
   };
 }
diff --git a/pkgs/misc/autotiling-rs/default.nix b/pkgs/misc/autotiling-rs/default.nix
index 6e0ffebf03235..0946940166795 100644
--- a/pkgs/misc/autotiling-rs/default.nix
+++ b/pkgs/misc/autotiling-rs/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ dit7ya ];
+    mainProgram = "autotiling-rs";
   };
 }
diff --git a/pkgs/misc/autotiling/default.nix b/pkgs/misc/autotiling/default.nix
index a24095759f025..301712a1f1dfc 100644
--- a/pkgs/misc/autotiling/default.nix
+++ b/pkgs/misc/autotiling/default.nix
@@ -20,6 +20,7 @@ buildPythonApplication rec {
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ artturin ];
+    mainProgram = "autotiling";
   };
 }
 
diff --git a/pkgs/misc/doge/default.nix b/pkgs/misc/doge/default.nix
index c82456d8ee537..3fbf5992ade78 100644
--- a/pkgs/misc/doge/default.nix
+++ b/pkgs/misc/doge/default.nix
@@ -14,5 +14,6 @@ python3Packages.buildPythonPackage rec {
     description = "wow very terminal doge";
     license = licenses.mit;
     maintainers = with maintainers; [ Gonzih ];
+    mainProgram = "doge";
   };
 }
diff --git a/pkgs/misc/fastly/default.nix b/pkgs/misc/fastly/default.nix
index ca191319243f1..1bed7e8ab2e1f 100644
--- a/pkgs/misc/fastly/default.nix
+++ b/pkgs/misc/fastly/default.nix
@@ -78,5 +78,6 @@ buildGoModule rec {
     changelog = "https://github.com/fastly/cli/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
     maintainers = with maintainers; [ ereslibre shyim ];
+    mainProgram = "fastly";
   };
 }
diff --git a/pkgs/misc/frescobaldi/default.nix b/pkgs/misc/frescobaldi/default.nix
index 57baeb7fe828f..2c49c5779752e 100644
--- a/pkgs/misc/frescobaldi/default.nix
+++ b/pkgs/misc/frescobaldi/default.nix
@@ -57,5 +57,6 @@ buildPythonApplication rec {
     maintainers = with maintainers; [ sepi ];
     platforms = platforms.all;
     broken = stdenv.isDarwin; # never built on Hydra https://hydra.nixos.org/job/nixpkgs/trunk/frescobaldi.x86_64-darwin
+    mainProgram = "frescobaldi";
   };
 }
diff --git a/pkgs/misc/lightspark/default.nix b/pkgs/misc/lightspark/default.nix
index 29baa653d3f15..904028feddaaa 100644
--- a/pkgs/misc/lightspark/default.nix
+++ b/pkgs/misc/lightspark/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ jchw ];
     platforms = platforms.linux;
+    mainProgram = "lightspark";
   };
 }
diff --git a/pkgs/misc/long-shebang/default.nix b/pkgs/misc/long-shebang/default.nix
index 6ad7c8496ed51..34ad0350771f8 100644
--- a/pkgs/misc/long-shebang/default.nix
+++ b/pkgs/misc/long-shebang/default.nix
@@ -17,5 +17,6 @@ in stdenv.mkDerivation {
     license = lib.licenses.mit;
 
     platforms = lib.platforms.unix;
+    mainProgram = "long-shebang";
   };
 }
diff --git a/pkgs/misc/lssecret/default.nix b/pkgs/misc/lssecret/default.nix
index f27bb538d19a8..2e5169974fc17 100644
--- a/pkgs/misc/lssecret/default.nix
+++ b/pkgs/misc/lssecret/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.unlicense;
     maintainers = with lib.maintainers; [ genericnerdyusername ];
     platforms = lib.platforms.unix;
+    mainProgram = "lssecret";
   };
 }
diff --git a/pkgs/misc/moonfire-nvr/default.nix b/pkgs/misc/moonfire-nvr/default.nix
index 8c9de0e7da9d1..0946161ce52fd 100644
--- a/pkgs/misc/moonfire-nvr/default.nix
+++ b/pkgs/misc/moonfire-nvr/default.nix
@@ -76,5 +76,6 @@ in rustPlatform.buildRustPackage {
     changelog = "https://github.com/scottlamb/moonfire-nvr/releases/tag/v${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ gaelreyrol ];
+    mainProgram = "moonfire-nvr";
   };
 }
diff --git a/pkgs/misc/mxt-app/default.nix b/pkgs/misc/mxt-app/default.nix
index 7695f3cebefdc..0f231bfd2f54c 100644
--- a/pkgs/misc/mxt-app/default.nix
+++ b/pkgs/misc/mxt-app/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = [ maintainers.colemickens ];
     platforms = platforms.linux;
+    mainProgram = "mxt-app";
   };
 }
diff --git a/pkgs/misc/nflz/default.nix b/pkgs/misc/nflz/default.nix
index 10a87f85b1178..3d455d908073e 100644
--- a/pkgs/misc/nflz/default.nix
+++ b/pkgs/misc/nflz/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/phip1611/nflz";
     license = with lib.licenses; [ mit ];
     maintainers = with lib.maintainers; [ phip1611 ];
+    mainProgram = "nflz";
   };
 }
diff --git a/pkgs/misc/opcua-client-gui/default.nix b/pkgs/misc/opcua-client-gui/default.nix
index 361b2627c9735..962d48be8f8e6 100644
--- a/pkgs/misc/opcua-client-gui/default.nix
+++ b/pkgs/misc/opcua-client-gui/default.nix
@@ -56,5 +56,6 @@ python3Packages.buildPythonApplication rec {
     platforms = platforms.unix;
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ janik ];
+    mainProgram = "opcua-client";
   };
 }
diff --git a/pkgs/misc/plasma-hud/default.nix b/pkgs/misc/plasma-hud/default.nix
index 4116751f4fec0..c0cf771da8499 100644
--- a/pkgs/misc/plasma-hud/default.nix
+++ b/pkgs/misc/plasma-hud/default.nix
@@ -37,5 +37,6 @@ python3.pkgs.buildPythonApplication rec{
     platforms = platforms.unix;
     description = "Run menubar commands, much like the Unity 7 Heads-Up Display (HUD)";
     maintainers = with maintainers; [ pasqui23 ];
+    mainProgram = "plasma-hud";
   };
 }
diff --git a/pkgs/misc/present/default.nix b/pkgs/misc/present/default.nix
index 7ecf61837c590..6ed15f03e6e4f 100644
--- a/pkgs/misc/present/default.nix
+++ b/pkgs/misc/present/default.nix
@@ -27,5 +27,6 @@ python3Packages.buildPythonPackage rec {
     homepage = "https://github.com/vinayak-mehta/present";
     license = licenses.asl20;
     maintainers = with maintainers; [ lom ];
+    mainProgram = "present";
   };
 }
diff --git a/pkgs/misc/ptouch-print/default.nix b/pkgs/misc/ptouch-print/default.nix
index f9889cfe4bef9..da0d3c8c97d35 100644
--- a/pkgs/misc/ptouch-print/default.nix
+++ b/pkgs/misc/ptouch-print/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     homepage = "https://mockmoon-cybernetics.ch/computer/p-touch2430pc/";
     maintainers = with maintainers; [ shamilton ];
     platforms = platforms.linux;
+    mainProgram = "ptouch-print";
   };
 }
diff --git a/pkgs/misc/pylode/default.nix b/pkgs/misc/pylode/default.nix
index 581baf0e9c808..7212da7b867f4 100644
--- a/pkgs/misc/pylode/default.nix
+++ b/pkgs/misc/pylode/default.nix
@@ -45,5 +45,6 @@ python3.pkgs.buildPythonApplication rec {
     # Next release will move to BSD3
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ koslambrou ];
+    mainProgram = "pylode";
   };
 }
diff --git a/pkgs/misc/rich-cli/default.nix b/pkgs/misc/rich-cli/default.nix
index a7fb03e11ad45..9d03cfc66917c 100644
--- a/pkgs/misc/rich-cli/default.nix
+++ b/pkgs/misc/rich-cli/default.nix
@@ -75,5 +75,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/Textualize/rich-cli/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ joelkoen ];
+    mainProgram = "rich";
   };
 }
diff --git a/pkgs/misc/rivalcfg/default.nix b/pkgs/misc/rivalcfg/default.nix
index 737a3839d7a02..f6b45af3af348 100644
--- a/pkgs/misc/rivalcfg/default.nix
+++ b/pkgs/misc/rivalcfg/default.nix
@@ -36,5 +36,6 @@ python3Packages.buildPythonPackage rec {
     homepage = "https://github.com/flozz/rivalcfg";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ ornxka ];
+    mainProgram = "rivalcfg";
   };
 }
diff --git a/pkgs/misc/rkdeveloptool-pine64/default.nix b/pkgs/misc/rkdeveloptool-pine64/default.nix
index d9de20bcf447d..b70298ded96a3 100644
--- a/pkgs/misc/rkdeveloptool-pine64/default.nix
+++ b/pkgs/misc/rkdeveloptool-pine64/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation {
       description = "A tool from Rockchip to communicate with Rockusb devices (pine64 fork)";
       license = lib.licenses.gpl2;
       maintainers = [ maintainers.adisbladis ];
+      mainProgram = "rkdeveloptool";
     };
 }
diff --git a/pkgs/misc/rkdeveloptool/default.nix b/pkgs/misc/rkdeveloptool/default.nix
index a07748fbe263d..341232e8cf191 100644
--- a/pkgs/misc/rkdeveloptool/default.nix
+++ b/pkgs/misc/rkdeveloptool/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation {
     description = "A tool from Rockchip to communicate with Rockusb devices";
     license = licenses.gpl2;
     maintainers = [ maintainers.lopsided98 ];
+    mainProgram = "rkdeveloptool";
   };
 }
diff --git a/pkgs/misc/sailsd/default.nix b/pkgs/misc/sailsd/default.nix
index d2f91c42638a9..50eb8e61ca327 100644
--- a/pkgs/misc/sailsd/default.nix
+++ b/pkgs/misc/sailsd/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
       boat'';
     maintainers = with maintainers; [ kragniz ];
     platforms = platforms.all;
+    mainProgram = "sailsd";
   };
 }
diff --git a/pkgs/misc/scrcpy/default.nix b/pkgs/misc/scrcpy/default.nix
index 78479199b140d..8630cc859917d 100644
--- a/pkgs/misc/scrcpy/default.nix
+++ b/pkgs/misc/scrcpy/default.nix
@@ -74,5 +74,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     platforms = platforms.unix;
     maintainers = with maintainers; [ deltaevo msfjarvis ];
+    mainProgram = "scrcpy";
   };
 }
diff --git a/pkgs/misc/solfege/default.nix b/pkgs/misc/solfege/default.nix
index 64ddfae7b3266..63606078abada 100644
--- a/pkgs/misc/solfege/default.nix
+++ b/pkgs/misc/solfege/default.nix
@@ -69,5 +69,6 @@ buildPythonApplication rec {
     license = licenses.gpl3Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ bjornfor orivej anthonyroussel ];
+    mainProgram = "solfege";
   };
 }
diff --git a/pkgs/misc/t-rec/default.nix b/pkgs/misc/t-rec/default.nix
index 3d6317f71c0db..ac99abb7e5cdd 100644
--- a/pkgs/misc/t-rec/default.nix
+++ b/pkgs/misc/t-rec/default.nix
@@ -33,5 +33,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/sassman/t-rec-rs";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ hoverbear matthiasbeyer ];
+    mainProgram = "t-rec";
   };
 }
diff --git a/pkgs/misc/tpm2-pkcs11/default.nix b/pkgs/misc/tpm2-pkcs11/default.nix
index 91b7c31eb3231..3898c9880c539 100644
--- a/pkgs/misc/tpm2-pkcs11/default.nix
+++ b/pkgs/misc/tpm2-pkcs11/default.nix
@@ -81,5 +81,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ matthiasbeyer ];
+    mainProgram = "tpm2_ptool";
   };
 }
diff --git a/pkgs/misc/uq/default.nix b/pkgs/misc/uq/default.nix
index 81c09685be8b6..a4c9a7d92fb49 100644
--- a/pkgs/misc/uq/default.nix
+++ b/pkgs/misc/uq/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/lostutils/uq";
     license = licenses.mit;
     maintainers = with maintainers; [ doronbehar matthiasbeyer ];
+    mainProgram = "uq";
   };
 }
diff --git a/pkgs/misc/urbit/default.nix b/pkgs/misc/urbit/default.nix
index 3a9488a5951a1..fe31ca17f6aa0 100644
--- a/pkgs/misc/urbit/default.nix
+++ b/pkgs/misc/urbit/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.matthew-levan ];
     license = licenses.mit;
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
+    mainProgram = "urbit";
   };
 }
diff --git a/pkgs/misc/wiki-tui/default.nix b/pkgs/misc/wiki-tui/default.nix
index fcc93c4b5c7b3..e3c6a4f2bb10a 100644
--- a/pkgs/misc/wiki-tui/default.nix
+++ b/pkgs/misc/wiki-tui/default.nix
@@ -38,5 +38,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/Builditluc/wiki-tui/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ lom builditluc matthiasbeyer ];
+    mainProgram = "wiki-tui";
   };
 }
diff --git a/pkgs/misc/zeyple/default.nix b/pkgs/misc/zeyple/default.nix
index 18c9384537156..fd5f628676aeb 100644
--- a/pkgs/misc/zeyple/default.nix
+++ b/pkgs/misc/zeyple/default.nix
@@ -23,5 +23,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://infertux.com/labs/zeyple/";
     maintainers = with maintainers; [ ettom ];
     license = licenses.agpl3Plus;
+    mainProgram = "zeyple";
   };
 }
diff --git a/pkgs/servers/alice-lg/default.nix b/pkgs/servers/alice-lg/default.nix
index c81ca8f5c1216..09412bb2ccf88 100644
--- a/pkgs/servers/alice-lg/default.nix
+++ b/pkgs/servers/alice-lg/default.nix
@@ -83,5 +83,6 @@ buildGoModule rec {
     changelog = "https://github.com/alice-lg/alice-lg/blob/main/CHANGELOG.md";
     license = licenses.bsd3;
     maintainers = with maintainers; [ janik ];
+    mainProgram = "alice-lg";
   };
 }
diff --git a/pkgs/servers/allmark/default.nix b/pkgs/servers/allmark/default.nix
index 1e5b58dc6b19e..be87468b3a950 100644
--- a/pkgs/servers/allmark/default.nix
+++ b/pkgs/servers/allmark/default.nix
@@ -23,5 +23,6 @@ buildGoPackage rec {
     changelog = "https://github.com/andreaskoch/allmark/-/releases/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ urandom ];
+    mainProgram = "allmark";
   };
 }
diff --git a/pkgs/servers/antennas/default.nix b/pkgs/servers/antennas/default.nix
index c381cde648795..f9db26ab93e44 100644
--- a/pkgs/servers/antennas/default.nix
+++ b/pkgs/servers/antennas/default.nix
@@ -33,5 +33,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/jfarseneau/antennas";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ bachp ];
+    mainProgram = "antennas";
   };
 }
diff --git a/pkgs/servers/asouldocs/default.nix b/pkgs/servers/asouldocs/default.nix
index cf0c5f48e0070..df6a5e3012fdb 100644
--- a/pkgs/servers/asouldocs/default.nix
+++ b/pkgs/servers/asouldocs/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://asouldocs.dev/";
     license = licenses.mit;
     maintainers = with maintainers; [ ivar anthonyroussel ];
+    mainProgram = "asouldocs";
   };
 }
diff --git a/pkgs/servers/audiobookshelf/default.nix b/pkgs/servers/audiobookshelf/default.nix
index 500f0882796e6..626f5639adc6d 100644
--- a/pkgs/servers/audiobookshelf/default.nix
+++ b/pkgs/servers/audiobookshelf/default.nix
@@ -72,5 +72,6 @@ in buildNpmPackage {
     license = licenses.gpl3;
     maintainers = [ maintainers.jvanbruegge ];
     platforms = platforms.linux;
+    mainProgram = "audiobookshelf";
   };
 }
diff --git a/pkgs/servers/authelia/default.nix b/pkgs/servers/authelia/default.nix
index 4a2ed9bd57296..2eb1b4f6ac785 100644
--- a/pkgs/servers/authelia/default.nix
+++ b/pkgs/servers/authelia/default.nix
@@ -73,5 +73,6 @@ buildGoModule rec {
     '';
     license = licenses.asl20;
     maintainers = with maintainers; [ jk raitobezarius dit7ya ];
+    mainProgram = "authelia";
   };
 }
diff --git a/pkgs/servers/baserow/default.nix b/pkgs/servers/baserow/default.nix
index 34fba145c9c4b..dfb5ea5bf91fe 100644
--- a/pkgs/servers/baserow/default.nix
+++ b/pkgs/servers/baserow/default.nix
@@ -154,5 +154,6 @@ with python.pkgs; buildPythonApplication rec {
     homepage = "https://baserow.io";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
+    mainProgram = "baserow";
   };
 }
diff --git a/pkgs/servers/binserve/default.nix b/pkgs/servers/binserve/default.nix
index 23ebe0c270f83..b8732b51587a2 100644
--- a/pkgs/servers/binserve/default.nix
+++ b/pkgs/servers/binserve/default.nix
@@ -33,5 +33,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ snapdgn ];
     platforms = platforms.unix;
+    mainProgram = "binserve";
   };
 }
diff --git a/pkgs/servers/birdwatcher/default.nix b/pkgs/servers/birdwatcher/default.nix
index 38a53e89ffe42..f3b816a7a2c38 100644
--- a/pkgs/servers/birdwatcher/default.nix
+++ b/pkgs/servers/birdwatcher/default.nix
@@ -24,5 +24,6 @@ buildGoModule rec {
     changelog = "https://github.com/alice-lg/birdwatcher/blob/master/CHANGELOG";
     license = licenses.bsd3;
     maintainers = with maintainers; [ janik ];
+    mainProgram = "birdwatcher";
   };
 }
diff --git a/pkgs/servers/confluencepot/default.nix b/pkgs/servers/confluencepot/default.nix
index 4b807401a2990..d1aa0031f20fd 100644
--- a/pkgs/servers/confluencepot/default.nix
+++ b/pkgs/servers/confluencepot/default.nix
@@ -40,5 +40,6 @@ buildGoModule rec {
     '';
     license = with licenses; [ agpl3Plus ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "confluencepot";
   };
 }
diff --git a/pkgs/servers/db-rest/default.nix b/pkgs/servers/db-rest/default.nix
index 7fda8f978f1d4..8eab440e523ba 100644
--- a/pkgs/servers/db-rest/default.nix
+++ b/pkgs/servers/db-rest/default.nix
@@ -40,5 +40,6 @@ buildNpmPackage rec {
     homepage = "https://v6.db.transport.rest/";
     license = lib.licenses.isc;
     maintainers = with lib.maintainers; [ marie ];
+    mainProgram = "db-rest";
   };
 }
diff --git a/pkgs/servers/eris-go/default.nix b/pkgs/servers/eris-go/default.nix
index dc6d72bba3422..a215a59d547af 100644
--- a/pkgs/servers/eris-go/default.nix
+++ b/pkgs/servers/eris-go/default.nix
@@ -24,5 +24,6 @@ buildGoModule rec {
     license = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ ehmry ];
     broken = stdenv.isDarwin;
+    mainProgram = "eris-go";
   };
 }
diff --git a/pkgs/servers/gnss-share/default.nix b/pkgs/servers/gnss-share/default.nix
index 14aa294da503c..8b24964ae824b 100644
--- a/pkgs/servers/gnss-share/default.nix
+++ b/pkgs/servers/gnss-share/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     '';
     license = licenses.gpl3;
     maintainers = with maintainers; [ balsoft ];
+    mainProgram = "gnss-share";
   };
 }
diff --git a/pkgs/servers/go-autoconfig/default.nix b/pkgs/servers/go-autoconfig/default.nix
index 73a809613c9d7..1fe09a03a0dd6 100644
--- a/pkgs/servers/go-autoconfig/default.nix
+++ b/pkgs/servers/go-autoconfig/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     homepage = "https://github.com/L11R/go-autoconfig";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
+    mainProgram = "go-autoconfig";
   };
 }
diff --git a/pkgs/servers/hiraeth/default.nix b/pkgs/servers/hiraeth/default.nix
index c31b8c4641529..c69ec6ac34faf 100644
--- a/pkgs/servers/hiraeth/default.nix
+++ b/pkgs/servers/hiraeth/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     description = "Share files with an expiration date";
     license = lib.licenses.agpl3Plus;
     maintainers = [ lib.maintainers.lukaswrz ];
+    mainProgram = "hiraeth";
   };
 }
diff --git a/pkgs/servers/imaginary/default.nix b/pkgs/servers/imaginary/default.nix
index 8ab50dc957a68..4632647ed93e2 100644
--- a/pkgs/servers/imaginary/default.nix
+++ b/pkgs/servers/imaginary/default.nix
@@ -47,5 +47,6 @@ buildGoModule rec {
     description = "Fast, simple, scalable, Docker-ready HTTP microservice for high-level image processing";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda urandom ];
+    mainProgram = "imaginary";
   };
 }
diff --git a/pkgs/servers/jellyseerr/default.nix b/pkgs/servers/jellyseerr/default.nix
index 7c361f580d894..ca8e93753e69f 100644
--- a/pkgs/servers/jellyseerr/default.nix
+++ b/pkgs/servers/jellyseerr/default.nix
@@ -85,5 +85,6 @@ mkYarnPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ camillemndn ];
     platforms = platforms.linux;
+    mainProgram = "jellyseerr";
   };
 }
diff --git a/pkgs/servers/jitsi-excalidraw/default.nix b/pkgs/servers/jitsi-excalidraw/default.nix
index bb8bb6c2dfa7e..4fa9a55e20821 100644
--- a/pkgs/servers/jitsi-excalidraw/default.nix
+++ b/pkgs/servers/jitsi-excalidraw/default.nix
@@ -36,5 +36,6 @@ buildNpmPackage rec {
     homepage = "https://github.com/jitsi/excalidraw-backend";
     license = licenses.mit;
     maintainers = with maintainers; [ camillemndn ];
+    mainProgram = "jitsi-excalidraw-backend";
   };
 }
diff --git a/pkgs/servers/komga/default.nix b/pkgs/servers/komga/default.nix
index fbb8b38d5ee0b..f29a9b5f701e3 100644
--- a/pkgs/servers/komga/default.nix
+++ b/pkgs/servers/komga/default.nix
@@ -33,6 +33,7 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.mit;
     platforms = jdk17_headless.meta.platforms;
     maintainers = with maintainers; [ govanify ];
+    mainProgram = "komga";
   };
 
 }
diff --git a/pkgs/servers/lenpaste/default.nix b/pkgs/servers/lenpaste/default.nix
index 50e950e98a032..d9e4aa9b5ed9a 100644
--- a/pkgs/servers/lenpaste/default.nix
+++ b/pkgs/servers/lenpaste/default.nix
@@ -31,5 +31,6 @@ buildGoModule rec {
     homepage = "https://git.lcomrade.su/root/lenpaste";
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ vector1dev ];
+    mainProgram = "lenpaste";
   };
 }
diff --git a/pkgs/servers/mautrix-discord/default.nix b/pkgs/servers/mautrix-discord/default.nix
index 32e4e20b62c7a..4ddb9abe9ecd1 100644
--- a/pkgs/servers/mautrix-discord/default.nix
+++ b/pkgs/servers/mautrix-discord/default.nix
@@ -40,5 +40,6 @@ buildGoModule rec {
     changelog = "https://github.com/mautrix/discord/blob/${src.rev}/CHANGELOG.md";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ MoritzBoehme ];
+    mainProgram = "mautrix-discord";
   };
 }
diff --git a/pkgs/servers/mautrix-googlechat/default.nix b/pkgs/servers/mautrix-googlechat/default.nix
index 41a72eec05956..3c5861f16647b 100644
--- a/pkgs/servers/mautrix-googlechat/default.nix
+++ b/pkgs/servers/mautrix-googlechat/default.nix
@@ -68,5 +68,6 @@
     license = licenses.agpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ arcnmx ];
+    mainProgram = "mautrix-googlechat";
   };
 }
diff --git a/pkgs/servers/mautrix-telegram/default.nix b/pkgs/servers/mautrix-telegram/default.nix
index 4ce5ce1c1c458..b82475fa07ae7 100644
--- a/pkgs/servers/mautrix-telegram/default.nix
+++ b/pkgs/servers/mautrix-telegram/default.nix
@@ -78,5 +78,6 @@ python.pkgs.buildPythonPackage rec {
     license = licenses.agpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ nyanloutre ma27 nickcao ];
+    mainProgram = "mautrix-telegram";
   };
 }
diff --git a/pkgs/servers/mbusd/default.nix b/pkgs/servers/mbusd/default.nix
index 7db22dab8e34b..51441f6514cdb 100644
--- a/pkgs/servers/mbusd/default.nix
+++ b/pkgs/servers/mbusd/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     maintainers = with maintainers; [ sikmir ];
     platforms = platforms.unix;
+    mainProgram = "mbusd";
   };
 }
diff --git a/pkgs/servers/memos/default.nix b/pkgs/servers/memos/default.nix
index 191db93583299..1e8b53fe96dcc 100644
--- a/pkgs/servers/memos/default.nix
+++ b/pkgs/servers/memos/default.nix
@@ -49,5 +49,6 @@ buildGoModule rec {
     description = "A lightweight, self-hosted memo hub";
     maintainers = with maintainers; [ indexyz ];
     license = licenses.mit;
+    mainProgram = "memos";
   };
 }
diff --git a/pkgs/servers/microbin/default.nix b/pkgs/servers/microbin/default.nix
index 163b4ba7d800f..d829f14bb5c4d 100644
--- a/pkgs/servers/microbin/default.nix
+++ b/pkgs/servers/microbin/default.nix
@@ -82,5 +82,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/szabodanika/microbin/releases/tag/v${version}";
     license = licenses.bsd3;
     maintainers = with maintainers; [ dit7ya figsoda ];
+    mainProgram = "microbin";
   };
 }
diff --git a/pkgs/servers/miniflux/default.nix b/pkgs/servers/miniflux/default.nix
index 85038a6164507..e71a8fa4c577d 100644
--- a/pkgs/servers/miniflux/default.nix
+++ b/pkgs/servers/miniflux/default.nix
@@ -45,5 +45,6 @@ in buildGo121Module {
     homepage = "https://miniflux.app/";
     license = licenses.asl20;
     maintainers = with maintainers; [ rvolosatovs benpye ];
+    mainProgram = "miniflux";
   };
 }
diff --git a/pkgs/servers/minio/default.nix b/pkgs/servers/minio/default.nix
index 5d572c18e253a..bc61b99f0453f 100644
--- a/pkgs/servers/minio/default.nix
+++ b/pkgs/servers/minio/default.nix
@@ -57,5 +57,6 @@ buildGoModule rec {
     changelog = "https://github.com/minio/minio/releases/tag/RELEASE.${version}";
     maintainers = with maintainers; [ eelco bachp ];
     license = licenses.agpl3Plus;
+    mainProgram = "minio";
   };
 }
diff --git a/pkgs/servers/mirrorbits/default.nix b/pkgs/servers/mirrorbits/default.nix
index c7b29036a4168..3bd72b0e7dad8 100644
--- a/pkgs/servers/mirrorbits/default.nix
+++ b/pkgs/servers/mirrorbits/default.nix
@@ -48,5 +48,6 @@ buildGoModule rec {
     '';
     license = licenses.mit;
     maintainers = with maintainers; [ fpletz ];
+    mainProgram = "mirrorbits";
   };
 }
diff --git a/pkgs/servers/mjolnir/default.nix b/pkgs/servers/mjolnir/default.nix
index 562a6c83ae3f1..4b450a8450f4a 100644
--- a/pkgs/servers/mjolnir/default.nix
+++ b/pkgs/servers/mjolnir/default.nix
@@ -72,5 +72,6 @@ mkYarnPackage rec {
     '';
     license = licenses.asl20;
     maintainers = with maintainers; [ jojosch ];
+    mainProgram = "mjolnir";
   };
 }
diff --git a/pkgs/servers/moonraker/default.nix b/pkgs/servers/moonraker/default.nix
index 8d33402d7d347..b9435de2aeba9 100644
--- a/pkgs/servers/moonraker/default.nix
+++ b/pkgs/servers/moonraker/default.nix
@@ -52,5 +52,6 @@ in stdenvNoCC.mkDerivation rec {
     homepage = "https://github.com/Arksine/moonraker";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ zhaofengli ];
+    mainProgram = "moonraker";
   };
 }
diff --git a/pkgs/servers/mpd/default.nix b/pkgs/servers/mpd/default.nix
index df166ad0ff04b..11ea7716c6305 100644
--- a/pkgs/servers/mpd/default.nix
+++ b/pkgs/servers/mpd/default.nix
@@ -190,6 +190,7 @@ let
         license     = licenses.gpl2Only;
         maintainers = with maintainers; [ astsmtl ehmry tobim ];
         platforms   = platforms.unix;
+        mainProgram = "mpd";
 
         longDescription = ''
           Music Player Daemon (MPD) is a flexible, powerful daemon for playing
diff --git a/pkgs/servers/mtprotoproxy/default.nix b/pkgs/servers/mtprotoproxy/default.nix
index 04ea4d10fe8aa..44ecc6481ecd8 100644
--- a/pkgs/servers/mtprotoproxy/default.nix
+++ b/pkgs/servers/mtprotoproxy/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     homepage    = "https://github.com/alexbers/mtprotoproxy";
     platforms   = python.meta.platforms;
     maintainers = with maintainers; [ abbradar ];
+    mainProgram = "mtprotoproxy";
   };
 }
diff --git a/pkgs/servers/mx-puppet-discord/default.nix b/pkgs/servers/mx-puppet-discord/default.nix
index b0ccb03a8f9cb..7100a5bd271b3 100644
--- a/pkgs/servers/mx-puppet-discord/default.nix
+++ b/pkgs/servers/mx-puppet-discord/default.nix
@@ -48,5 +48,6 @@ in myNodePackages.package.override {
     platforms = platforms.unix;
     # never built on aarch64-darwin since first introduction in nixpkgs
     broken = stdenv.isDarwin && stdenv.isAarch64;
+    mainProgram = "mx-puppet-discord";
   };
 }
diff --git a/pkgs/servers/mycorrhiza/default.nix b/pkgs/servers/mycorrhiza/default.nix
index bb930ab2756d3..3eb3c731aad33 100644
--- a/pkgs/servers/mycorrhiza/default.nix
+++ b/pkgs/servers/mycorrhiza/default.nix
@@ -30,5 +30,6 @@ buildGoModule rec {
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ chekoopa ];
     platforms = platforms.linux;
+    mainProgram = "mycorrhiza";
   };
 }
diff --git a/pkgs/servers/nats-streaming-server/default.nix b/pkgs/servers/nats-streaming-server/default.nix
index 566e3f0802bd6..d43bbc2fdc54c 100644
--- a/pkgs/servers/nats-streaming-server/default.nix
+++ b/pkgs/servers/nats-streaming-server/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     license = licenses.asl20;
     maintainers = [ maintainers.swdunlop ];
     homepage = "https://nats.io/";
+    mainProgram = "nats-streaming-server";
   };
 }
diff --git a/pkgs/servers/networkaudiod/default.nix b/pkgs/servers/networkaudiod/default.nix
index dacd315aba343..a6a858637fe36 100644
--- a/pkgs/servers/networkaudiod/default.nix
+++ b/pkgs/servers/networkaudiod/default.nix
@@ -68,5 +68,6 @@ stdenv.mkDerivation rec {
     license = licenses.unfree;
     maintainers = with maintainers; [ lovesegfault ];
     platforms = platforms.linux;
+    mainProgram = "networkaudiod";
   };
 }
diff --git a/pkgs/servers/nfs-ganesha/default.nix b/pkgs/servers/nfs-ganesha/default.nix
index 7c46ba3461430..5f32437970c92 100644
--- a/pkgs/servers/nfs-ganesha/default.nix
+++ b/pkgs/servers/nfs-ganesha/default.nix
@@ -53,5 +53,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.markuskowa ];
     platforms = platforms.linux;
     license = licenses.lgpl3Plus;
+    mainProgram = "ganesha.nfsd";
   };
 }
diff --git a/pkgs/servers/nominatim/default.nix b/pkgs/servers/nominatim/default.nix
index 8c0410b87ac39..a666da35f4ca6 100644
--- a/pkgs/servers/nominatim/default.nix
+++ b/pkgs/servers/nominatim/default.nix
@@ -63,5 +63,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
     maintainers = [ maintainers.mausch ];
+    mainProgram = "nominatim";
   };
 }
diff --git a/pkgs/servers/nzbhydra2/default.nix b/pkgs/servers/nzbhydra2/default.nix
index fa6234a34eba1..7c70857585cc1 100644
--- a/pkgs/servers/nzbhydra2/default.nix
+++ b/pkgs/servers/nzbhydra2/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     maintainers = with maintainers; [jamiemagee];
     platforms = with platforms; linux;
+    mainProgram = "nzbhydra2";
   };
 }
diff --git a/pkgs/servers/oauth2-proxy/default.nix b/pkgs/servers/oauth2-proxy/default.nix
index b9e457006c6cd..152b3a31d85e5 100644
--- a/pkgs/servers/oauth2-proxy/default.nix
+++ b/pkgs/servers/oauth2-proxy/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/oauth2-proxy/oauth2-proxy/";
     license = licenses.mit;
     maintainers = teams.serokell.members;
+    mainProgram = "oauth2-proxy";
   };
 }
diff --git a/pkgs/servers/ombi/default.nix b/pkgs/servers/ombi/default.nix
index d1a74eb4d136d..2fb76c1fc947f 100644
--- a/pkgs/servers/ombi/default.nix
+++ b/pkgs/servers/ombi/default.nix
@@ -53,5 +53,6 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ woky ];
     platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
+    mainProgram = "Ombi";
   };
 }
diff --git a/pkgs/servers/owncast/default.nix b/pkgs/servers/owncast/default.nix
index e5c0a8fbaf2bb..2740e19dbff2f 100644
--- a/pkgs/servers/owncast/default.nix
+++ b/pkgs/servers/owncast/default.nix
@@ -44,6 +44,7 @@ in buildGoModule {
     license = licenses.mit;
     platforms = platforms.unix;
     maintainers = with maintainers; [ MayNiklas ];
+    mainProgram = "owncast";
   };
 
 }
diff --git a/pkgs/servers/oxigraph/default.nix b/pkgs/servers/oxigraph/default.nix
index e11167000dfc0..35148cb0932a0 100644
--- a/pkgs/servers/oxigraph/default.nix
+++ b/pkgs/servers/oxigraph/default.nix
@@ -36,5 +36,6 @@ rustPlatform.buildRustPackage rec {
     platforms = [ "x86_64-linux" "aarch64-linux" "aarch64-darwin" ];
     maintainers = with maintainers; [ astro ];
     license = with licenses; [ asl20 mit ];
+    mainProgram = "oxigraph_server";
   };
 }
diff --git a/pkgs/servers/p910nd/default.nix b/pkgs/servers/p910nd/default.nix
index b6ba368d90d48..094194d59a03e 100644
--- a/pkgs/servers/p910nd/default.nix
+++ b/pkgs/servers/p910nd/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ peterhoeg ];
     platforms = platforms.unix;
+    mainProgram = "p910nd";
   };
 }
diff --git a/pkgs/servers/persistent-evdev/default.nix b/pkgs/servers/persistent-evdev/default.nix
index 97f0ea01219ce..83518b904a509 100644
--- a/pkgs/servers/persistent-evdev/default.nix
+++ b/pkgs/servers/persistent-evdev/default.nix
@@ -39,5 +39,6 @@ buildPythonPackage rec {
     license = licenses.mit;
     maintainers = [ maintainers.lodi ];
     platforms = platforms.linux;
+    mainProgram = "persistent-evdev.py";
   };
 }
diff --git a/pkgs/servers/photoprism/default.nix b/pkgs/servers/photoprism/default.nix
index 0a2c2d3a4ffcd..8ad37a8aa387a 100644
--- a/pkgs/servers/photoprism/default.nix
+++ b/pkgs/servers/photoprism/default.nix
@@ -83,5 +83,6 @@ stdenv.mkDerivation {
     inherit (libtensorflow.meta) platforms;
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ benesim ];
+    mainProgram = "photoprism";
   };
 }
diff --git a/pkgs/servers/pinnwand/default.nix b/pkgs/servers/pinnwand/default.nix
index 302dbe62b0c68..86e05cfed45ac 100644
--- a/pkgs/servers/pinnwand/default.nix
+++ b/pkgs/servers/pinnwand/default.nix
@@ -50,6 +50,7 @@ with python3.pkgs; buildPythonApplication rec {
     homepage = "https://supakeen.com/project/pinnwand/";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
+    mainProgram = "pinnwand";
   };
 }
 
diff --git a/pkgs/servers/pocketbase/default.nix b/pkgs/servers/pocketbase/default.nix
index fb70c7747e410..747102fd2e82e 100644
--- a/pkgs/servers/pocketbase/default.nix
+++ b/pkgs/servers/pocketbase/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     homepage = "https://github.com/pocketbase/pocketbase";
     license = licenses.mit;
     maintainers = with maintainers; [ dit7ya thilobillerbeck ];
+    mainProgram = "pocketbase";
   };
 }
diff --git a/pkgs/servers/polaris/default.nix b/pkgs/servers/polaris/default.nix
index fc3141d464473..68a767bb03aba 100644
--- a/pkgs/servers/polaris/default.nix
+++ b/pkgs/servers/polaris/default.nix
@@ -76,5 +76,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ pbsds ];
     platforms = platforms.unix;
+    mainProgram = "polaris";
   };
 }
diff --git a/pkgs/servers/pr-tracker/default.nix b/pkgs/servers/pr-tracker/default.nix
index 2f99d6f562329..750ac015c061e 100644
--- a/pkgs/servers/pr-tracker/default.nix
+++ b/pkgs/servers/pr-tracker/default.nix
@@ -31,5 +31,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://git.qyliss.net/pr-tracker";
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ qyliss sumnerevans ];
+    mainProgram = "pr-tracker";
   };
 }
diff --git a/pkgs/servers/psitransfer/default.nix b/pkgs/servers/psitransfer/default.nix
index 2bb4f03eb3335..e39ae107217e6 100644
--- a/pkgs/servers/psitransfer/default.nix
+++ b/pkgs/servers/psitransfer/default.nix
@@ -45,5 +45,6 @@ in buildNpmPackage {
     description = "Simple open source self-hosted file sharing solution";
     license = lib.licenses.bsd2;
     maintainers = with lib.maintainers; [ hyshka ];
+    mainProgram = "psitransfer";
   };
 }
diff --git a/pkgs/servers/redpanda/default.nix b/pkgs/servers/redpanda/default.nix
index c8f2d80618407..3387ef3c6f118 100644
--- a/pkgs/servers/redpanda/default.nix
+++ b/pkgs/servers/redpanda/default.nix
@@ -48,5 +48,6 @@ buildGoModule rec {
     license = licenses.bsl11;
     maintainers = with maintainers; [ avakhrenev happysalada ];
     platforms = platforms.all;
+    mainProgram = "rpk";
   };
 }
diff --git a/pkgs/servers/reproxy/default.nix b/pkgs/servers/reproxy/default.nix
index 6192a492f2b8d..21077aa83d1c1 100644
--- a/pkgs/servers/reproxy/default.nix
+++ b/pkgs/servers/reproxy/default.nix
@@ -40,5 +40,6 @@ buildGoModule rec {
     homepage = "https://reproxy.io/";
     license = licenses.mit;
     maintainers = with maintainers; [ sikmir ];
+    mainProgram = "reproxy";
   };
 }
diff --git a/pkgs/servers/resgate/default.nix b/pkgs/servers/resgate/default.nix
index 1650dcd81955a..92b55c7c03dac 100644
--- a/pkgs/servers/resgate/default.nix
+++ b/pkgs/servers/resgate/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://resgate.io";
     license = licenses.mit;
     maintainers = with maintainers; [ farcaller ];
+    mainProgram = "resgate";
   };
 }
diff --git a/pkgs/servers/rinetd/default.nix b/pkgs/servers/rinetd/default.nix
index 07611bba54a58..23f1e89a780fe 100644
--- a/pkgs/servers/rinetd/default.nix
+++ b/pkgs/servers/rinetd/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     changelog = "https://github.com/samhocevar/rinetd/blob/${src.rev}/CHANGES.md";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ janik ];
+    mainProgram = "rinetd";
   };
 }
diff --git a/pkgs/servers/rippled/default.nix b/pkgs/servers/rippled/default.nix
index 18a1e91ea4d6b..e1ad55a41d38d 100644
--- a/pkgs/servers/rippled/default.nix
+++ b/pkgs/servers/rippled/default.nix
@@ -139,5 +139,6 @@ in stdenv.mkDerivation rec {
     maintainers = with maintainers; [ offline RaghavSood ];
     license = licenses.isc;
     platforms = platforms.linux;
+    mainProgram = "rippled";
   };
 }
diff --git a/pkgs/servers/roon-bridge/default.nix b/pkgs/servers/roon-bridge/default.nix
index 865dbd63f7afa..7a4b582ea687e 100644
--- a/pkgs/servers/roon-bridge/default.nix
+++ b/pkgs/servers/roon-bridge/default.nix
@@ -78,5 +78,6 @@ stdenv.mkDerivation {
     license = licenses.unfree;
     maintainers = with maintainers; [ lovesegfault ];
     platforms = [ "aarch64-linux" "x86_64-linux" ];
+    mainProgram = "RoonBridge";
   };
 }
diff --git a/pkgs/servers/roon-server/default.nix b/pkgs/servers/roon-server/default.nix
index d46be38781de2..767eb9e3631d8 100644
--- a/pkgs/servers/roon-server/default.nix
+++ b/pkgs/servers/roon-server/default.nix
@@ -95,5 +95,6 @@ stdenv.mkDerivation {
     license = licenses.unfree;
     maintainers = with maintainers; [ lovesegfault steell ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "RoonServer";
   };
 }
diff --git a/pkgs/servers/routinator/default.nix b/pkgs/servers/routinator/default.nix
index 3ab45831389b6..6864556fd55df 100644
--- a/pkgs/servers/routinator/default.nix
+++ b/pkgs/servers/routinator/default.nix
@@ -29,5 +29,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/NLnetLabs/routinator/blob/v${version}/Changelog.md";
     license = licenses.bsd3;
     maintainers = with maintainers; [ _0x4A6F ];
+    mainProgram = "routinator";
   };
 }
diff --git a/pkgs/servers/rpiplay/default.nix b/pkgs/servers/rpiplay/default.nix
index 5bcb9267f4841..cc9369f9ea29d 100644
--- a/pkgs/servers/rpiplay/default.nix
+++ b/pkgs/servers/rpiplay/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ];
     platforms = platforms.unix;
+    mainProgram = "rpiplay";
   };
 }
diff --git a/pkgs/servers/rustypaste/default.nix b/pkgs/servers/rustypaste/default.nix
index 0dc72f74bb2da..0986abe374ca3 100644
--- a/pkgs/servers/rustypaste/default.nix
+++ b/pkgs/servers/rustypaste/default.nix
@@ -33,5 +33,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/orhun/rustypaste/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda seqizz ];
+    mainProgram = "rustypaste";
   };
 }
diff --git a/pkgs/servers/sabnzbd/default.nix b/pkgs/servers/sabnzbd/default.nix
index 07c2ebe13b49b..96b183c2fe734 100644
--- a/pkgs/servers/sabnzbd/default.nix
+++ b/pkgs/servers/sabnzbd/default.nix
@@ -83,5 +83,6 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with lib.maintainers; [ fridh jojosch adamcstephens ];
+    mainProgram = "sabnzbd";
   };
 }
diff --git a/pkgs/servers/scaphandre/default.nix b/pkgs/servers/scaphandre/default.nix
index 21b72c031be2c..07aee5a715b31 100644
--- a/pkgs/servers/scaphandre/default.nix
+++ b/pkgs/servers/scaphandre/default.nix
@@ -66,5 +66,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.asl20;
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ gaelreyrol ];
+    mainProgram = "scaphandre";
   };
 }
diff --git a/pkgs/servers/ser2net/default.nix b/pkgs/servers/ser2net/default.nix
index 7ca94e4e402c2..43d6527d3aa5b 100644
--- a/pkgs/servers/ser2net/default.nix
+++ b/pkgs/servers/ser2net/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ emantor ];
     platforms = with platforms; linux;
+    mainProgram = "ser2net";
   };
 }
diff --git a/pkgs/servers/sftpgo/default.nix b/pkgs/servers/sftpgo/default.nix
index 085f0fb8cc9fe..1aa4323cda6f2 100644
--- a/pkgs/servers/sftpgo/default.nix
+++ b/pkgs/servers/sftpgo/default.nix
@@ -60,5 +60,6 @@ buildGoModule rec {
     '';
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ thenonameguy yayayayaka ];
+    mainProgram = "sftpgo";
   };
 }
diff --git a/pkgs/servers/shairplay/default.nix b/pkgs/servers/shairplay/default.nix
index 90db957d3c011..2a7e643b60fd3 100644
--- a/pkgs/servers/shairplay/default.nix
+++ b/pkgs/servers/shairplay/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license     = licenses.mit;
     maintainers = with maintainers; [ peterhoeg ];
     platforms   = platforms.unix;
+    mainProgram = "shairplay";
   };
 }
diff --git a/pkgs/servers/simplehttp2server/default.nix b/pkgs/servers/simplehttp2server/default.nix
index d673a201646dc..b14056f5adca1 100644
--- a/pkgs/servers/simplehttp2server/default.nix
+++ b/pkgs/servers/simplehttp2server/default.nix
@@ -20,6 +20,7 @@ buildGoPackage rec {
      description = "HTTP/2 server for development purposes";
      license = licenses.asl20;
      maintainers = with maintainers; [ yrashk ];
+     mainProgram = "simplehttp2server";
   };
 
 }
diff --git a/pkgs/servers/skydns/default.nix b/pkgs/servers/skydns/default.nix
index 2ae2efbbb7596..6d23a42abb143 100644
--- a/pkgs/servers/skydns/default.nix
+++ b/pkgs/servers/skydns/default.nix
@@ -30,5 +30,6 @@ buildGoModule rec {
     homepage = "https://github.com/skynetservices/skydns";
     license = lib.licenses.mit;
     maintainers = with maintainers; [ ];
+    mainProgram = "skydns";
   };
 }
diff --git a/pkgs/servers/spicedb/default.nix b/pkgs/servers/spicedb/default.nix
index e776805d8e5df..9095335d1b80d 100644
--- a/pkgs/servers/spicedb/default.nix
+++ b/pkgs/servers/spicedb/default.nix
@@ -28,5 +28,6 @@ buildGoModule rec {
     homepage = "https://authzed.com/";
     license = licenses.asl20;
     maintainers = with maintainers; [ thoughtpolice ];
+    mainProgram = "spicedb";
   };
 }
diff --git a/pkgs/servers/sqlpage/default.nix b/pkgs/servers/sqlpage/default.nix
index cefa00d416349..d68ad9ddcace3 100644
--- a/pkgs/servers/sqlpage/default.nix
+++ b/pkgs/servers/sqlpage/default.nix
@@ -95,5 +95,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/lovasoa/SQLpage/blob/${src.rev}/CHANGELOG.md";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dit7ya ];
+    mainProgram = "sqlpage";
   };
 }
diff --git a/pkgs/servers/sshportal/default.nix b/pkgs/servers/sshportal/default.nix
index 307b945eba1cf..58c0b5a2077f6 100644
--- a/pkgs/servers/sshportal/default.nix
+++ b/pkgs/servers/sshportal/default.nix
@@ -20,5 +20,6 @@ buildGoModule rec {
     homepage = "https://manfred.life/sshportal";
     license = licenses.asl20;
     maintainers = with maintainers; [ zaninime ];
+    mainProgram = "sshportal";
   };
 }
diff --git a/pkgs/servers/static-web-server/default.nix b/pkgs/servers/static-web-server/default.nix
index a8057cac7e7de..4c7b8d46638ce 100644
--- a/pkgs/servers/static-web-server/default.nix
+++ b/pkgs/servers/static-web-server/default.nix
@@ -37,5 +37,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/static-web-server/static-web-server/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "static-web-server";
   };
 }
diff --git a/pkgs/servers/stone/default.nix b/pkgs/servers/stone/default.nix
index 65ddb92da7a17..a565a609e12b8 100644
--- a/pkgs/servers/stone/default.nix
+++ b/pkgs/servers/stone/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     platforms = platforms.linux;
     maintainers = with maintainers; [ corngood ];
+    mainProgram = "stone";
   };
 }
diff --git a/pkgs/servers/swego/default.nix b/pkgs/servers/swego/default.nix
index 99f238c46d05c..eb4bcccbbf9dc 100644
--- a/pkgs/servers/swego/default.nix
+++ b/pkgs/servers/swego/default.nix
@@ -33,5 +33,6 @@ buildGoModule rec {
     # darwin crashes with:
     # src/controllers/parsingArgs.go:130:4: undefined: PrintEmbeddedFiles
     broken = stdenv.isDarwin;
+    mainProgram = "swego";
   };
 }
diff --git a/pkgs/servers/syncstorage-rs/default.nix b/pkgs/servers/syncstorage-rs/default.nix
index 399c56376ecfc..96b1945df51f7 100644
--- a/pkgs/servers/syncstorage-rs/default.nix
+++ b/pkgs/servers/syncstorage-rs/default.nix
@@ -62,5 +62,6 @@ rustPlatform.buildRustPackage rec {
     license = lib.licenses.mpl20;
     maintainers = with lib.maintainers; [ pennae ];
     platforms = lib.platforms.linux;
+    mainProgram = "syncserver";
   };
 }
diff --git a/pkgs/servers/tarssh/default.nix b/pkgs/servers/tarssh/default.nix
index 051ebe964ee24..4886b2f72cd94 100644
--- a/pkgs/servers/tarssh/default.nix
+++ b/pkgs/servers/tarssh/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     license = [ licenses.mit ];
     maintainers = with maintainers; [ sohalt ];
     platforms = platforms.unix ;
+    mainProgram = "tarssh";
   };
 }
diff --git a/pkgs/servers/telegram-bot-api/default.nix b/pkgs/servers/telegram-bot-api/default.nix
index 3d52ccc96f83a..d8dc668fb69bc 100644
--- a/pkgs/servers/telegram-bot-api/default.nix
+++ b/pkgs/servers/telegram-bot-api/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation {
     license = licenses.boost;
     maintainers = with maintainers; [ Anillc ];
     platforms = platforms.all;
+    mainProgram = "telegram-bot-api";
   };
 }
diff --git a/pkgs/servers/tidb/default.nix b/pkgs/servers/tidb/default.nix
index 605ebdf3a7116..5d929dfe348ed 100644
--- a/pkgs/servers/tidb/default.nix
+++ b/pkgs/servers/tidb/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     homepage = "https://pingcap.com";
     license = licenses.asl20;
     maintainers = [];
+    mainProgram = "tidb-server";
   };
 }
diff --git a/pkgs/servers/tmate-ssh-server/default.nix b/pkgs/servers/tmate-ssh-server/default.nix
index dff7f050fbf97..09cd26090e149 100644
--- a/pkgs/servers/tmate-ssh-server/default.nix
+++ b/pkgs/servers/tmate-ssh-server/default.nix
@@ -58,5 +58,6 @@ stdenv.mkDerivation {
     license = licenses.mit;
     platforms = platforms.unix;
     maintainers = with maintainers; [ ck3d ];
+    mainProgram = "tmate-ssh-server";
   };
 }
diff --git a/pkgs/servers/traefik/default.nix b/pkgs/servers/traefik/default.nix
index 41b6ae78a8780..7abbdc5c84037 100644
--- a/pkgs/servers/traefik/default.nix
+++ b/pkgs/servers/traefik/default.nix
@@ -35,5 +35,6 @@ buildGoModule rec {
     changelog = "https://github.com/traefik/traefik/raw/v${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ vdemeester ];
+    mainProgram = "traefik";
   };
 }
diff --git a/pkgs/servers/ttyd/default.nix b/pkgs/servers/ttyd/default.nix
index 435e872d332fe..9741a23f98519 100644
--- a/pkgs/servers/ttyd/default.nix
+++ b/pkgs/servers/ttyd/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license     = lib.licenses.mit;
     maintainers = [ lib.maintainers.thoughtpolice ];
     platforms   = lib.platforms.all;
+    mainProgram = "ttyd";
   };
 }
diff --git a/pkgs/servers/tvheadend/default.nix b/pkgs/servers/tvheadend/default.nix
index 573a857becd77..7c7b3124cebac 100644
--- a/pkgs/servers/tvheadend/default.nix
+++ b/pkgs/servers/tvheadend/default.nix
@@ -131,5 +131,6 @@ in stdenv.mkDerivation {
     license = licenses.gpl3Only;
     platforms = platforms.unix;
     maintainers = with maintainers; [ simonvandel ];
+    mainProgram = "tvheadend";
   };
 }
diff --git a/pkgs/servers/u9fs/default.nix b/pkgs/servers/u9fs/default.nix
index 0f50b1e18dd72..9056b4791672f 100644
--- a/pkgs/servers/u9fs/default.nix
+++ b/pkgs/servers/u9fs/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation {
     license = licenses.free;
     maintainers = [ maintainers.ehmry ];
     platforms = platforms.unix;
+    mainProgram = "u9fs";
   };
 }
diff --git a/pkgs/servers/ucarp/default.nix b/pkgs/servers/ucarp/default.nix
index b9a8bbea48045..90cbc562d382a 100644
--- a/pkgs/servers/ucarp/default.nix
+++ b/pkgs/servers/ucarp/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     '';
     license = with licenses; [ isc bsdOriginal bsd2 gpl2Plus ];
     maintainers = with maintainers; [ oxzi ];
+    mainProgram = "ucarp";
   };
 }
diff --git a/pkgs/servers/ums/default.nix b/pkgs/servers/ums/default.nix
index 48398a5ba6e11..e862884a457b6 100644
--- a/pkgs/servers/ums/default.nix
+++ b/pkgs/servers/ums/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
       license = lib.licenses.gpl2;
       platforms = lib.platforms.linux;
       maintainers = with lib.maintainers; [ thall snicket2100 ];
+      mainProgram = "ums";
   };
 }
diff --git a/pkgs/servers/unpackerr/default.nix b/pkgs/servers/unpackerr/default.nix
index 140f4ddfa7933..5ed52a37f62cd 100644
--- a/pkgs/servers/unpackerr/default.nix
+++ b/pkgs/servers/unpackerr/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     homepage = "https://github.com/davidnewhall/unpackerr";
     maintainers = with maintainers; [ nullx76 ];
     license = licenses.mit;
+    mainProgram = "unpackerr";
   };
 }
diff --git a/pkgs/servers/unpfs/default.nix b/pkgs/servers/unpfs/default.nix
index f71263469744b..b67cf7ce05496 100644
--- a/pkgs/servers/unpfs/default.nix
+++ b/pkgs/servers/unpfs/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage rec {
 
     # macOS build fails: https://github.com/pfpacket/rust-9p/issues/7
     platforms = with platforms; linux;
+    mainProgram = "unpfs";
   };
 }
diff --git a/pkgs/servers/uwsgi/default.nix b/pkgs/servers/uwsgi/default.nix
index 2c7563fe03c08..beeca756d8678 100644
--- a/pkgs/servers/uwsgi/default.nix
+++ b/pkgs/servers/uwsgi/default.nix
@@ -168,5 +168,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.gpl2;
     maintainers = with lib.maintainers; [ abbradar schneefux globin ];
     platforms = lib.platforms.unix;
+    mainProgram = "uwsgi";
   };
 })
diff --git a/pkgs/servers/uxplay/default.nix b/pkgs/servers/uxplay/default.nix
index d5d150bd0f2cd..63a02f6828c8a 100644
--- a/pkgs/servers/uxplay/default.nix
+++ b/pkgs/servers/uxplay/default.nix
@@ -53,5 +53,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = lib.licenses.gpl3Plus;
     maintainers = [ lib.maintainers.azuwis ];
     platforms = lib.platforms.unix;
+    mainProgram = "uxplay";
   };
 })
diff --git a/pkgs/servers/vouch-proxy/default.nix b/pkgs/servers/vouch-proxy/default.nix
index 535ef7192d84a..cfb22c85dbec5 100644
--- a/pkgs/servers/vouch-proxy/default.nix
+++ b/pkgs/servers/vouch-proxy/default.nix
@@ -33,5 +33,6 @@ buildGoModule rec {
     license = licenses.mit;
     maintainers = with maintainers; [ leona erictapen ];
     platforms = platforms.linux;
+    mainProgram = "vouch-proxy";
   };
 }
diff --git a/pkgs/servers/webdav-server-rs/default.nix b/pkgs/servers/webdav-server-rs/default.nix
index 06c8716ba8778..695ab41dea62d 100644
--- a/pkgs/servers/webdav-server-rs/default.nix
+++ b/pkgs/servers/webdav-server-rs/default.nix
@@ -43,5 +43,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/miquels/webdav-server-rs";
     license = licenses.asl20;
     maintainers = with maintainers; [ pmy ];
+    mainProgram = "webdav-server";
   };
 }
diff --git a/pkgs/servers/webdav/default.nix b/pkgs/servers/webdav/default.nix
index f6380337e8640..248c5e882ccee 100644
--- a/pkgs/servers/webdav/default.nix
+++ b/pkgs/servers/webdav/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/hacdias/webdav";
     license = licenses.mit;
     maintainers = with maintainers; [ pmy ];
+    mainProgram = "webdav";
   };
 }
diff --git a/pkgs/servers/webmetro/default.nix b/pkgs/servers/webmetro/default.nix
index 2cae2887e9fba..11cbfa5adbf21 100644
--- a/pkgs/servers/webmetro/default.nix
+++ b/pkgs/servers/webmetro/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     '';
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ leenaars ];
+    mainProgram = "webmetro";
   };
 }
diff --git a/pkgs/servers/wesher/default.nix b/pkgs/servers/wesher/default.nix
index 5ab8edd173816..e9b243e325e48 100644
--- a/pkgs/servers/wesher/default.nix
+++ b/pkgs/servers/wesher/default.nix
@@ -26,5 +26,6 @@ buildGoModule rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ tylerjl ];
     platforms   = platforms.linux;
+    mainProgram = "wesher";
   };
 }
diff --git a/pkgs/servers/wishlist/default.nix b/pkgs/servers/wishlist/default.nix
index cc9bc6cfd89ea..19ce2c32e220f 100644
--- a/pkgs/servers/wishlist/default.nix
+++ b/pkgs/servers/wishlist/default.nix
@@ -23,5 +23,6 @@ buildGoModule rec {
     changelog = "https://github.com/charmbracelet/wishlist/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ caarlos0 penguwin ];
+    mainProgram = "wishlist";
   };
 }
diff --git a/pkgs/servers/wsdd/default.nix b/pkgs/servers/wsdd/default.nix
index 8e1f61dc5dd35..6b99e6c593738 100644
--- a/pkgs/servers/wsdd/default.nix
+++ b/pkgs/servers/wsdd/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ izorkin ];
     license = licenses.mit;
     platforms = platforms.all;
+    mainProgram = "wsdd";
   };
 }
diff --git a/pkgs/servers/xandikos/default.nix b/pkgs/servers/xandikos/default.nix
index e5238b90814fe..f61d5c1a02c56 100644
--- a/pkgs/servers/xandikos/default.nix
+++ b/pkgs/servers/xandikos/default.nix
@@ -44,5 +44,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl3Plus;
     changelog = "https://github.com/jelmer/xandikos/blob/v${version}/NEWS";
     maintainers = with maintainers; [ _0x4A6F ];
+    mainProgram = "xandikos";
   };
 }
diff --git a/pkgs/servers/xteve/default.nix b/pkgs/servers/xteve/default.nix
index 47302d6e9d499..75591ddfbc147 100644
--- a/pkgs/servers/xteve/default.nix
+++ b/pkgs/servers/xteve/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/xteve-project/xTeVe";
     license = licenses.mit;
     maintainers = with maintainers; [ nrhelmi ];
+    mainProgram = "xteve";
   };
 }
diff --git a/pkgs/servers/zigbee2mqtt/default.nix b/pkgs/servers/zigbee2mqtt/default.nix
index 1b8ae2e317872..010112dff80bd 100644
--- a/pkgs/servers/zigbee2mqtt/default.nix
+++ b/pkgs/servers/zigbee2mqtt/default.nix
@@ -39,5 +39,6 @@ buildNpmPackage rec {
     '';
     maintainers = with maintainers; [ sweber hexa ];
     platforms = platforms.linux;
+    mainProgram = "zigbee2mqtt";
   };
 }
diff --git a/pkgs/tools/X11/alttab/default.nix b/pkgs/tools/X11/alttab/default.nix
index 7e675c250175f..99619bd88d2c4 100644
--- a/pkgs/tools/X11/alttab/default.nix
+++ b/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/pkgs/tools/X11/autocutsel/default.nix b/pkgs/tools/X11/autocutsel/default.nix
index 61a80bcbcdd61..e1b9a3c1c73a5 100644
--- a/pkgs/tools/X11/autocutsel/default.nix
+++ b/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/pkgs/tools/X11/bgs/default.nix b/pkgs/tools/X11/bgs/default.nix
index f0150e9315515..b50f15a1929cb 100644
--- a/pkgs/tools/X11/bgs/default.nix
+++ b/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/pkgs/tools/X11/ckbcomp/default.nix b/pkgs/tools/X11/ckbcomp/default.nix
index f78e43dbcc8ef..1b50b2456d0ae 100644
--- a/pkgs/tools/X11/ckbcomp/default.nix
+++ b/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/pkgs/tools/X11/devour/default.nix b/pkgs/tools/X11/devour/default.nix
index 016ffa6215dbd..861eaf905f9d1 100644
--- a/pkgs/tools/X11/devour/default.nix
+++ b/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/pkgs/tools/X11/dex/default.nix b/pkgs/tools/X11/dex/default.nix
index 5e0ef6002ce06..c194e1543f292 100644
--- a/pkgs/tools/X11/dex/default.nix
+++ b/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/pkgs/tools/X11/dispad/default.nix b/pkgs/tools/X11/dispad/default.nix
index fbb7b117d2982..11d46bf24cb64 100644
--- a/pkgs/tools/X11/dispad/default.nix
+++ b/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/pkgs/tools/X11/ffcast/default.nix b/pkgs/tools/X11/ffcast/default.nix
index 9723ef69b8507..9b2611dde210f 100644
--- a/pkgs/tools/X11/ffcast/default.nix
+++ b/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/pkgs/tools/X11/find-cursor/default.nix b/pkgs/tools/X11/find-cursor/default.nix
index 44a7c7662152c..3b9862a47dea2 100644
--- a/pkgs/tools/X11/find-cursor/default.nix
+++ b/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/pkgs/tools/X11/gobble/default.nix b/pkgs/tools/X11/gobble/default.nix
index 46b1b2c4b482e..b61cf78f99212 100644
--- a/pkgs/tools/X11/gobble/default.nix
+++ b/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/pkgs/tools/X11/grobi/default.nix b/pkgs/tools/X11/grobi/default.nix
index 08b0379729705..cea5fad51e555 100644
--- a/pkgs/tools/X11/grobi/default.nix
+++ b/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/pkgs/tools/X11/icon-slicer/default.nix b/pkgs/tools/X11/icon-slicer/default.nix
index 37b309c54b76b..514b39496ffa4 100644
--- a/pkgs/tools/X11/icon-slicer/default.nix
+++ b/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/pkgs/tools/X11/imwheel/default.nix b/pkgs/tools/X11/imwheel/default.nix
index 79fbe65af1f22..bab363583a6ca 100644
--- a/pkgs/tools/X11/imwheel/default.nix
+++ b/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/pkgs/tools/X11/inputplug/default.nix b/pkgs/tools/X11/inputplug/default.nix
index e6bf334cf4c0a..80d97190a0cee 100644
--- a/pkgs/tools/X11/inputplug/default.nix
+++ b/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/pkgs/tools/X11/kdocker/default.nix b/pkgs/tools/X11/kdocker/default.nix
index 21a11f8fa31a1..e8c08e4c3832b 100644
--- a/pkgs/tools/X11/kdocker/default.nix
+++ b/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/pkgs/tools/X11/keynav/default.nix b/pkgs/tools/X11/keynav/default.nix
index 4a2a0e8b59044..63732f478cbaa 100644
--- a/pkgs/tools/X11/keynav/default.nix
+++ b/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/pkgs/tools/X11/ksuperkey/default.nix b/pkgs/tools/X11/ksuperkey/default.nix
index 8b77ae550300f..733022948dbda 100644
--- a/pkgs/tools/X11/ksuperkey/default.nix
+++ b/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/pkgs/tools/X11/nitrogen/default.nix b/pkgs/tools/X11/nitrogen/default.nix
index deefddf23cea3..6097948a7cd3c 100644
--- a/pkgs/tools/X11/nitrogen/default.nix
+++ b/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/pkgs/tools/X11/obconf/default.nix b/pkgs/tools/X11/obconf/default.nix
index efd8b60419bee..f4f9fd433fdea 100644
--- a/pkgs/tools/X11/obconf/default.nix
+++ b/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/pkgs/tools/X11/paperview/default.nix b/pkgs/tools/X11/paperview/default.nix
index 790eaed53ab5a..30f04702708aa 100644
--- a/pkgs/tools/X11/paperview/default.nix
+++ b/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/pkgs/tools/X11/pmenu/default.nix b/pkgs/tools/X11/pmenu/default.nix
index c5f6274d988e5..278a181f5c92a 100644
--- a/pkgs/tools/X11/pmenu/default.nix
+++ b/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/pkgs/tools/X11/ratmen/default.nix b/pkgs/tools/X11/ratmen/default.nix
index 8a07b41ac3716..0fe85a9ae452d 100644
--- a/pkgs/tools/X11/ratmen/default.nix
+++ b/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/pkgs/tools/X11/run-scaled/default.nix b/pkgs/tools/X11/run-scaled/default.nix
index d62b38bdf2872..b9cdc20f78aa5 100644
--- a/pkgs/tools/X11/run-scaled/default.nix
+++ b/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/pkgs/tools/X11/sbs/default.nix b/pkgs/tools/X11/sbs/default.nix
index 02a25ba467fb2..8f16729cd2562 100644
--- a/pkgs/tools/X11/sbs/default.nix
+++ b/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/pkgs/tools/X11/setroot/default.nix b/pkgs/tools/X11/setroot/default.nix
index bc7b468caaf8a..2c7729eab3ad3 100644
--- a/pkgs/tools/X11/setroot/default.nix
+++ b/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/pkgs/tools/X11/smart-wallpaper/default.nix b/pkgs/tools/X11/smart-wallpaper/default.nix
index f992838935c7d..8f41bb7a78afa 100644
--- a/pkgs/tools/X11/smart-wallpaper/default.nix
+++ b/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/pkgs/tools/X11/srandrd/default.nix b/pkgs/tools/X11/srandrd/default.nix
index 84f43301bbd75..0d51bf4785ecb 100644
--- a/pkgs/tools/X11/srandrd/default.nix
+++ b/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/pkgs/tools/X11/sselp/default.nix b/pkgs/tools/X11/sselp/default.nix
index d22884270dd45..de083a32028d7 100644
--- a/pkgs/tools/X11/sselp/default.nix
+++ b/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/pkgs/tools/X11/sx/default.nix b/pkgs/tools/X11/sx/default.nix
index f48e59c753eb2..d408af8245bc7 100644
--- a/pkgs/tools/X11/sx/default.nix
+++ b/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/pkgs/tools/X11/vdpauinfo/default.nix b/pkgs/tools/X11/vdpauinfo/default.nix
index a5fc87aaf6f2b..0ca3354433dce 100644
--- a/pkgs/tools/X11/vdpauinfo/default.nix
+++ b/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/pkgs/tools/X11/wayv/default.nix b/pkgs/tools/X11/wayv/default.nix
index 2bdeff6a57904..eae930de1dd9b 100644
--- a/pkgs/tools/X11/wayv/default.nix
+++ b/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/pkgs/tools/X11/wmctrl/default.nix b/pkgs/tools/X11/wmctrl/default.nix
index 19a464aff72af..08a3e9c365f40 100644
--- a/pkgs/tools/X11/wmctrl/default.nix
+++ b/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/pkgs/tools/X11/x11vnc/default.nix b/pkgs/tools/X11/x11vnc/default.nix
index e9e9e4b4daba4..8c48951b2d42a 100644
--- a/pkgs/tools/X11/x11vnc/default.nix
+++ b/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/pkgs/tools/X11/x2vnc/default.nix b/pkgs/tools/X11/x2vnc/default.nix
index ed4a83fc8de08..8c9648e71d37b 100644
--- a/pkgs/tools/X11/x2vnc/default.nix
+++ b/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/pkgs/tools/X11/x2x/default.nix b/pkgs/tools/X11/x2x/default.nix
index 3a766d63ba97e..061f1d190318a 100644
--- a/pkgs/tools/X11/x2x/default.nix
+++ b/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/pkgs/tools/X11/xannotate/default.nix b/pkgs/tools/X11/xannotate/default.nix
index fe6d5cae6ee1d..148bbcfe7af49 100644
--- a/pkgs/tools/X11/xannotate/default.nix
+++ b/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/pkgs/tools/X11/xbanish/default.nix b/pkgs/tools/X11/xbanish/default.nix
index 9aa7e4f5b0235..9a8780324b84e 100644
--- a/pkgs/tools/X11/xbanish/default.nix
+++ b/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/pkgs/tools/X11/xbindkeys-config/default.nix b/pkgs/tools/X11/xbindkeys-config/default.nix
index e9d6d42b06892..8a5c07ef96ecd 100644
--- a/pkgs/tools/X11/xbindkeys-config/default.nix
+++ b/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/pkgs/tools/X11/xborders/default.nix b/pkgs/tools/X11/xborders/default.nix
index f9e78034c3c04..379f976acf451 100644
--- a/pkgs/tools/X11/xborders/default.nix
+++ b/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/pkgs/tools/X11/xbrightness/default.nix b/pkgs/tools/X11/xbrightness/default.nix
index 1445c60ccb19e..c022371c01d98 100644
--- a/pkgs/tools/X11/xbrightness/default.nix
+++ b/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/pkgs/tools/X11/xcalib/default.nix b/pkgs/tools/X11/xcalib/default.nix
index 09d5cde88fe6d..4960aff0f7b0c 100644
--- a/pkgs/tools/X11/xcalib/default.nix
+++ b/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/pkgs/tools/X11/xcape/default.nix b/pkgs/tools/X11/xcape/default.nix
index f8d4376017bda..c62e29cedc154 100644
--- a/pkgs/tools/X11/xcape/default.nix
+++ b/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/pkgs/tools/X11/xchainkeys/default.nix b/pkgs/tools/X11/xchainkeys/default.nix
index 5c154f8a1116d..7a251b30a47b9 100644
--- a/pkgs/tools/X11/xchainkeys/default.nix
+++ b/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/pkgs/tools/X11/xcwd/default.nix b/pkgs/tools/X11/xcwd/default.nix
index 6dbd8606485a7..d60390952dd71 100644
--- a/pkgs/tools/X11/xcwd/default.nix
+++ b/pkgs/tools/X11/xcwd/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.grburst ];
     license = licenses.bsd3;
     platforms = platforms.linux;
+    mainProgram = "xcwd";
   };
 }
diff --git a/pkgs/tools/X11/xdotool/default.nix b/pkgs/tools/X11/xdotool/default.nix
index 736c05c7c7db8..bcb48ac44fac7 100644
--- a/pkgs/tools/X11/xdotool/default.nix
+++ b/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/pkgs/tools/X11/xgeometry-select/default.nix b/pkgs/tools/X11/xgeometry-select/default.nix
index 9f9b50feab909..005bf302cc342 100644
--- a/pkgs/tools/X11/xgeometry-select/default.nix
+++ b/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/pkgs/tools/X11/xinput_calibrator/default.nix b/pkgs/tools/X11/xinput_calibrator/default.nix
index 25b419ade4e37..d8afb3e4a8966 100644
--- a/pkgs/tools/X11/xinput_calibrator/default.nix
+++ b/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/pkgs/tools/X11/xkb-switch-i3/default.nix b/pkgs/tools/X11/xkb-switch-i3/default.nix
index 6333c1abc740b..975eeb9866141 100644
--- a/pkgs/tools/X11/xkb-switch-i3/default.nix
+++ b/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/pkgs/tools/X11/xkb-switch/default.nix b/pkgs/tools/X11/xkb-switch/default.nix
index e2f15d969edd6..7db5925322346 100644
--- a/pkgs/tools/X11/xkb-switch/default.nix
+++ b/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/pkgs/tools/X11/xkbset/default.nix b/pkgs/tools/X11/xkbset/default.nix
index 645770f7e015a..9c4bc81744fa5 100644
--- a/pkgs/tools/X11/xkbset/default.nix
+++ b/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/pkgs/tools/X11/xkbvalidate/default.nix b/pkgs/tools/X11/xkbvalidate/default.nix
index 92a47aa65638b..b39e697f77414 100644
--- a/pkgs/tools/X11/xkbvalidate/default.nix
+++ b/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/pkgs/tools/X11/xlayoutdisplay/default.nix b/pkgs/tools/X11/xlayoutdisplay/default.nix
index 593b40a2ade79..499bd46945925 100644
--- a/pkgs/tools/X11/xlayoutdisplay/default.nix
+++ b/pkgs/tools/X11/xlayoutdisplay/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ dtzWill ];
     license = licenses.asl20;
     platforms = platforms.linux;
+    mainProgram = "xlayoutdisplay";
   };
 }
diff --git a/pkgs/tools/X11/xlogo/default.nix b/pkgs/tools/X11/xlogo/default.nix
index 8c30b34eca754..7b8e9bf52212b 100644
--- a/pkgs/tools/X11/xlogo/default.nix
+++ b/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/pkgs/tools/X11/xmcp/default.nix b/pkgs/tools/X11/xmcp/default.nix
index 178861d637246..228d502c4b7c2 100644
--- a/pkgs/tools/X11/xmcp/default.nix
+++ b/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/pkgs/tools/X11/xmousepasteblock/default.nix b/pkgs/tools/X11/xmousepasteblock/default.nix
index ec6a5b0b8e11f..121ec93b2242c 100644
--- a/pkgs/tools/X11/xmousepasteblock/default.nix
+++ b/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/pkgs/tools/X11/xnotify/default.nix b/pkgs/tools/X11/xnotify/default.nix
index e5c6c31e7dbb0..cdd7d54b52945 100644
--- a/pkgs/tools/X11/xnotify/default.nix
+++ b/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/pkgs/tools/X11/xob/default.nix b/pkgs/tools/X11/xob/default.nix
index 71e50248df979..e6e2fc2730208 100644
--- a/pkgs/tools/X11/xob/default.nix
+++ b/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/pkgs/tools/X11/xplugd/default.nix b/pkgs/tools/X11/xplugd/default.nix
index aa07c7f37b1b4..f5b81571ef2db 100644
--- a/pkgs/tools/X11/xplugd/default.nix
+++ b/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/pkgs/tools/X11/xpointerbarrier/default.nix b/pkgs/tools/X11/xpointerbarrier/default.nix
index 33271090678fc..8621e76443659 100644
--- a/pkgs/tools/X11/xpointerbarrier/default.nix
+++ b/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/pkgs/tools/X11/xprintidle-ng/default.nix b/pkgs/tools/X11/xprintidle-ng/default.nix
index ec8a2ed459d39..ebe3d2a619926 100644
--- a/pkgs/tools/X11/xprintidle-ng/default.nix
+++ b/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/pkgs/tools/X11/xprintidle/default.nix b/pkgs/tools/X11/xprintidle/default.nix
index 400306db6efdb..4a0d371a7fd61 100644
--- a/pkgs/tools/X11/xprintidle/default.nix
+++ b/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/pkgs/tools/X11/xprompt/default.nix b/pkgs/tools/X11/xprompt/default.nix
index 191b0316fa807..15f7b337c8795 100644
--- a/pkgs/tools/X11/xprompt/default.nix
+++ b/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/pkgs/tools/X11/xrectsel/default.nix b/pkgs/tools/X11/xrectsel/default.nix
index 8b37a6792424b..7eef352aea53a 100644
--- a/pkgs/tools/X11/xrectsel/default.nix
+++ b/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/pkgs/tools/X11/xrestop/default.nix b/pkgs/tools/X11/xrestop/default.nix
index dd3766160c013..2837d2a83d736 100644
--- a/pkgs/tools/X11/xrestop/default.nix
+++ b/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/pkgs/tools/X11/xtrace/default.nix b/pkgs/tools/X11/xtrace/default.nix
index dfd834e67b808..de1ea88266e2d 100644
--- a/pkgs/tools/X11/xtrace/default.nix
+++ b/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/pkgs/tools/X11/xtruss/default.nix b/pkgs/tools/X11/xtruss/default.nix
index 9e2ee94efa4ac..790312335ab21 100644
--- a/pkgs/tools/X11/xtruss/default.nix
+++ b/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/pkgs/tools/X11/xvkbd/default.nix b/pkgs/tools/X11/xvkbd/default.nix
index 32355205d59a9..7ed6b355a7993 100644
--- a/pkgs/tools/X11/xvkbd/default.nix
+++ b/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/pkgs/tools/X11/xwallpaper/default.nix b/pkgs/tools/X11/xwallpaper/default.nix
index 051a3a0d0fe73..df93e10fe1943 100644
--- a/pkgs/tools/X11/xwallpaper/default.nix
+++ b/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/pkgs/tools/X11/xwinmosaic/default.nix b/pkgs/tools/X11/xwinmosaic/default.nix
index 51ba815f1de45..1189fd8f86aa4 100644
--- a/pkgs/tools/X11/xwinmosaic/default.nix
+++ b/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/pkgs/tools/X11/xwinwrap/default.nix b/pkgs/tools/X11/xwinwrap/default.nix
index e5bc5743c28db..d36d2c51de5e0 100644
--- a/pkgs/tools/X11/xwinwrap/default.nix
+++ b/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/pkgs/tools/X11/xzoom/default.nix b/pkgs/tools/X11/xzoom/default.nix
index 7ba6bbee223d7..0e368651000dc 100644
--- a/pkgs/tools/X11/xzoom/default.nix
+++ b/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/pkgs/tools/audio/abcm2ps/default.nix b/pkgs/tools/audio/abcm2ps/default.nix
index 249b4ba1706cc..c914572317161 100644
--- a/pkgs/tools/audio/abcm2ps/default.nix
+++ b/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/pkgs/tools/audio/accuraterip-checksum/default.nix b/pkgs/tools/audio/accuraterip-checksum/default.nix
index 161e9848bea6f..8658dfb5a7aa4 100644
--- a/pkgs/tools/audio/accuraterip-checksum/default.nix
+++ b/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/pkgs/tools/audio/acousticbrainz-client/default.nix b/pkgs/tools/audio/acousticbrainz-client/default.nix
index 651605679684e..1d4b59ed2c924 100644
--- a/pkgs/tools/audio/acousticbrainz-client/default.nix
+++ b/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/pkgs/tools/audio/audiowaveform/default.nix b/pkgs/tools/audio/audiowaveform/default.nix
index 11dc8541c5b93..a5fff36322e40 100644
--- a/pkgs/tools/audio/audiowaveform/default.nix
+++ b/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/pkgs/tools/audio/bark/default.nix b/pkgs/tools/audio/bark/default.nix
index f943b555b0102..e866b1a18a3b3 100644
--- a/pkgs/tools/audio/bark/default.nix
+++ b/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/pkgs/tools/audio/botamusique/default.nix b/pkgs/tools/audio/botamusique/default.nix
index 02460f61d93ba..85c707bda90ca 100644
--- a/pkgs/tools/audio/botamusique/default.nix
+++ b/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/pkgs/tools/audio/catnip-gtk4/default.nix b/pkgs/tools/audio/catnip-gtk4/default.nix
index 2175edb0c5230..da677d71bc03a 100644
--- a/pkgs/tools/audio/catnip-gtk4/default.nix
+++ b/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/pkgs/tools/audio/catnip/default.nix b/pkgs/tools/audio/catnip/default.nix
index de299738242e3..de8a609dfd618 100644
--- a/pkgs/tools/audio/catnip/default.nix
+++ b/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/pkgs/tools/audio/dsp/default.nix b/pkgs/tools/audio/dsp/default.nix
index e17e211d34026..8c218ab70e8e9 100644
--- a/pkgs/tools/audio/dsp/default.nix
+++ b/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/pkgs/tools/audio/essentia-extractor/default.nix b/pkgs/tools/audio/essentia-extractor/default.nix
index 4fbdd02e4404c..de3bf45d10c58 100644
--- a/pkgs/tools/audio/essentia-extractor/default.nix
+++ b/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/pkgs/tools/audio/gvolicon/default.nix b/pkgs/tools/audio/gvolicon/default.nix
index e15a048b991ce..1e552d64cfaa2 100644
--- a/pkgs/tools/audio/gvolicon/default.nix
+++ b/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/pkgs/tools/audio/headset-charge-indicator/default.nix b/pkgs/tools/audio/headset-charge-indicator/default.nix
index bed9c415c83b5..40005ea9a6e16 100644
--- a/pkgs/tools/audio/headset-charge-indicator/default.nix
+++ b/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/pkgs/tools/audio/linuxwave/default.nix b/pkgs/tools/audio/linuxwave/default.nix
index 98860675dafcc..4d86b31c854ef 100644
--- a/pkgs/tools/audio/linuxwave/default.nix
+++ b/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/pkgs/tools/audio/mictray/default.nix b/pkgs/tools/audio/mictray/default.nix
index e757bac966829..d93423e66b491 100644
--- a/pkgs/tools/audio/mictray/default.nix
+++ b/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/pkgs/tools/audio/midimonster/default.nix b/pkgs/tools/audio/midimonster/default.nix
index ec55367474f5f..8ff97968b0008 100644
--- a/pkgs/tools/audio/midimonster/default.nix
+++ b/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/pkgs/tools/audio/mp3cat/default.nix b/pkgs/tools/audio/mp3cat/default.nix
index dbcc458164de6..5819eb281b2fa 100644
--- a/pkgs/tools/audio/mp3cat/default.nix
+++ b/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/pkgs/tools/audio/mpd-discord-rpc/default.nix b/pkgs/tools/audio/mpd-discord-rpc/default.nix
index 786f5c062daa3..17bc6c6e419f7 100644
--- a/pkgs/tools/audio/mpd-discord-rpc/default.nix
+++ b/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/pkgs/tools/audio/mpd-mpris/default.nix b/pkgs/tools/audio/mpd-mpris/default.nix
index f530ffc5d6640..dcf1e467300e4 100644
--- a/pkgs/tools/audio/mpd-mpris/default.nix
+++ b/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/pkgs/tools/audio/mpd-notification/default.nix b/pkgs/tools/audio/mpd-notification/default.nix
index 03b632ae7e0ef..845056c61414c 100644
--- a/pkgs/tools/audio/mpd-notification/default.nix
+++ b/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/pkgs/tools/audio/mpd-sima/default.nix b/pkgs/tools/audio/mpd-sima/default.nix
index 0da82ea0b9aa1..b123d2828c4c1 100644
--- a/pkgs/tools/audio/mpd-sima/default.nix
+++ b/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/pkgs/tools/audio/mpdas/default.nix b/pkgs/tools/audio/mpdas/default.nix
index 8b12b6fc16d70..04251854d48d2 100644
--- a/pkgs/tools/audio/mpdas/default.nix
+++ b/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/pkgs/tools/audio/mpdris2/default.nix b/pkgs/tools/audio/mpdris2/default.nix
index fd8618d6243d9..fd4b60f13e05d 100644
--- a/pkgs/tools/audio/mpdris2/default.nix
+++ b/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/pkgs/tools/audio/nanotts/default.nix b/pkgs/tools/audio/nanotts/default.nix
index a68f1593b6467..41214ffe9206a 100644
--- a/pkgs/tools/audio/nanotts/default.nix
+++ b/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/pkgs/tools/audio/pasystray/default.nix b/pkgs/tools/audio/pasystray/default.nix
index c010884665993..20708e82729dc 100644
--- a/pkgs/tools/audio/pasystray/default.nix
+++ b/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/pkgs/tools/audio/patray/default.nix b/pkgs/tools/audio/patray/default.nix
index ff7b55689b8ff..e6800d943725d 100644
--- a/pkgs/tools/audio/patray/default.nix
+++ b/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/pkgs/tools/audio/picotts/default.nix b/pkgs/tools/audio/picotts/default.nix
index 137fa838c6292..0b470aca5f942 100644
--- a/pkgs/tools/audio/picotts/default.nix
+++ b/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/pkgs/tools/audio/piper/default.nix b/pkgs/tools/audio/piper/default.nix
index ec55b78c4f8b7..1f565b7475292 100644
--- a/pkgs/tools/audio/piper/default.nix
+++ b/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/pkgs/tools/audio/pnmixer/default.nix b/pkgs/tools/audio/pnmixer/default.nix
index da4654a3e5fcd..a65cad09b47dc 100644
--- a/pkgs/tools/audio/pnmixer/default.nix
+++ b/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/pkgs/tools/audio/pw-volume/default.nix b/pkgs/tools/audio/pw-volume/default.nix
index 1a7b6c21a5025..13e39484b5773 100644
--- a/pkgs/tools/audio/pw-volume/default.nix
+++ b/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/pkgs/tools/audio/stt/default.nix b/pkgs/tools/audio/stt/default.nix
index 9f3fcf05b5fad..89ed5f983973f 100644
--- a/pkgs/tools/audio/stt/default.nix
+++ b/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/pkgs/tools/audio/tidal-dl/default.nix b/pkgs/tools/audio/tidal-dl/default.nix
index 2e8ba35e8ce43..eb23a4da3ccd9 100644
--- a/pkgs/tools/audio/tidal-dl/default.nix
+++ b/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/pkgs/tools/audio/unflac/default.nix b/pkgs/tools/audio/unflac/default.nix
index 9fc44469fec9b..41068d4797064 100644
--- a/pkgs/tools/audio/unflac/default.nix
+++ b/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/pkgs/tools/audio/video2midi/default.nix b/pkgs/tools/audio/video2midi/default.nix
index 2c2ea77de6e7d..3d8661da3cabe 100644
--- a/pkgs/tools/audio/video2midi/default.nix
+++ b/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/pkgs/tools/audio/volctl/default.nix b/pkgs/tools/audio/volctl/default.nix
index e0a80f90a7191..0d33c586ed375 100644
--- a/pkgs/tools/audio/volctl/default.nix
+++ b/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/pkgs/tools/audio/volumeicon/default.nix b/pkgs/tools/audio/volumeicon/default.nix
index 00690d016329c..cabd145cc6e0e 100644
--- a/pkgs/tools/audio/volumeicon/default.nix
+++ b/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/pkgs/tools/audio/whisper-ctranslate2/default.nix b/pkgs/tools/audio/whisper-ctranslate2/default.nix
index dd928ab3e418e..452af0a18b402 100644
--- a/pkgs/tools/audio/whisper-ctranslate2/default.nix
+++ b/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/pkgs/tools/audio/yabridgectl/default.nix b/pkgs/tools/audio/yabridgectl/default.nix
index 06bca00fc5b0f..41d32cd282a50 100644
--- a/pkgs/tools/audio/yabridgectl/default.nix
+++ b/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/pkgs/tools/filesystems/dupe-krill/default.nix b/pkgs/tools/filesystems/dupe-krill/default.nix
index d825c1b0fb09c..ee81db5c8707a 100644
--- a/pkgs/tools/filesystems/dupe-krill/default.nix
+++ b/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/pkgs/tools/filesystems/dysk/default.nix b/pkgs/tools/filesystems/dysk/default.nix
index 7ab7d544ab085..2dc4698f81729 100644
--- a/pkgs/tools/filesystems/dysk/default.nix
+++ b/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/pkgs/tools/filesystems/eiciel/default.nix b/pkgs/tools/filesystems/eiciel/default.nix
index dff1700d73fc2..a3f7378c205ce 100644
--- a/pkgs/tools/filesystems/eiciel/default.nix
+++ b/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/pkgs/tools/filesystems/ext4magic/default.nix b/pkgs/tools/filesystems/ext4magic/default.nix
index ed9fa6df969b1..bb23f58c38c61 100644
--- a/pkgs/tools/filesystems/ext4magic/default.nix
+++ b/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/pkgs/tools/filesystems/extundelete/default.nix b/pkgs/tools/filesystems/extundelete/default.nix
index 276f6139b794a..0c3062fb11cac 100644
--- a/pkgs/tools/filesystems/extundelete/default.nix
+++ b/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/pkgs/tools/filesystems/fatresize/default.nix b/pkgs/tools/filesystems/fatresize/default.nix
index 8f258a79f7dea..80f7e5ecd4ae9 100644
--- a/pkgs/tools/filesystems/fatresize/default.nix
+++ b/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/pkgs/tools/filesystems/fatsort/default.nix b/pkgs/tools/filesystems/fatsort/default.nix
index ef7111dd72ff0..d1604e49a32e0 100644
--- a/pkgs/tools/filesystems/fatsort/default.nix
+++ b/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/pkgs/tools/filesystems/file-rename/default.nix b/pkgs/tools/filesystems/file-rename/default.nix
index 133f446f8a98f..8bc7a899cd3ba 100644
--- a/pkgs/tools/filesystems/file-rename/default.nix
+++ b/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/pkgs/tools/filesystems/fuse-7z-ng/default.nix b/pkgs/tools/filesystems/fuse-7z-ng/default.nix
index dad5d2dd9e6c0..86db1f4872a4a 100644
--- a/pkgs/tools/filesystems/fuse-7z-ng/default.nix
+++ b/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/pkgs/tools/filesystems/fuse-archive/default.nix b/pkgs/tools/filesystems/fuse-archive/default.nix
index 031232acbe38d..58f48a2644983 100644
--- a/pkgs/tools/filesystems/fuse-archive/default.nix
+++ b/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/pkgs/tools/filesystems/fuse-overlayfs/default.nix b/pkgs/tools/filesystems/fuse-overlayfs/default.nix
index b417c9654292c..6afbda9f27cde 100644
--- a/pkgs/tools/filesystems/fuse-overlayfs/default.nix
+++ b/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/pkgs/tools/filesystems/fuseiso/default.nix b/pkgs/tools/filesystems/fuseiso/default.nix
index 7e44e7c15f9cb..b731e9c7cc962 100644
--- a/pkgs/tools/filesystems/fuseiso/default.nix
+++ b/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/pkgs/tools/filesystems/fwanalyzer/default.nix b/pkgs/tools/filesystems/fwanalyzer/default.nix
index a0b1d2df14356..26fd45fa90eaa 100644
--- a/pkgs/tools/filesystems/fwanalyzer/default.nix
+++ b/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/pkgs/tools/filesystems/garage/default.nix b/pkgs/tools/filesystems/garage/default.nix
index fe72905d0fbea..894840d2dd04f 100644
--- a/pkgs/tools/filesystems/garage/default.nix
+++ b/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/pkgs/tools/filesystems/genext2fs/default.nix b/pkgs/tools/filesystems/genext2fs/default.nix
index ecd77781d39b6..b640c99dc82f0 100644
--- a/pkgs/tools/filesystems/genext2fs/default.nix
+++ b/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/pkgs/tools/filesystems/genimage/default.nix b/pkgs/tools/filesystems/genimage/default.nix
index 0961ad904f3ff..ab93f4233d8fc 100644
--- a/pkgs/tools/filesystems/genimage/default.nix
+++ b/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/pkgs/tools/filesystems/genromfs/default.nix b/pkgs/tools/filesystems/genromfs/default.nix
index 3427ce54a1721..6c40c4ad94cd6 100644
--- a/pkgs/tools/filesystems/genromfs/default.nix
+++ b/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/pkgs/tools/filesystems/gitfs/default.nix b/pkgs/tools/filesystems/gitfs/default.nix
index f49f555983f30..c5e388fc5ffbc 100644
--- a/pkgs/tools/filesystems/gitfs/default.nix
+++ b/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/pkgs/tools/filesystems/go-mtpfs/default.nix b/pkgs/tools/filesystems/go-mtpfs/default.nix
index f82e5b7c362a7..f3ed4fb6ab98a 100644
--- a/pkgs/tools/filesystems/go-mtpfs/default.nix
+++ b/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/pkgs/tools/filesystems/goofys/default.nix b/pkgs/tools/filesystems/goofys/default.nix
index 0c250eaeb4f42..30c78ad31993c 100644
--- a/pkgs/tools/filesystems/goofys/default.nix
+++ b/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/pkgs/tools/filesystems/gpart/default.nix b/pkgs/tools/filesystems/gpart/default.nix
index eafbe066ac94e..a8466d3462e8f 100644
--- a/pkgs/tools/filesystems/gpart/default.nix
+++ b/pkgs/tools/filesystems/gpart/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     '';
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
+    mainProgram = "gpart";
   };
 }
diff --git a/pkgs/tools/filesystems/grive2/default.nix b/pkgs/tools/filesystems/grive2/default.nix
index d5a19f42f3f03..41afc98e7f94e 100644
--- a/pkgs/tools/filesystems/grive2/default.nix
+++ b/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/pkgs/tools/filesystems/httm/default.nix b/pkgs/tools/filesystems/httm/default.nix
index 31ea85532462d..3a36af72462e7 100644
--- a/pkgs/tools/filesystems/httm/default.nix
+++ b/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/pkgs/tools/filesystems/httpdirfs/default.nix b/pkgs/tools/filesystems/httpdirfs/default.nix
index e027d5dd8df52..6163e1a0158ab 100644
--- a/pkgs/tools/filesystems/httpdirfs/default.nix
+++ b/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/pkgs/tools/filesystems/ifuse/default.nix b/pkgs/tools/filesystems/ifuse/default.nix
index 010aeaefabf3b..8f2e1f2a6ffb0 100644
--- a/pkgs/tools/filesystems/ifuse/default.nix
+++ b/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/pkgs/tools/filesystems/ioztat/default.nix b/pkgs/tools/filesystems/ioztat/default.nix
index b28f0a36661be..b5f949ad4f2c7 100644
--- a/pkgs/tools/filesystems/ioztat/default.nix
+++ b/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/pkgs/tools/filesystems/jefferson/default.nix b/pkgs/tools/filesystems/jefferson/default.nix
index 762541f8d27a6..948de453ec187 100644
--- a/pkgs/tools/filesystems/jefferson/default.nix
+++ b/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/pkgs/tools/filesystems/jmtpfs/default.nix b/pkgs/tools/filesystems/jmtpfs/default.nix
index 2754d223a6baa..6c5dd3d30c705 100644
--- a/pkgs/tools/filesystems/jmtpfs/default.nix
+++ b/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/pkgs/tools/filesystems/kdiskmark/default.nix b/pkgs/tools/filesystems/kdiskmark/default.nix
index 6712b96f7fdd0..200705098409b 100644
--- a/pkgs/tools/filesystems/kdiskmark/default.nix
+++ b/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/pkgs/tools/filesystems/mhddfs/default.nix b/pkgs/tools/filesystems/mhddfs/default.nix
index 2cc6f69bb0bab..58986c25dbf27 100644
--- a/pkgs/tools/filesystems/mhddfs/default.nix
+++ b/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/pkgs/tools/filesystems/mkspiffs/default.nix b/pkgs/tools/filesystems/mkspiffs/default.nix
index 30312ec7dc7bf..2b0e2cdadb379 100644
--- a/pkgs/tools/filesystems/mkspiffs/default.nix
+++ b/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/pkgs/tools/filesystems/mount-zip/default.nix b/pkgs/tools/filesystems/mount-zip/default.nix
index 74d9b1d370b8e..c3fea94f42f58 100644
--- a/pkgs/tools/filesystems/mount-zip/default.nix
+++ b/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/pkgs/tools/filesystems/mp3fs/default.nix b/pkgs/tools/filesystems/mp3fs/default.nix
index 6f872500e6b13..0412a99beee0e 100644
--- a/pkgs/tools/filesystems/mp3fs/default.nix
+++ b/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/pkgs/tools/filesystems/mtpfs/default.nix b/pkgs/tools/filesystems/mtpfs/default.nix
index 0a6623bfdc4af..d84f9cc9b9b13 100644
--- a/pkgs/tools/filesystems/mtpfs/default.nix
+++ b/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/pkgs/tools/filesystems/rdfind/default.nix b/pkgs/tools/filesystems/rdfind/default.nix
index c363ee5613745..59724c0c7c523 100644
--- a/pkgs/tools/filesystems/rdfind/default.nix
+++ b/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/pkgs/tools/filesystems/rmfuse/default.nix b/pkgs/tools/filesystems/rmfuse/default.nix
index ace05d0616652..5d3a6a340dbb0 100644
--- a/pkgs/tools/filesystems/rmfuse/default.nix
+++ b/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/pkgs/tools/filesystems/rmount/default.nix b/pkgs/tools/filesystems/rmount/default.nix
index 1d8ced17aae05..ec4bb13927122 100644
--- a/pkgs/tools/filesystems/rmount/default.nix
+++ b/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/pkgs/tools/filesystems/rnm/default.nix b/pkgs/tools/filesystems/rnm/default.nix
index 69ba0270ecc0c..479feabb8ebc5 100644
--- a/pkgs/tools/filesystems/rnm/default.nix
+++ b/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/pkgs/tools/filesystems/romdirfs/default.nix b/pkgs/tools/filesystems/romdirfs/default.nix
index 0304508d41ebc..cc711e57cdb69 100644
--- a/pkgs/tools/filesystems/romdirfs/default.nix
+++ b/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/pkgs/tools/filesystems/s3backer/default.nix b/pkgs/tools/filesystems/s3backer/default.nix
index bfe9f22747568..3585408a2f7d0 100644
--- a/pkgs/tools/filesystems/s3backer/default.nix
+++ b/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/pkgs/tools/filesystems/sandboxfs/default.nix b/pkgs/tools/filesystems/sandboxfs/default.nix
index bafa39272727a..76eb667bceaa0 100644
--- a/pkgs/tools/filesystems/sandboxfs/default.nix
+++ b/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/pkgs/tools/filesystems/sasquatch/default.nix b/pkgs/tools/filesystems/sasquatch/default.nix
index 258814b8905b4..f8d66683fccbf 100644
--- a/pkgs/tools/filesystems/sasquatch/default.nix
+++ b/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/pkgs/tools/filesystems/sdat2img/default.nix b/pkgs/tools/filesystems/sdat2img/default.nix
index 4176eabad4014..93493356eb512 100644
--- a/pkgs/tools/filesystems/sdat2img/default.nix
+++ b/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/pkgs/tools/filesystems/securefs/default.nix b/pkgs/tools/filesystems/securefs/default.nix
index 791c01d8eed81..fe148e955cb2a 100644
--- a/pkgs/tools/filesystems/securefs/default.nix
+++ b/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/pkgs/tools/filesystems/sftpman/default.nix b/pkgs/tools/filesystems/sftpman/default.nix
index 267b2b649c302..579c03992ddef 100644
--- a/pkgs/tools/filesystems/sftpman/default.nix
+++ b/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/pkgs/tools/filesystems/simple-mtpfs/default.nix b/pkgs/tools/filesystems/simple-mtpfs/default.nix
index 3cb2aa97007b9..994b785c444e4 100644
--- a/pkgs/tools/filesystems/simple-mtpfs/default.nix
+++ b/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/pkgs/tools/filesystems/smbnetfs/default.nix b/pkgs/tools/filesystems/smbnetfs/default.nix
index a1831d44ada4c..120b30cbb1d1d 100644
--- a/pkgs/tools/filesystems/smbnetfs/default.nix
+++ b/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/pkgs/tools/filesystems/snapraid/default.nix b/pkgs/tools/filesystems/snapraid/default.nix
index d945a4a400942..3afabf8cd6435 100644
--- a/pkgs/tools/filesystems/snapraid/default.nix
+++ b/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/pkgs/tools/filesystems/stratis-cli/default.nix b/pkgs/tools/filesystems/stratis-cli/default.nix
index e927f2daf256c..3a1838ef303eb 100644
--- a/pkgs/tools/filesystems/stratis-cli/default.nix
+++ b/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/pkgs/tools/filesystems/svnfs/default.nix b/pkgs/tools/filesystems/svnfs/default.nix
index e892d89dc3b30..8aa66de8da3fd 100644
--- a/pkgs/tools/filesystems/svnfs/default.nix
+++ b/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/pkgs/tools/filesystems/tar2ext4/default.nix b/pkgs/tools/filesystems/tar2ext4/default.nix
index 2168bc1aa3122..2d5a5f2ef9ff0 100644
--- a/pkgs/tools/filesystems/tar2ext4/default.nix
+++ b/pkgs/tools/filesystems/tar2ext4/default.nix
@@ -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/pkgs/tools/filesystems/u3-tool/default.nix b/pkgs/tools/filesystems/u3-tool/default.nix
index 6abab83b0fd0a..e666c893b7986 100644
--- a/pkgs/tools/filesystems/u3-tool/default.nix
+++ b/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/pkgs/tools/filesystems/ubidump/default.nix b/pkgs/tools/filesystems/ubidump/default.nix
index 623cef8844760..c038042b6871b 100644
--- a/pkgs/tools/filesystems/ubidump/default.nix
+++ b/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/pkgs/tools/filesystems/wdfs/default.nix b/pkgs/tools/filesystems/wdfs/default.nix
index 29d8b4c2887b5..3f8897c091bc8 100644
--- a/pkgs/tools/filesystems/wdfs/default.nix
+++ b/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/pkgs/tools/filesystems/wipefreespace/default.nix b/pkgs/tools/filesystems/wipefreespace/default.nix
index f9d586d91d68b..bf2ddb391c86e 100644
--- a/pkgs/tools/filesystems/wipefreespace/default.nix
+++ b/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/pkgs/tools/filesystems/yandex-disk/default.nix b/pkgs/tools/filesystems/yandex-disk/default.nix
index 109781f612a26..94907ee4fd2fd 100644
--- a/pkgs/tools/filesystems/yandex-disk/default.nix
+++ b/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/pkgs/tools/filesystems/zerofree/default.nix b/pkgs/tools/filesystems/zerofree/default.nix
index 1447ca36a1364..d44e92a33c46d 100644
--- a/pkgs/tools/filesystems/zerofree/default.nix
+++ b/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/pkgs/tools/filesystems/zkfuse/default.nix b/pkgs/tools/filesystems/zkfuse/default.nix
index 320ccde4cc539..00d78af0146fd 100644
--- a/pkgs/tools/filesystems/zkfuse/default.nix
+++ b/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/pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix b/pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix
index 9af487b59c4e1..8fced13e93db4 100644
--- a/pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix
+++ b/pkgs/tools/filesystems/zpool-auto-expand-partitions/default.nix
@@ -46,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/pkgs/tools/filesystems/zpool-iostat-viz/default.nix b/pkgs/tools/filesystems/zpool-iostat-viz/default.nix
index a9e4dfe8ab744..4f546e544e66c 100644
--- a/pkgs/tools/filesystems/zpool-iostat-viz/default.nix
+++ b/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/pkgs/tools/virtualization/alpine-make-vm-image/default.nix b/pkgs/tools/virtualization/alpine-make-vm-image/default.nix
index 95cfaea90e43c..c06efa3617f0e 100644
--- a/pkgs/tools/virtualization/alpine-make-vm-image/default.nix
+++ b/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/pkgs/tools/virtualization/amazon-ecs-cli/default.nix b/pkgs/tools/virtualization/amazon-ecs-cli/default.nix
index fa74aa26cec39..16b43012e2600 100644
--- a/pkgs/tools/virtualization/amazon-ecs-cli/default.nix
+++ b/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/pkgs/tools/virtualization/distrobuilder/default.nix b/pkgs/tools/virtualization/distrobuilder/default.nix
index 3619d2f25a14b..a1a0cfde0fe73 100644
--- a/pkgs/tools/virtualization/distrobuilder/default.nix
+++ b/pkgs/tools/virtualization/distrobuilder/default.nix
@@ -69,5 +69,6 @@ buildGoModule rec {
     license = licenses.asl20;
     maintainers = with maintainers; [ megheaiulian ];
     platforms = platforms.linux;
+    mainProgram = "distrobuilder";
   };
 }
diff --git a/pkgs/tools/virtualization/extra-container/default.nix b/pkgs/tools/virtualization/extra-container/default.nix
index 894622d74eb0c..71ba276f4bd42 100644
--- a/pkgs/tools/virtualization/extra-container/default.nix
+++ b/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/pkgs/tools/virtualization/govc/default.nix b/pkgs/tools/virtualization/govc/default.nix
index a2c37dfb679eb..18d5a83a591d4 100644
--- a/pkgs/tools/virtualization/govc/default.nix
+++ b/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/pkgs/tools/virtualization/jumppad/default.nix b/pkgs/tools/virtualization/jumppad/default.nix
index 174fe292f4592..c10b6887aeecc 100644
--- a/pkgs/tools/virtualization/jumppad/default.nix
+++ b/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/pkgs/tools/virtualization/kubevirt/default.nix b/pkgs/tools/virtualization/kubevirt/default.nix
index a9e49cc75c347..67027dc4bd284 100644
--- a/pkgs/tools/virtualization/kubevirt/default.nix
+++ b/pkgs/tools/virtualization/kubevirt/default.nix
@@ -49,5 +49,6 @@ buildGoModule rec {
     homepage = "https://kubevirt.io/";
     license = licenses.asl20;
     maintainers = with maintainers; [ haslersn ];
+    mainProgram = "virtctl";
   };
 }
diff --git a/pkgs/tools/virtualization/lxd-image-server/default.nix b/pkgs/tools/virtualization/lxd-image-server/default.nix
index aeb6ac336932c..43f46a8a72fcd 100644
--- a/pkgs/tools/virtualization/lxd-image-server/default.nix
+++ b/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/pkgs/tools/virtualization/marathonctl/default.nix b/pkgs/tools/virtualization/marathonctl/default.nix
index e8f27e00d851c..85576b4f66402 100644
--- a/pkgs/tools/virtualization/marathonctl/default.nix
+++ b/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/pkgs/tools/virtualization/mininet/default.nix b/pkgs/tools/virtualization/mininet/default.nix
index ccc79d36c8f62..7372d51a62fa3 100644
--- a/pkgs/tools/virtualization/mininet/default.nix
+++ b/pkgs/tools/virtualization/mininet/default.nix
@@ -47,5 +47,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     homepage = "https://github.com/mininet/mininet";
     maintainers = with maintainers; [ teto ];
+    mainProgram = "mnexec";
   };
 }
diff --git a/pkgs/tools/virtualization/nixos-shell/default.nix b/pkgs/tools/virtualization/nixos-shell/default.nix
index 59225a5162e38..6f7340835523f 100644
--- a/pkgs/tools/virtualization/nixos-shell/default.nix
+++ b/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/pkgs/tools/virtualization/onmetal-image/default.nix b/pkgs/tools/virtualization/onmetal-image/default.nix
index 7e324fc03cc35..2b535dfb6d938 100644
--- a/pkgs/tools/virtualization/onmetal-image/default.nix
+++ b/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/pkgs/tools/virtualization/ovftool/default.nix b/pkgs/tools/virtualization/ovftool/default.nix
index 5cc8fb01b41b3..9bdf4429ff165 100644
--- a/pkgs/tools/virtualization/ovftool/default.nix
+++ b/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/pkgs/tools/virtualization/reg/default.nix b/pkgs/tools/virtualization/reg/default.nix
index 84aecc3ff671d..545b208035b3c 100644
--- a/pkgs/tools/virtualization/reg/default.nix
+++ b/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/pkgs/tools/virtualization/supermin/default.nix b/pkgs/tools/virtualization/supermin/default.nix
index b970b66a8f64b..b7600f6bb898f 100644
--- a/pkgs/tools/virtualization/supermin/default.nix
+++ b/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/pkgs/tools/virtualization/udocker/default.nix b/pkgs/tools/virtualization/udocker/default.nix
index 4fbccf813f2f3..e13376211a895 100644
--- a/pkgs/tools/virtualization/udocker/default.nix
+++ b/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/pkgs/tools/virtualization/uefi-run/default.nix b/pkgs/tools/virtualization/uefi-run/default.nix
index 9486995538ce5..9d954d9ed03d8 100644
--- a/pkgs/tools/virtualization/uefi-run/default.nix
+++ b/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/pkgs/tools/virtualization/vpsfree-client/default.nix b/pkgs/tools/virtualization/vpsfree-client/default.nix
index 749f6820320bf..cffdc267e53c1 100644
--- a/pkgs/tools/virtualization/vpsfree-client/default.nix
+++ b/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/pkgs/tools/virtualization/xva-img/default.nix b/pkgs/tools/virtualization/xva-img/default.nix
index e4f75c8ad3ca4..bb5c9d5a59929 100644
--- a/pkgs/tools/virtualization/xva-img/default.nix
+++ b/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";
   };
 }