about summary refs log tree commit diff
path: root/pkgs/applications/misc
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/misc')
-rw-r--r--pkgs/applications/misc/9menu/default.nix1
-rw-r--r--pkgs/applications/misc/OSCAR/default.nix1
-rw-r--r--pkgs/applications/misc/ablog/default.nix1
-rw-r--r--pkgs/applications/misc/acpic/default.nix1
-rw-r--r--pkgs/applications/misc/aitrack/default.nix1
-rw-r--r--pkgs/applications/misc/almanah/default.nix1
-rw-r--r--pkgs/applications/misc/antfs-cli/default.nix1
-rw-r--r--pkgs/applications/misc/apvlv/default.nix1
-rw-r--r--pkgs/applications/misc/asciiquarium/default.nix1
-rw-r--r--pkgs/applications/misc/audio/wavrsocvt/default.nix1
-rw-r--r--pkgs/applications/misc/authenticator/default.nix1
-rw-r--r--pkgs/applications/misc/auto-multiple-choice/default.nix1
-rw-r--r--pkgs/applications/misc/avell-unofficial-control-center/default.nix1
-rw-r--r--pkgs/applications/misc/bfcal/default.nix1
-rw-r--r--pkgs/applications/misc/bibletime/default.nix1
-rw-r--r--pkgs/applications/misc/bikeshed/default.nix1
-rw-r--r--pkgs/applications/misc/binocle/default.nix1
-rw-r--r--pkgs/applications/misc/birdtray/default.nix1
-rw-r--r--pkgs/applications/misc/bitwarden-menu/default.nix1
-rw-r--r--pkgs/applications/misc/blucontrol/wrapper.nix1
-rw-r--r--pkgs/applications/misc/bluetooth_battery/default.nix1
-rw-r--r--pkgs/applications/misc/break-time/default.nix1
-rw-r--r--pkgs/applications/misc/brewtarget/default.nix1
-rw-r--r--pkgs/applications/misc/buku/default.nix1
-rw-r--r--pkgs/applications/misc/caerbannog/default.nix1
-rw-r--r--pkgs/applications/misc/calcure/default.nix1
-rw-r--r--pkgs/applications/misc/cambrinary/default.nix1
-rw-r--r--pkgs/applications/misc/candle/default.nix1
-rw-r--r--pkgs/applications/misc/cartridges/default.nix1
-rw-r--r--pkgs/applications/misc/cask-server/default.nix1
-rw-r--r--pkgs/applications/misc/cbatticon/default.nix1
-rw-r--r--pkgs/applications/misc/chatblade/default.nix1
-rw-r--r--pkgs/applications/misc/cherrytree/default.nix1
-rw-r--r--pkgs/applications/misc/chewing-editor/default.nix1
-rw-r--r--pkgs/applications/misc/clight/clightd.nix1
-rw-r--r--pkgs/applications/misc/confclerk/default.nix1
-rw-r--r--pkgs/applications/misc/coolreader/default.nix1
-rw-r--r--pkgs/applications/misc/coursera-dl/default.nix1
-rw-r--r--pkgs/applications/misc/cubiomes-viewer/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/coreaction/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corearchiver/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corefm/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/coregarage/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corehunt/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/coreimage/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/coreinfo/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corekeyboard/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corepad/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corepaint/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corepdf/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corepins/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corerenamer/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/coreshot/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corestats/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/corestuff/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/coreterminal/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/coretime/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/coretoppings/default.nix1
-rw-r--r--pkgs/applications/misc/cubocore-packages/coreuniverse/default.nix1
-rw-r--r--pkgs/applications/misc/cum/default.nix1
-rw-r--r--pkgs/applications/misc/cura/default.nix1
-rw-r--r--pkgs/applications/misc/curaengine/stable.nix1
-rw-r--r--pkgs/applications/misc/ddcui/default.nix1
-rw-r--r--pkgs/applications/misc/deckmaster/default.nix1
-rw-r--r--pkgs/applications/misc/dict-cc-py/default.nix1
-rw-r--r--pkgs/applications/misc/diffpdf/default.nix1
-rw-r--r--pkgs/applications/misc/diffuse/default.nix1
-rw-r--r--pkgs/applications/misc/ding/default.nix1
-rw-r--r--pkgs/applications/misc/dmensamenu/default.nix1
-rw-r--r--pkgs/applications/misc/dnd-tools/default.nix1
-rw-r--r--pkgs/applications/misc/dotfiles/default.nix1
-rw-r--r--pkgs/applications/misc/electron-cash/default.nix1
-rw-r--r--pkgs/applications/misc/electrum/grs.nix1
-rw-r--r--pkgs/applications/misc/electrum/ltc.nix1
-rw-r--r--pkgs/applications/misc/epr/default.nix1
-rw-r--r--pkgs/applications/misc/etesync-dav/default.nix1
-rw-r--r--pkgs/applications/misc/evtest-qt/default.nix1
-rw-r--r--pkgs/applications/misc/extract_url/default.nix1
-rw-r--r--pkgs/applications/misc/faircamp/default.nix1
-rw-r--r--pkgs/applications/misc/fbmenugen/default.nix1
-rw-r--r--pkgs/applications/misc/fff/default.nix1
-rw-r--r--pkgs/applications/misc/flowtime/default.nix1
-rw-r--r--pkgs/applications/misc/fluxboxlauncher/default.nix1
-rw-r--r--pkgs/applications/misc/font-manager/default.nix1
-rw-r--r--pkgs/applications/misc/freemind/default.nix1
-rw-r--r--pkgs/applications/misc/furtherance/default.nix1
-rw-r--r--pkgs/applications/misc/fusee-interfacee-tk/default.nix1
-rw-r--r--pkgs/applications/misc/gImageReader/default.nix1
-rw-r--r--pkgs/applications/misc/gcalcli/default.nix1
-rw-r--r--pkgs/applications/misc/gcstar/default.nix1
-rw-r--r--pkgs/applications/misc/get_iplayer/default.nix1
-rw-r--r--pkgs/applications/misc/glava/default.nix1
-rw-r--r--pkgs/applications/misc/gmtp/default.nix1
-rw-r--r--pkgs/applications/misc/gnome-firmware/default.nix1
-rw-r--r--pkgs/applications/misc/gnome-multi-writer/default.nix1
-rw-r--r--pkgs/applications/misc/gnome-recipes/default.nix1
-rw-r--r--pkgs/applications/misc/gnome-usage/default.nix1
-rw-r--r--pkgs/applications/misc/golden-cheetah/default.nix1
-rw-r--r--pkgs/applications/misc/gphoto2/gphotofs.nix1
-rw-r--r--pkgs/applications/misc/gpx-viewer/default.nix1
-rw-r--r--pkgs/applications/misc/gpxlab/default.nix1
-rw-r--r--pkgs/applications/misc/gpxsee/default.nix1
-rw-r--r--pkgs/applications/misc/gramps/default.nix1
-rw-r--r--pkgs/applications/misc/gummi/default.nix1
-rw-r--r--pkgs/applications/misc/hamster/default.nix1
-rw-r--r--pkgs/applications/misc/heimer/default.nix1
-rw-r--r--pkgs/applications/misc/hollywood/default.nix1
-rw-r--r--pkgs/applications/misc/hovercraft/default.nix1
-rw-r--r--pkgs/applications/misc/html5validator/default.nix1
-rw-r--r--pkgs/applications/misc/huggle/default.nix1
-rw-r--r--pkgs/applications/misc/imaginer/default.nix1
-rw-r--r--pkgs/applications/misc/inkcut/default.nix1
-rw-r--r--pkgs/applications/misc/johnny/default.nix1
-rw-r--r--pkgs/applications/misc/joplin-desktop/default.nix1
-rw-r--r--pkgs/applications/misc/k4dirstat/default.nix1
-rw-r--r--pkgs/applications/misc/kanjidraw/default.nix1
-rw-r--r--pkgs/applications/misc/kapow/default.nix1
-rw-r--r--pkgs/applications/misc/kchmviewer/default.nix1
-rw-r--r--pkgs/applications/misc/keepmenu/default.nix1
-rw-r--r--pkgs/applications/misc/keeweb/default.nix1
-rw-r--r--pkgs/applications/misc/keystore-explorer/default.nix1
-rw-r--r--pkgs/applications/misc/kickoff/default.nix1
-rw-r--r--pkgs/applications/misc/kiwix/default.nix1
-rw-r--r--pkgs/applications/misc/kjv/lukesmithxyz-kjv.nix1
-rw-r--r--pkgs/applications/misc/klayout/default.nix1
-rw-r--r--pkgs/applications/misc/konsave/default.nix1
-rw-r--r--pkgs/applications/misc/koreader/default.nix1
-rw-r--r--pkgs/applications/misc/krename/default.nix1
-rw-r--r--pkgs/applications/misc/ksmoothdock/default.nix1
-rw-r--r--pkgs/applications/misc/latte-dock/default.nix1
-rw-r--r--pkgs/applications/misc/loxodo/default.nix1
-rw-r--r--pkgs/applications/misc/maliit-framework/default.nix1
-rw-r--r--pkgs/applications/misc/maliit-keyboard/default.nix1
-rw-r--r--pkgs/applications/misc/mbutil/default.nix1
-rw-r--r--pkgs/applications/misc/mediaelch/default.nix1
-rw-r--r--pkgs/applications/misc/meerk40t/default.nix1
-rw-r--r--pkgs/applications/misc/menumaker/default.nix1
-rw-r--r--pkgs/applications/misc/metadata-cleaner/default.nix1
-rw-r--r--pkgs/applications/misc/michabo/default.nix1
-rw-r--r--pkgs/applications/misc/mnamer/default.nix1
-rw-r--r--pkgs/applications/misc/mob/default.nix1
-rw-r--r--pkgs/applications/misc/mozphab/default.nix1
-rw-r--r--pkgs/applications/misc/mpvc/default.nix1
-rw-r--r--pkgs/applications/misc/mwic/default.nix1
-rw-r--r--pkgs/applications/misc/nerd-font-patcher/default.nix1
-rw-r--r--pkgs/applications/misc/notify-osd-customizable/default.nix1
-rw-r--r--pkgs/applications/misc/notify-osd/default.nix1
-rw-r--r--pkgs/applications/misc/notifymuch/default.nix1
-rw-r--r--pkgs/applications/misc/numberstation/default.nix1
-rw-r--r--pkgs/applications/misc/nwg-bar/default.nix1
-rw-r--r--pkgs/applications/misc/nwg-dock-hyprland/default.nix1
-rw-r--r--pkgs/applications/misc/nwg-menu/default.nix1
-rw-r--r--pkgs/applications/misc/nwg-wrapper/default.nix1
-rw-r--r--pkgs/applications/misc/octoprint/default.nix1
-rw-r--r--pkgs/applications/misc/omegat.nix1
-rw-r--r--pkgs/applications/misc/openbangla-keyboard/default.nix1
-rw-r--r--pkgs/applications/misc/openbrf/default.nix1
-rw-r--r--pkgs/applications/misc/opentrack/default.nix1
-rw-r--r--pkgs/applications/misc/orca/default.nix1
-rw-r--r--pkgs/applications/misc/overmind/default.nix1
-rw-r--r--pkgs/applications/misc/oversteer/default.nix1
-rw-r--r--pkgs/applications/misc/pairdrop/default.nix1
-rw-r--r--pkgs/applications/misc/pdf-quench/default.nix1
-rw-r--r--pkgs/applications/misc/pdfarranger/default.nix1
-rw-r--r--pkgs/applications/misc/pdfpc/default.nix1
-rw-r--r--pkgs/applications/misc/pdfposter/default.nix1
-rw-r--r--pkgs/applications/misc/pdfsam-basic/default.nix1
-rw-r--r--pkgs/applications/misc/pe-bear/default.nix1
-rw-r--r--pkgs/applications/misc/phoc/default.nix1
-rw-r--r--pkgs/applications/misc/pipr/default.nix1
-rw-r--r--pkgs/applications/misc/plank/default.nix1
-rw-r--r--pkgs/applications/misc/plots/default.nix1
-rw-r--r--pkgs/applications/misc/polar-bookshelf/default.nix1
-rw-r--r--pkgs/applications/misc/polar-bookshelf1/default.nix1
-rw-r--r--pkgs/applications/misc/pot/default.nix1
-rw-r--r--pkgs/applications/misc/projectlibre/default.nix1
-rw-r--r--pkgs/applications/misc/ptask/default.nix1
-rw-r--r--pkgs/applications/misc/pure-maps/default.nix1
-rw-r--r--pkgs/applications/misc/pytrainer/default.nix1
-rw-r--r--pkgs/applications/misc/qMasterPassword/default.nix1
-rw-r--r--pkgs/applications/misc/qelectrotech/default.nix1
-rw-r--r--pkgs/applications/misc/qolibri/default.nix1
-rw-r--r--pkgs/applications/misc/qsudo/default.nix1
-rw-r--r--pkgs/applications/misc/qt-box-editor/default.nix1
-rw-r--r--pkgs/applications/misc/qt-video-wlr/default.nix1
-rw-r--r--pkgs/applications/misc/qtbitcointrader/default.nix1
-rw-r--r--pkgs/applications/misc/qtpass/default.nix1
-rw-r--r--pkgs/applications/misc/raiseorlaunch/default.nix1
-rw-r--r--pkgs/applications/misc/razergenie/default.nix1
-rw-r--r--pkgs/applications/misc/regextester/default.nix1
-rw-r--r--pkgs/applications/misc/remarkable/restream/default.nix1
-rw-r--r--pkgs/applications/misc/remarkable/rmview/default.nix1
-rw-r--r--pkgs/applications/misc/remontoire/default.nix1
-rw-r--r--pkgs/applications/misc/resp-app/default.nix1
-rw-r--r--pkgs/applications/misc/rofi-screenshot/default.nix1
-rw-r--r--pkgs/applications/misc/rofimoji/default.nix1
-rw-r--r--pkgs/applications/misc/rootbar/default.nix1
-rw-r--r--pkgs/applications/misc/rsibreak/default.nix1
-rw-r--r--pkgs/applications/misc/schemes/default.nix1
-rw-r--r--pkgs/applications/misc/scli/default.nix1
-rw-r--r--pkgs/applications/misc/seashells/default.nix1
-rw-r--r--pkgs/applications/misc/selectdefaultapplication/default.nix1
-rw-r--r--pkgs/applications/misc/sent/default.nix1
-rw-r--r--pkgs/applications/misc/serial-studio/default.nix1
-rw-r--r--pkgs/applications/misc/sfwbar/default.nix1
-rw-r--r--pkgs/applications/misc/shell-genie/default.nix1
-rw-r--r--pkgs/applications/misc/shipments/default.nix1
-rw-r--r--pkgs/applications/misc/sigal/default.nix1
-rw-r--r--pkgs/applications/misc/siglo/default.nix1
-rw-r--r--pkgs/applications/misc/sioyek/default.nix1
-rw-r--r--pkgs/applications/misc/skytemple/default.nix1
-rw-r--r--pkgs/applications/misc/sl1-to-photon/default.nix1
-rw-r--r--pkgs/applications/misc/slic3r/default.nix1
-rw-r--r--pkgs/applications/misc/snapper-gui/default.nix1
-rw-r--r--pkgs/applications/misc/sqls/default.nix1
-rw-r--r--pkgs/applications/misc/sticky/default.nix1
-rw-r--r--pkgs/applications/misc/stylish/default.nix1
-rw-r--r--pkgs/applications/misc/subsurface/default.nix1
-rw-r--r--pkgs/applications/misc/sway-launcher-desktop/default.nix1
-rw-r--r--pkgs/applications/misc/system76-keyboard-configurator/default.nix1
-rw-r--r--pkgs/applications/misc/tasknc/default.nix1
-rw-r--r--pkgs/applications/misc/taskopen/default.nix1
-rw-r--r--pkgs/applications/misc/tdrop/default.nix1
-rw-r--r--pkgs/applications/misc/tellico/default.nix1
-rw-r--r--pkgs/applications/misc/termdown/default.nix1
-rw-r--r--pkgs/applications/misc/termpdf.py/default.nix1
-rw-r--r--pkgs/applications/misc/themechanger/default.nix1
-rw-r--r--pkgs/applications/misc/thinking-rock/default.nix1
-rw-r--r--pkgs/applications/misc/tipp10/default.nix1
-rw-r--r--pkgs/applications/misc/tiv/default.nix1
-rw-r--r--pkgs/applications/misc/toot/default.nix1
-rw-r--r--pkgs/applications/misc/topydo/default.nix1
-rw-r--r--pkgs/applications/misc/tpmmanager/default.nix1
-rw-r--r--pkgs/applications/misc/tuhi/default.nix1
-rw-r--r--pkgs/applications/misc/tuir/default.nix1
-rw-r--r--pkgs/applications/misc/twitch-chat-downloader/default.nix1
-rw-r--r--pkgs/applications/misc/tzupdate/default.nix1
-rw-r--r--pkgs/applications/misc/ubpm/default.nix1
-rw-r--r--pkgs/applications/misc/valent/default.nix1
-rw-r--r--pkgs/applications/misc/variety/default.nix1
-rw-r--r--pkgs/applications/misc/vhs/default.nix1
-rw-r--r--pkgs/applications/misc/viking/default.nix1
-rw-r--r--pkgs/applications/misc/vit/default.nix1
-rw-r--r--pkgs/applications/misc/vym/default.nix1
-rw-r--r--pkgs/applications/misc/watchmate/default.nix1
-rw-r--r--pkgs/applications/misc/watershot/default.nix1
-rw-r--r--pkgs/applications/misc/waycorner/default.nix1
-rw-r--r--pkgs/applications/misc/waypaper/default.nix1
-rw-r--r--pkgs/applications/misc/weather/default.nix1
-rw-r--r--pkgs/applications/misc/webfontkitgenerator/default.nix1
-rw-r--r--pkgs/applications/misc/whalebird/default.nix1
-rw-r--r--pkgs/applications/misc/wikicurses/default.nix1
-rw-r--r--pkgs/applications/misc/wordbook/default.nix1
-rw-r--r--pkgs/applications/misc/workrave/default.nix1
-rw-r--r--pkgs/applications/misc/wpm/default.nix1
-rw-r--r--pkgs/applications/misc/xca/default.nix1
-rw-r--r--pkgs/applications/misc/xdgmenumaker/default.nix1
-rw-r--r--pkgs/applications/misc/xfontsel/default.nix1
-rw-r--r--pkgs/applications/misc/xmrig/proxy.nix1
-rw-r--r--pkgs/applications/misc/xneur/default.nix1
-rw-r--r--pkgs/applications/misc/xpad/default.nix1
-rw-r--r--pkgs/applications/misc/xsuspender/default.nix1
-rw-r--r--pkgs/applications/misc/xygrib/default.nix1
-rw-r--r--pkgs/applications/misc/ydict/default.nix1
-rw-r--r--pkgs/applications/misc/yewtube/default.nix1
-rw-r--r--pkgs/applications/misc/yubioath-flutter/default.nix1
-rw-r--r--pkgs/applications/misc/zk-shell/default.nix1
-rw-r--r--pkgs/applications/misc/zscroll/default.nix1
268 files changed, 268 insertions, 0 deletions
diff --git a/pkgs/applications/misc/9menu/default.nix b/pkgs/applications/misc/9menu/default.nix
index 8e6b7b3bcbece..e383a2eb6b6fc 100644
--- a/pkgs/applications/misc/9menu/default.nix
+++ b/pkgs/applications/misc/9menu/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/arnoldrobbins/9menu";
     description = "Simple X11 menu program for running commands";
+    mainProgram = "9menu";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = libX11.meta.platforms;
diff --git a/pkgs/applications/misc/OSCAR/default.nix b/pkgs/applications/misc/OSCAR/default.nix
index 6e20a855acb78..223fff1080e55 100644
--- a/pkgs/applications/misc/OSCAR/default.nix
+++ b/pkgs/applications/misc/OSCAR/default.nix
@@ -39,6 +39,7 @@ mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.sleepfiles.com/OSCAR/";
     description = "Software for reviewing and exploring data produced by CPAP and related machines used in the treatment of sleep apnea";
+    mainProgram = "OSCAR";
     license = licenses.gpl3Only;
     maintainers = [ maintainers.roconnor ];
     # Someone needs to create a suitable installPhase for Darwin and Windows.
diff --git a/pkgs/applications/misc/ablog/default.nix b/pkgs/applications/misc/ablog/default.nix
index a9cc6670e8998..932db21317c66 100644
--- a/pkgs/applications/misc/ablog/default.nix
+++ b/pkgs/applications/misc/ablog/default.nix
@@ -41,6 +41,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "ABlog for blogging with Sphinx";
+    mainProgram = "ablog";
     homepage = "https://ablog.readthedocs.io/en/latest/";
     license = licenses.mit;
     maintainers = with maintainers; [ rgrinberg ];
diff --git a/pkgs/applications/misc/acpic/default.nix b/pkgs/applications/misc/acpic/default.nix
index 7d05f0a05702e..7a53e564c57c5 100644
--- a/pkgs/applications/misc/acpic/default.nix
+++ b/pkgs/applications/misc/acpic/default.nix
@@ -28,6 +28,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Daemon extending acpid event handling capabilities.";
+    mainProgram = "acpic";
     homepage = "https://github.com/psliwka/acpic";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ aacebedo ];
diff --git a/pkgs/applications/misc/aitrack/default.nix b/pkgs/applications/misc/aitrack/default.nix
index 48e0afe13ebd2..b9bb696234877 100644
--- a/pkgs/applications/misc/aitrack/default.nix
+++ b/pkgs/applications/misc/aitrack/default.nix
@@ -44,6 +44,7 @@
 
   meta = with lib; {
     description = "6DoF Head tracking software";
+    mainProgram = "aitrack";
     maintainers = with maintainers; [ ck3d ];
     platforms = platforms.linux;
     license = licenses.mit;
diff --git a/pkgs/applications/misc/almanah/default.nix b/pkgs/applications/misc/almanah/default.nix
index 3b27f5b96e30f..35677f56cccbc 100644
--- a/pkgs/applications/misc/almanah/default.nix
+++ b/pkgs/applications/misc/almanah/default.nix
@@ -93,6 +93,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Small GTK application to allow to keep a diary of your life";
+    mainProgram = "almanah";
     homepage = "https://wiki.gnome.org/Apps/Almanah_Diary";
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/antfs-cli/default.nix b/pkgs/applications/misc/antfs-cli/default.nix
index 516b786222db6..43fcab337a057 100644
--- a/pkgs/applications/misc/antfs-cli/default.nix
+++ b/pkgs/applications/misc/antfs-cli/default.nix
@@ -7,6 +7,7 @@ python3Packages.buildPythonApplication {
   meta = with lib; {
     homepage = "https://github.com/Tigge/antfs-cli";
     description = "Extracts FIT files from ANT-FS based sport watches";
+    mainProgram = "antfs-cli";
     license = licenses.mit;
     platforms = platforms.linux;
   };
diff --git a/pkgs/applications/misc/apvlv/default.nix b/pkgs/applications/misc/apvlv/default.nix
index 78d353ce2a85c..f45fb95aba59a 100644
--- a/pkgs/applications/misc/apvlv/default.nix
+++ b/pkgs/applications/misc/apvlv/default.nix
@@ -61,6 +61,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://naihe2010.github.io/apvlv/";
     description = "PDF viewer with Vim-like behaviour";
+    mainProgram = "apvlv";
     longDescription = ''
       apvlv is a PDF/DJVU/UMD/TXT Viewer Under Linux/WIN32
       with Vim-like behaviour.
diff --git a/pkgs/applications/misc/asciiquarium/default.nix b/pkgs/applications/misc/asciiquarium/default.nix
index a4276dac1d1f3..0ab79bb2134ab 100644
--- a/pkgs/applications/misc/asciiquarium/default.nix
+++ b/pkgs/applications/misc/asciiquarium/default.nix
@@ -22,6 +22,7 @@ in stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Enjoy the mysteries of the sea from the safety of your own terminal!";
+    mainProgram = "asciiquarium";
     homepage = "https://robobunny.com/projects/asciiquarium/html/";
     license = licenses.gpl2;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/audio/wavrsocvt/default.nix b/pkgs/applications/misc/audio/wavrsocvt/default.nix
index c9f97c5602b20..7b805496c2d8c 100644
--- a/pkgs/applications/misc/audio/wavrsocvt/default.nix
+++ b/pkgs/applications/misc/audio/wavrsocvt/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Convert .wav files into sound files for Lego NXT brick";
+    mainProgram = "wavrsocvt";
     longDescription = ''
       wavrsocvt is a command-line utility which can be used from a
       terminal window or script to convert .wav files into sound
diff --git a/pkgs/applications/misc/authenticator/default.nix b/pkgs/applications/misc/authenticator/default.nix
index dac943fee677a..57e8b76207314 100644
--- a/pkgs/applications/misc/authenticator/default.nix
+++ b/pkgs/applications/misc/authenticator/default.nix
@@ -70,6 +70,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Two-factor authentication code generator for GNOME";
+    mainProgram = "authenticator";
     homepage = "https://gitlab.gnome.org/World/Authenticator";
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ austinbutler ];
diff --git a/pkgs/applications/misc/auto-multiple-choice/default.nix b/pkgs/applications/misc/auto-multiple-choice/default.nix
index 43aad6d5be16b..bdd1e6fbb8540 100644
--- a/pkgs/applications/misc/auto-multiple-choice/default.nix
+++ b/pkgs/applications/misc/auto-multiple-choice/default.nix
@@ -144,6 +144,7 @@ stdenv.mkDerivation (finalAttrs: rec {
 
   meta = with lib; {
     description = "Create and manage multiple choice questionnaires with automated marking.";
+    mainProgram = "auto-multiple-choice";
     longDescription = ''
       Create, manage and mark multiple-choice questionnaires.
       auto-multiple-choice features automated or manual formatting with
diff --git a/pkgs/applications/misc/avell-unofficial-control-center/default.nix b/pkgs/applications/misc/avell-unofficial-control-center/default.nix
index 45d4f69075d21..c37d2c42b64f2 100644
--- a/pkgs/applications/misc/avell-unofficial-control-center/default.nix
+++ b/pkgs/applications/misc/avell-unofficial-control-center/default.nix
@@ -20,6 +20,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/rodgomesc/avell-unofficial-control-center";
     description = "Software for controlling RGB keyboard lights on some gaming laptops that use ITE Device(8291) Rev 0.03";
+    mainProgram = "aucc";
     license = licenses.mit;
     maintainers = with maintainers; [ rkitover ];
   };
diff --git a/pkgs/applications/misc/bfcal/default.nix b/pkgs/applications/misc/bfcal/default.nix
index 695f5bc69b0ca..0f801aa2e1304 100644
--- a/pkgs/applications/misc/bfcal/default.nix
+++ b/pkgs/applications/misc/bfcal/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Quickly display a calendar";
+    mainProgram = "bfcal";
     homepage = "https://git.sr.ht/~bitfehler/bfcal";
     license = licenses.gpl3Plus;
     platforms = qtbase.meta.platforms;
diff --git a/pkgs/applications/misc/bibletime/default.nix b/pkgs/applications/misc/bibletime/default.nix
index f5b027a9b2de3..f49477fae234d 100644
--- a/pkgs/applications/misc/bibletime/default.nix
+++ b/pkgs/applications/misc/bibletime/default.nix
@@ -58,6 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     homepage = "http://www.bibletime.info/";
     description = "A powerful cross platform Bible study tool";
+    mainProgram = "bibletime";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/bikeshed/default.nix b/pkgs/applications/misc/bikeshed/default.nix
index f3e58b7787188..21c6ac8c523d3 100644
--- a/pkgs/applications/misc/bikeshed/default.nix
+++ b/pkgs/applications/misc/bikeshed/default.nix
@@ -63,6 +63,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Preprocessor for anyone writing specifications that converts source files into actual specs";
+    mainProgram = "bikeshed";
     longDescription = ''
       Bikeshed is a pre-processor for spec documents, turning a source document
       (containing only the actual spec content, plus several shorthands for linking
diff --git a/pkgs/applications/misc/binocle/default.nix b/pkgs/applications/misc/binocle/default.nix
index 02b1b4c7b5d57..92ccc4112993a 100644
--- a/pkgs/applications/misc/binocle/default.nix
+++ b/pkgs/applications/misc/binocle/default.nix
@@ -42,6 +42,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Graphical tool to visualize binary data";
+    mainProgram = "binocle";
     homepage = "https://github.com/sharkdp/binocle";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/applications/misc/birdtray/default.nix b/pkgs/applications/misc/birdtray/default.nix
index 4865f9f29edae..cbdb165a64847 100644
--- a/pkgs/applications/misc/birdtray/default.nix
+++ b/pkgs/applications/misc/birdtray/default.nix
@@ -31,6 +31,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Mail system tray notification icon for Thunderbird";
+    mainProgram = "birdtray";
     homepage = "https://github.com/gyunaev/birdtray";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ Flakebi ];
diff --git a/pkgs/applications/misc/bitwarden-menu/default.nix b/pkgs/applications/misc/bitwarden-menu/default.nix
index d6c7faab4da52..5e067ac807d94 100644
--- a/pkgs/applications/misc/bitwarden-menu/default.nix
+++ b/pkgs/applications/misc/bitwarden-menu/default.nix
@@ -25,6 +25,7 @@ buildPythonApplication rec {
   meta = with lib; {
     changelog = "https://github.com/firecat53/bitwarden-menu/releases/tag/v${version}";
     description = "Dmenu/Rofi frontend for managing Bitwarden vaults. Uses the Bitwarden CLI tool to interact with the Bitwarden database.";
+    mainProgram = "bwm";
     homepage = "https://github.com/firecat53/bitwarden-menu";
     license = licenses.mit;
     maintainers = [ ];
diff --git a/pkgs/applications/misc/blucontrol/wrapper.nix b/pkgs/applications/misc/blucontrol/wrapper.nix
index c0c76b4ef49d2..3ace71b7644a6 100644
--- a/pkgs/applications/misc/blucontrol/wrapper.nix
+++ b/pkgs/applications/misc/blucontrol/wrapper.nix
@@ -19,6 +19,7 @@ in
 
     meta = with lib; {
       description = "Configurable blue light filter";
+      mainProgram = "blucontrol";
       longDescription = ''
         This application is a blue light filter, with the main focus on configurability.
         Configuration is done in Haskell in the style of xmonad.
diff --git a/pkgs/applications/misc/bluetooth_battery/default.nix b/pkgs/applications/misc/bluetooth_battery/default.nix
index d9c3f5bc2a43f..4158cdf8cc559 100644
--- a/pkgs/applications/misc/bluetooth_battery/default.nix
+++ b/pkgs/applications/misc/bluetooth_battery/default.nix
@@ -22,6 +22,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Fetch the battery charge level of some Bluetooth headsets";
+    mainProgram = "bluetooth_battery";
     homepage = "https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level";
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/break-time/default.nix b/pkgs/applications/misc/break-time/default.nix
index e72f08fd381e7..a4bbf4d4c104e 100644
--- a/pkgs/applications/misc/break-time/default.nix
+++ b/pkgs/applications/misc/break-time/default.nix
@@ -43,6 +43,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Break timer that forces you to take a break";
+    mainProgram = "break-time";
     homepage    = "https://github.com/cdepillabout/break-time";
     license     = with licenses; [ mit ];
     maintainers = with maintainers; [ cdepillabout ];
diff --git a/pkgs/applications/misc/brewtarget/default.nix b/pkgs/applications/misc/brewtarget/default.nix
index 13a5681ebd371..d46cf7e0d5dd3 100644
--- a/pkgs/applications/misc/brewtarget/default.nix
+++ b/pkgs/applications/misc/brewtarget/default.nix
@@ -33,6 +33,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Open source beer recipe creation tool";
+    mainProgram = "brewtarget";
     homepage = "http://www.brewtarget.org/";
     license = licenses.gpl3;
     maintainers = [ maintainers.mmahut ];
diff --git a/pkgs/applications/misc/buku/default.nix b/pkgs/applications/misc/buku/default.nix
index ddf2b9f528dad..4e2a5e29999c7 100644
--- a/pkgs/applications/misc/buku/default.nix
+++ b/pkgs/applications/misc/buku/default.nix
@@ -78,6 +78,7 @@ with python3.pkgs; buildPythonApplication rec {
 
   meta = with lib; {
     description = "Private cmdline bookmark manager";
+    mainProgram = "buku";
     homepage = "https://github.com/jarun/Buku";
     license = licenses.gpl3;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/caerbannog/default.nix b/pkgs/applications/misc/caerbannog/default.nix
index 2825b371e06da..0d21c7e165705 100644
--- a/pkgs/applications/misc/caerbannog/default.nix
+++ b/pkgs/applications/misc/caerbannog/default.nix
@@ -52,6 +52,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Mobile-friendly Gtk frontend for password-store";
+    mainProgram = "caerbannog";
     homepage = "https://sr.ht/~craftyguy/caerbannog/";
     changelog = "https://git.sr.ht/~craftyguy/caerbannog/refs/${version}";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/misc/calcure/default.nix b/pkgs/applications/misc/calcure/default.nix
index dcd2c62d2185e..a9fd65a4d99df 100644
--- a/pkgs/applications/misc/calcure/default.nix
+++ b/pkgs/applications/misc/calcure/default.nix
@@ -32,6 +32,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Modern TUI calendar and task manager with minimal and customizable UI";
+    mainProgram = "calcure";
     homepage = "https://github.com/anufrievroman/calcure";
     changelog = "https://github.com/anufrievroman/calcure/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/applications/misc/cambrinary/default.nix b/pkgs/applications/misc/cambrinary/default.nix
index 1fecfe1c17cb4..15bb60d4c3f76 100644
--- a/pkgs/applications/misc/cambrinary/default.nix
+++ b/pkgs/applications/misc/cambrinary/default.nix
@@ -31,6 +31,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Cambridge dictionary in a terminal";
+    mainProgram = "cambrinary";
     homepage = "https://github.com/xueyuanl/cambrinary";
     license = licenses.gpl3Only;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/candle/default.nix b/pkgs/applications/misc/candle/default.nix
index 3f9f2ec678b59..7b62e50e90063 100644
--- a/pkgs/applications/misc/candle/default.nix
+++ b/pkgs/applications/misc/candle/default.nix
@@ -25,6 +25,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "GRBL controller application with G-Code visualizer written in Qt";
+    mainProgram = "candle";
     homepage = "https://github.com/Denvi/Candle";
     license = licenses.gpl3;
     maintainers = with maintainers; [ matti-kariluoma ];
diff --git a/pkgs/applications/misc/cartridges/default.nix b/pkgs/applications/misc/cartridges/default.nix
index d90be2bc101cc..008004aa3c8ea 100644
--- a/pkgs/applications/misc/cartridges/default.nix
+++ b/pkgs/applications/misc/cartridges/default.nix
@@ -60,6 +60,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "A GTK4 + Libadwaita game launcher";
+    mainProgram = "cartridges";
     longDescription = ''
       A simple game launcher for all of your games.
       It has support for importing games from Steam, Lutris, Heroic
diff --git a/pkgs/applications/misc/cask-server/default.nix b/pkgs/applications/misc/cask-server/default.nix
index 603060ec52410..4626963488399 100644
--- a/pkgs/applications/misc/cask-server/default.nix
+++ b/pkgs/applications/misc/cask-server/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Public server and API to interface with Cask features";
+    mainProgram = "CaskServer";
     homepage = "https://github.com/Nitrux/cask-server";
     license = with licenses; [
       bsd2
diff --git a/pkgs/applications/misc/cbatticon/default.nix b/pkgs/applications/misc/cbatticon/default.nix
index 4d189d1c37a4e..665957ca0ea1e 100644
--- a/pkgs/applications/misc/cbatticon/default.nix
+++ b/pkgs/applications/misc/cbatticon/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Lightweight and fast battery icon that sits in the system tray";
+    mainProgram = "cbatticon";
     homepage = "https://github.com/valr/cbatticon";
     license = licenses.gpl2;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/chatblade/default.nix b/pkgs/applications/misc/chatblade/default.nix
index 62db564958603..9ec41576c1a85 100644
--- a/pkgs/applications/misc/chatblade/default.nix
+++ b/pkgs/applications/misc/chatblade/default.nix
@@ -41,6 +41,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/npiv/chatblade/";
     description = "A CLI Swiss Army Knife for ChatGPT";
+    mainProgram = "chatblade";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ deejayem ];
   };
diff --git a/pkgs/applications/misc/cherrytree/default.nix b/pkgs/applications/misc/cherrytree/default.nix
index 11944a21e0ef3..74623b544af1f 100644
--- a/pkgs/applications/misc/cherrytree/default.nix
+++ b/pkgs/applications/misc/cherrytree/default.nix
@@ -52,6 +52,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "An hierarchical note taking application";
+    mainProgram = "cherrytree";
     longDescription = ''
       Cherrytree is an hierarchical note taking application, featuring rich
       text, syntax highlighting and powerful search capabilities. It organizes
diff --git a/pkgs/applications/misc/chewing-editor/default.nix b/pkgs/applications/misc/chewing-editor/default.nix
index 13ee17999fe11..9cf163055a4bc 100644
--- a/pkgs/applications/misc/chewing-editor/default.nix
+++ b/pkgs/applications/misc/chewing-editor/default.nix
@@ -19,6 +19,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Cross platform chewing user phrase editor";
+    mainProgram = "chewing-editor";
     longDescription = ''
       chewing-editor is a cross platform chewing user phrase editor. It provides a easy way to manage user phrase. With it, user can customize their user phrase to increase input performance.
     '';
diff --git a/pkgs/applications/misc/clight/clightd.nix b/pkgs/applications/misc/clight/clightd.nix
index 7e6b84913a7a1..b6958d86bbd03 100644
--- a/pkgs/applications/misc/clight/clightd.nix
+++ b/pkgs/applications/misc/clight/clightd.nix
@@ -70,6 +70,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Linux bus interface that changes screen brightness/temperature";
+    mainProgram = "clightd";
     homepage = "https://github.com/FedeDP/Clightd";
     platforms = platforms.linux;
     license = licenses.gpl3;
diff --git a/pkgs/applications/misc/confclerk/default.nix b/pkgs/applications/misc/confclerk/default.nix
index 84095c4165417..7646cb9ae87be 100644
--- a/pkgs/applications/misc/confclerk/default.nix
+++ b/pkgs/applications/misc/confclerk/default.nix
@@ -19,6 +19,7 @@ mkDerivation rec {
 
   meta = {
     description = "Offline conference schedule viewer";
+    mainProgram = "confclerk";
     homepage = "http://www.toastfreeware.priv.at/confclerk";
     license = lib.licenses.gpl2;
     maintainers = with lib.maintainers; [ ehmry ];
diff --git a/pkgs/applications/misc/coolreader/default.nix b/pkgs/applications/misc/coolreader/default.nix
index a1a63992349ec..d75cdd4843fab 100644
--- a/pkgs/applications/misc/coolreader/default.nix
+++ b/pkgs/applications/misc/coolreader/default.nix
@@ -20,6 +20,7 @@ mkDerivation rec {
     broken = stdenv.isDarwin;
     homepage = "https://github.com/buggins/coolreader";
     description = "Cross platform open source e-book reader";
+    mainProgram = "cr3";
     license = licenses.gpl2Plus; # see https://github.com/buggins/coolreader/issues/80
     maintainers = with maintainers; [ gebner ];
     platforms = platforms.all;
diff --git a/pkgs/applications/misc/coursera-dl/default.nix b/pkgs/applications/misc/coursera-dl/default.nix
index f95633f0c8964..67848ea9354e5 100644
--- a/pkgs/applications/misc/coursera-dl/default.nix
+++ b/pkgs/applications/misc/coursera-dl/default.nix
@@ -75,6 +75,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "CLI for downloading Coursera.org videos and naming them";
+    mainProgram = "coursera-dl";
     homepage = "https://github.com/coursera-dl/coursera-dl";
     changelog = "https://github.com/coursera-dl/coursera-dl/blob/0.11.5/CHANGELOG.md";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/applications/misc/cubiomes-viewer/default.nix b/pkgs/applications/misc/cubiomes-viewer/default.nix
index dd4486f9b9886..fd07542b7fa90 100644
--- a/pkgs/applications/misc/cubiomes-viewer/default.nix
+++ b/pkgs/applications/misc/cubiomes-viewer/default.nix
@@ -57,6 +57,7 @@ stdenv.mkDerivation rec {
     broken = stdenv.isDarwin;
     homepage = "https://github.com/Cubitect/cubiomes-viewer";
     description = "A graphical Minecraft seed finder and map viewer";
+    mainProgram = "cubiomes-viewer";
     longDescription = ''
       Cubiomes Viewer provides a graphical interface for the efficient and flexible seed-finding
       utilities provided by cubiomes and a map viewer for the Minecraft biomes and structure generation.
diff --git a/pkgs/applications/misc/cubocore-packages/coreaction/default.nix b/pkgs/applications/misc/cubocore-packages/coreaction/default.nix
index b21f001a0a800..818e9da4494ed 100644
--- a/pkgs/applications/misc/cubocore-packages/coreaction/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/coreaction/default.nix
@@ -25,6 +25,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A side bar for showing widgets from the C Suite";
+    mainProgram = "coreaction";
     homepage = "https://gitlab.com/cubocore/coreapps/coreaction";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corearchiver/default.nix b/pkgs/applications/misc/cubocore-packages/corearchiver/default.nix
index 590f41a764d0b..691917e28da9f 100644
--- a/pkgs/applications/misc/cubocore-packages/corearchiver/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corearchiver/default.nix
@@ -26,6 +26,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Archiver from the C Suite to create and extract archives";
+    mainProgram = "corearchiver";
     homepage = "https://gitlab.com/cubocore/coreapps/corearchiver";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corefm/default.nix b/pkgs/applications/misc/cubocore-packages/corefm/default.nix
index c618ee100a28b..6bbd8ed8f7854 100644
--- a/pkgs/applications/misc/cubocore-packages/corefm/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corefm/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A lightwight filemanager from the C Suite";
+    mainProgram = "corefm";
     homepage = "https://gitlab.com/cubocore/coreapps/corefm";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/coregarage/default.nix b/pkgs/applications/misc/cubocore-packages/coregarage/default.nix
index 4c332c4a9a2bf..8a7050e5538ac 100644
--- a/pkgs/applications/misc/cubocore-packages/coregarage/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/coregarage/default.nix
@@ -26,6 +26,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A settings manager for the C Suite";
+    mainProgram = "coregarage";
     homepage = "https://gitlab.com/cubocore/coreapps/coregarage";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corehunt/default.nix b/pkgs/applications/misc/cubocore-packages/corehunt/default.nix
index 52c39752afae4..d802a6f448afd 100644
--- a/pkgs/applications/misc/cubocore-packages/corehunt/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corehunt/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A file finder utility from the C Suite";
+    mainProgram = "corehunt";
     homepage = "https://gitlab.com/cubocore/coreapps/corehunt";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/coreimage/default.nix b/pkgs/applications/misc/cubocore-packages/coreimage/default.nix
index 8ba09d6c9416b..cbb5fba861fb2 100644
--- a/pkgs/applications/misc/cubocore-packages/coreimage/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/coreimage/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "An image viewer from the C Suite";
+    mainProgram = "coreimage";
     homepage = "https://gitlab.com/cubocore/coreapps/coreimage";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/coreinfo/default.nix b/pkgs/applications/misc/cubocore-packages/coreinfo/default.nix
index 69dbcd33a85fc..6093c1176b808 100644
--- a/pkgs/applications/misc/cubocore-packages/coreinfo/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/coreinfo/default.nix
@@ -27,6 +27,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A file information tool from the C Suite";
+    mainProgram = "coreinfo";
     homepage = "https://gitlab.com/cubocore/coreapps/coreinfo";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corekeyboard/default.nix b/pkgs/applications/misc/cubocore-packages/corekeyboard/default.nix
index 734b183c844d7..dcd05b4bf77f3 100644
--- a/pkgs/applications/misc/cubocore-packages/corekeyboard/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corekeyboard/default.nix
@@ -27,6 +27,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A virtual keyboard for X11 from the C Suite";
+    mainProgram = "corekeyboard";
     homepage = "https://gitlab.com/cubocore/coreapps/corekeyboard";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corepad/default.nix b/pkgs/applications/misc/cubocore-packages/corepad/default.nix
index 4b27137980ea5..8db13988b0b0b 100644
--- a/pkgs/applications/misc/cubocore-packages/corepad/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corepad/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A document editor from the C Suite";
+    mainProgram = "corepad";
     homepage = "https://gitlab.com/cubocore/coreapps/corepad";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corepaint/default.nix b/pkgs/applications/misc/cubocore-packages/corepaint/default.nix
index 958532bb6fce4..345a9b26e666c 100644
--- a/pkgs/applications/misc/cubocore-packages/corepaint/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corepaint/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A paint app from the C Suite";
+    mainProgram = "corepaint";
     homepage = "https://gitlab.com/cubocore/coreapps/corepaint";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corepdf/default.nix b/pkgs/applications/misc/cubocore-packages/corepdf/default.nix
index b7679827f3213..242422fd8a3f5 100644
--- a/pkgs/applications/misc/cubocore-packages/corepdf/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corepdf/default.nix
@@ -26,6 +26,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A PDF viewer from the C Suite";
+    mainProgram = "corepdf";
     homepage = "https://gitlab.com/cubocore/coreapps/corepdf";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corepins/default.nix b/pkgs/applications/misc/cubocore-packages/corepins/default.nix
index e1274c6d6dfea..cb31415ef5d04 100644
--- a/pkgs/applications/misc/cubocore-packages/corepins/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corepins/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A bookmarking app from the C Suite";
+    mainProgram = "corepins";
     homepage = "https://gitlab.com/cubocore/coreapps/corepins";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corerenamer/default.nix b/pkgs/applications/misc/cubocore-packages/corerenamer/default.nix
index 7d87fc6f45266..6d48c65fc95fd 100644
--- a/pkgs/applications/misc/cubocore-packages/corerenamer/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corerenamer/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A batch file renamer from the C Suite";
+    mainProgram = "corerenamer";
     homepage = "https://gitlab.com/cubocore/coreapps/corerenamer";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/coreshot/default.nix b/pkgs/applications/misc/cubocore-packages/coreshot/default.nix
index 183765f63511a..3603becfc1e32 100644
--- a/pkgs/applications/misc/cubocore-packages/coreshot/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/coreshot/default.nix
@@ -25,6 +25,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A screen capture utility from the C Suite";
+    mainProgram = "coreshot";
     homepage = "https://gitlab.com/cubocore/coreapps/coreshot";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corestats/default.nix b/pkgs/applications/misc/cubocore-packages/corestats/default.nix
index 8dd6f1089d457..e01691b9f6182 100644
--- a/pkgs/applications/misc/cubocore-packages/corestats/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corestats/default.nix
@@ -25,6 +25,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A system resource viewer from the C Suite";
+    mainProgram = "corestats";
     homepage = "https://gitlab.com/cubocore/coreapps/corestats";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/corestuff/default.nix b/pkgs/applications/misc/cubocore-packages/corestuff/default.nix
index a2946485ab56c..933a09bbd188d 100644
--- a/pkgs/applications/misc/cubocore-packages/corestuff/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/corestuff/default.nix
@@ -32,6 +32,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "An activity viewer from the C Suite";
+    mainProgram = "corestuff";
     homepage = "https://gitlab.com/cubocore/coreapps/corestuff";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/coreterminal/default.nix b/pkgs/applications/misc/cubocore-packages/coreterminal/default.nix
index 30570f5e91e53..c4a8ea5c90e96 100644
--- a/pkgs/applications/misc/cubocore-packages/coreterminal/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/coreterminal/default.nix
@@ -36,6 +36,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A terminal emulator from the C Suite";
+    mainProgram = "coreterminal";
     homepage = "https://gitlab.com/cubocore/coreapps/coreterminal";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/coretime/default.nix b/pkgs/applications/misc/cubocore-packages/coretime/default.nix
index c2a717453e786..b8ac4c39a1a3a 100644
--- a/pkgs/applications/misc/cubocore-packages/coretime/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/coretime/default.nix
@@ -25,6 +25,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A time related task manager from the C Suite";
+    mainProgram = "coretime";
     homepage = "https://gitlab.com/cubocore/coreapps/coretime";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/coretoppings/default.nix b/pkgs/applications/misc/cubocore-packages/coretoppings/default.nix
index 920850cc60216..1296c8f57564f 100644
--- a/pkgs/applications/misc/cubocore-packages/coretoppings/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/coretoppings/default.nix
@@ -79,6 +79,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Additional features,plugins etc for CuboCore Application Suite";
+    mainProgram = "shareIT";
     homepage = "https://gitlab.com/cubocore/coreapps/coretoppings";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cubocore-packages/coreuniverse/default.nix b/pkgs/applications/misc/cubocore-packages/coreuniverse/default.nix
index 8eb056f7772c1..df84578090f85 100644
--- a/pkgs/applications/misc/cubocore-packages/coreuniverse/default.nix
+++ b/pkgs/applications/misc/cubocore-packages/coreuniverse/default.nix
@@ -24,6 +24,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Shows information about apps from the C Suite";
+    mainProgram = "coreuniverse";
     homepage = "https://gitlab.com/cubocore/coreapps/coreuniverse";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ dan4ik605743 ];
diff --git a/pkgs/applications/misc/cum/default.nix b/pkgs/applications/misc/cum/default.nix
index d49987c828589..b06f77787ac0e 100644
--- a/pkgs/applications/misc/cum/default.nix
+++ b/pkgs/applications/misc/cum/default.nix
@@ -28,6 +28,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "comic updater, mangafied";
+    mainProgram = "cum";
     homepage = "https://github.com/Hamuko/cum";
     license = licenses.asl20;
     maintainers = with maintainers; [ tadeokondrak ];
diff --git a/pkgs/applications/misc/cura/default.nix b/pkgs/applications/misc/cura/default.nix
index 31202a4be6e31..a385d31ec74b6 100644
--- a/pkgs/applications/misc/cura/default.nix
+++ b/pkgs/applications/misc/cura/default.nix
@@ -57,6 +57,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "3D printer / slicing GUI built on top of the Uranium framework";
+    mainProgram = "cura";
     homepage = "https://github.com/Ultimaker/Cura";
     license = licenses.lgpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/curaengine/stable.nix b/pkgs/applications/misc/curaengine/stable.nix
index 6bddfabfb5bb9..27b180da7309b 100644
--- a/pkgs/applications/misc/curaengine/stable.nix
+++ b/pkgs/applications/misc/curaengine/stable.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Engine for processing 3D models into 3D printing instructions";
+    mainProgram = "CuraEngine";
     homepage = "https://github.com/Ultimaker/CuraEngine";
     license = licenses.agpl3;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/ddcui/default.nix b/pkgs/applications/misc/ddcui/default.nix
index 520c49d2159b9..045e37cef160e 100644
--- a/pkgs/applications/misc/ddcui/default.nix
+++ b/pkgs/applications/misc/ddcui/default.nix
@@ -34,6 +34,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Graphical user interface for ddcutil - control monitor settings";
+    mainProgram = "ddcui";
     homepage = "https://www.ddcutil.com/ddcui_main/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ nh2 ];
diff --git a/pkgs/applications/misc/deckmaster/default.nix b/pkgs/applications/misc/deckmaster/default.nix
index 773b1b36e5141..f977fd1980bb9 100644
--- a/pkgs/applications/misc/deckmaster/default.nix
+++ b/pkgs/applications/misc/deckmaster/default.nix
@@ -38,6 +38,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "An application to control your Elgato Stream Deck on Linux";
+    mainProgram = "deckmaster";
     homepage = "https://github.com/muesli/deckmaster";
     changelog = "https://github.com/muesli/deckmaster/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/applications/misc/dict-cc-py/default.nix b/pkgs/applications/misc/dict-cc-py/default.nix
index cbacf11912758..9d4c40084f7f0 100644
--- a/pkgs/applications/misc/dict-cc-py/default.nix
+++ b/pkgs/applications/misc/dict-cc-py/default.nix
@@ -25,6 +25,7 @@ python3.pkgs.buildPythonPackage rec {
 
   meta = with lib; {
     description = "Unofficial command line client for dict.cc";
+    mainProgram = "dict.cc.py";
     homepage = "https://github.com/rbaron/dict.cc.py";
     license = with licenses; [ cc0 ];
     maintainers = with maintainers; [ ];
diff --git a/pkgs/applications/misc/diffpdf/default.nix b/pkgs/applications/misc/diffpdf/default.nix
index 370f41b1b831b..4792003b792e7 100644
--- a/pkgs/applications/misc/diffpdf/default.nix
+++ b/pkgs/applications/misc/diffpdf/default.nix
@@ -51,6 +51,7 @@ mkDerivation rec {
   meta = {
     homepage = "http://www.qtrac.eu/diffpdfc.html";
     description = "Tool for diffing pdf files visually or textually";
+    mainProgram = "diffpdf";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ ];
     platforms = with lib.platforms; linux;
diff --git a/pkgs/applications/misc/diffuse/default.nix b/pkgs/applications/misc/diffuse/default.nix
index 75e5f34174bc0..0f5cf3c0adc1c 100644
--- a/pkgs/applications/misc/diffuse/default.nix
+++ b/pkgs/applications/misc/diffuse/default.nix
@@ -71,6 +71,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/MightyCreak/diffuse";
     description = "Graphical tool for merging and comparing text files";
+    mainProgram = "diffuse";
     license = licenses.gpl2;
     maintainers = with maintainers; [ k3a ];
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/ding/default.nix b/pkgs/applications/misc/ding/default.nix
index 3c193d3f569a0..d0791b492f09f 100644
--- a/pkgs/applications/misc/ding/default.nix
+++ b/pkgs/applications/misc/ding/default.nix
@@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Simple and fast dictionary lookup tool";
+    mainProgram = "ding";
     homepage = "https://www-user.tu-chemnitz.de/~fri/ding/";
     license = licenses.gpl2Plus;
     platforms = platforms.linux; # homepage says: unix-like except darwin
diff --git a/pkgs/applications/misc/dmensamenu/default.nix b/pkgs/applications/misc/dmensamenu/default.nix
index d5208ea7b02d2..75c9302e07916 100644
--- a/pkgs/applications/misc/dmensamenu/default.nix
+++ b/pkgs/applications/misc/dmensamenu/default.nix
@@ -28,6 +28,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/dotlambda/dmensamenu";
     description = "Print German canteen menus using dmenu and OpenMensa";
+    mainProgram = "dmensamenu";
     license = licenses.mit;
     maintainers = with maintainers; [ dotlambda ];
   };
diff --git a/pkgs/applications/misc/dnd-tools/default.nix b/pkgs/applications/misc/dnd-tools/default.nix
index 3b0d0ec90e25b..130b4bd63126a 100644
--- a/pkgs/applications/misc/dnd-tools/default.nix
+++ b/pkgs/applications/misc/dnd-tools/default.nix
@@ -22,6 +22,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/savagezen/dnd-tools";
     description = "A set of interactive command line tools for Dungeons and Dragons 5th Edition";
+    mainProgram = "dnd-tools";
     license = licenses.agpl3Only;
     maintainers = [ maintainers.urlordjames ];
   };
diff --git a/pkgs/applications/misc/dotfiles/default.nix b/pkgs/applications/misc/dotfiles/default.nix
index 52d5016200f99..017d18b0bce80 100644
--- a/pkgs/applications/misc/dotfiles/default.nix
+++ b/pkgs/applications/misc/dotfiles/default.nix
@@ -17,6 +17,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Easily manage your dotfiles";
+    mainProgram = "dotfiles";
     homepage = "https://github.com/jbernard/dotfiles";
     license = licenses.isc;
   };
diff --git a/pkgs/applications/misc/electron-cash/default.nix b/pkgs/applications/misc/electron-cash/default.nix
index 7760b57dd3b92..f28d1bf7e0434 100644
--- a/pkgs/applications/misc/electron-cash/default.nix
+++ b/pkgs/applications/misc/electron-cash/default.nix
@@ -82,6 +82,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A Bitcoin Cash SPV Wallet";
+    mainProgram = "electron-cash";
     longDescription = ''
       An easy-to-use Bitcoin Cash client featuring wallets generated from
       mnemonic seeds (in addition to other, more advanced, wallet options)
diff --git a/pkgs/applications/misc/electrum/grs.nix b/pkgs/applications/misc/electrum/grs.nix
index 87a85e9f986dd..b615a61f5a193 100644
--- a/pkgs/applications/misc/electrum/grs.nix
+++ b/pkgs/applications/misc/electrum/grs.nix
@@ -104,6 +104,7 @@ python3.pkgs.buildPythonApplication {
 
   meta = with lib; {
     description = "Lightweight Groestlcoin wallet";
+    mainProgram = "electrum-grs";
     longDescription = ''
       An easy-to-use Groestlcoin client featuring wallets generated from
       mnemonic seeds (in addition to other, more advanced, wallet options)
diff --git a/pkgs/applications/misc/electrum/ltc.nix b/pkgs/applications/misc/electrum/ltc.nix
index 9b0c63834cfbb..a85252027e960 100644
--- a/pkgs/applications/misc/electrum/ltc.nix
+++ b/pkgs/applications/misc/electrum/ltc.nix
@@ -127,6 +127,7 @@ python3.pkgs.buildPythonApplication {
 
   meta = with lib; {
     description = "Lightweight Litecoin Client";
+    mainProgram = "electrum-ltc";
     longDescription = ''
       Electrum-LTC is a simple, but powerful Litecoin wallet. A unique secret
       phrase (or “seed”) leaves intruders stranded and your peace of mind
diff --git a/pkgs/applications/misc/epr/default.nix b/pkgs/applications/misc/epr/default.nix
index 20b2b4ba8d90f..5728972f2bd84 100644
--- a/pkgs/applications/misc/epr/default.nix
+++ b/pkgs/applications/misc/epr/default.nix
@@ -13,6 +13,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "CLI Epub Reader";
+    mainProgram = "epr";
     homepage = "https://github.com/wustho/epr";
     license = licenses.mit;
     maintainers = [ maintainers.Br1ght0ne ];
diff --git a/pkgs/applications/misc/etesync-dav/default.nix b/pkgs/applications/misc/etesync-dav/default.nix
index a4bbdc2eb7b37..85ff399ac83f9 100644
--- a/pkgs/applications/misc/etesync-dav/default.nix
+++ b/pkgs/applications/misc/etesync-dav/default.nix
@@ -46,6 +46,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://www.etesync.com/";
     description = "Secure, end-to-end encrypted, and privacy respecting sync for contacts, calendars and tasks";
+    mainProgram = "etesync-dav";
     license = licenses.gpl3;
     maintainers = with maintainers; [ thyol valodim ];
     broken = stdenv.isDarwin; # pyobjc-framework-Cocoa is missing
diff --git a/pkgs/applications/misc/evtest-qt/default.nix b/pkgs/applications/misc/evtest-qt/default.nix
index 9092fe99ff76d..42000afd3d7e7 100644
--- a/pkgs/applications/misc/evtest-qt/default.nix
+++ b/pkgs/applications/misc/evtest-qt/default.nix
@@ -30,6 +30,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Simple input device tester for linux with Qt GUI";
+    mainProgram = "evtest-qt";
     homepage = "https://github.com/Grumbel/evtest-qt";
     maintainers = with maintainers; [ alexarice ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/extract_url/default.nix b/pkgs/applications/misc/extract_url/default.nix
index 35ea33bde3a21..b47fca90b9f68 100644
--- a/pkgs/applications/misc/extract_url/default.nix
+++ b/pkgs/applications/misc/extract_url/default.nix
@@ -34,6 +34,7 @@ in stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.memoryhole.net/~kyle/extract_url/";
     description = "Extracts URLs from MIME messages or plain text";
+    mainProgram = "extract_url";
     license = licenses.bsd2;
     maintainers = [ maintainers.qyliss ];
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/faircamp/default.nix b/pkgs/applications/misc/faircamp/default.nix
index 7987a3c44d024..9aa92101a1cce 100644
--- a/pkgs/applications/misc/faircamp/default.nix
+++ b/pkgs/applications/misc/faircamp/default.nix
@@ -60,6 +60,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A self-hostable, statically generated bandcamp alternative";
+    mainProgram = "faircamp";
     longDescription = ''
       Faircamp takes a directory on your disk - your Catalog - and from it
       produces a fancy-looking (and technically simple and completely static)
diff --git a/pkgs/applications/misc/fbmenugen/default.nix b/pkgs/applications/misc/fbmenugen/default.nix
index 161991f032644..90d3f3b014248 100644
--- a/pkgs/applications/misc/fbmenugen/default.nix
+++ b/pkgs/applications/misc/fbmenugen/default.nix
@@ -71,6 +71,7 @@ perlPackages.buildPerlPackage rec {
   meta = with lib; {
     homepage = "https://github.com/trizen/fbmenugen";
     description = "Simple menu generator for the Fluxbox Window Manager";
+    mainProgram = "fbmenugen";
     license = licenses.gpl3Only;
     platforms = platforms.linux;
     maintainers = [ maintainers.romildo ];
diff --git a/pkgs/applications/misc/fff/default.nix b/pkgs/applications/misc/fff/default.nix
index a3f791940cbf5..351796a036d26 100644
--- a/pkgs/applications/misc/fff/default.nix
+++ b/pkgs/applications/misc/fff/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fucking Fast File-Manager";
+    mainProgram = "fff";
     homepage = "https://github.com/dylanaraps/fff";
     license = licenses.mit;
     maintainers = [ maintainers.tadeokondrak ];
diff --git a/pkgs/applications/misc/flowtime/default.nix b/pkgs/applications/misc/flowtime/default.nix
index 6637cb8781910..06962d75452b6 100644
--- a/pkgs/applications/misc/flowtime/default.nix
+++ b/pkgs/applications/misc/flowtime/default.nix
@@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Get what motivates you done, without losing concentration";
+    mainProgram = "flowtime";
     homepage = "https://github.com/Diego-Ivan/Flowtime";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ foo-dogsquared pokon548 ];
diff --git a/pkgs/applications/misc/fluxboxlauncher/default.nix b/pkgs/applications/misc/fluxboxlauncher/default.nix
index 719f08db6bcdf..19e70ad7c54cf 100644
--- a/pkgs/applications/misc/fluxboxlauncher/default.nix
+++ b/pkgs/applications/misc/fluxboxlauncher/default.nix
@@ -53,6 +53,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A Gui editor (gtk) to configure applications launching on a fluxbox session";
+    mainProgram = "fluxboxlauncher";
     homepage = "https://github.com/mothsART/fluxboxlauncher";
     maintainers = with maintainers; [ mothsart ];
     license = licenses.bsdOriginal;
diff --git a/pkgs/applications/misc/font-manager/default.nix b/pkgs/applications/misc/font-manager/default.nix
index 40cbeaea61304..309d8fa2faf5d 100644
--- a/pkgs/applications/misc/font-manager/default.nix
+++ b/pkgs/applications/misc/font-manager/default.nix
@@ -74,6 +74,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://fontmanager.github.io/";
     description = "Simple font management for GTK desktop environments";
+    mainProgram = "font-manager";
     longDescription = ''
       Font Manager is intended to provide a way for average users to
       easily manage desktop fonts, without having to resort to command
diff --git a/pkgs/applications/misc/freemind/default.nix b/pkgs/applications/misc/freemind/default.nix
index ff84ecdf55f09..0bdf8df306a83 100644
--- a/pkgs/applications/misc/freemind/default.nix
+++ b/pkgs/applications/misc/freemind/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Mind-mapping software";
+    mainProgram = "freemind";
     homepage = "https://freemind.sourceforge.net/wiki/index.php/Main_Page";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/furtherance/default.nix b/pkgs/applications/misc/furtherance/default.nix
index f6fea4c633d08..15616f32bebd9 100644
--- a/pkgs/applications/misc/furtherance/default.nix
+++ b/pkgs/applications/misc/furtherance/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Track your time without being tracked";
+    mainProgram = "furtherance";
     homepage = "https://github.com/lakoliu/Furtherance";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/fusee-interfacee-tk/default.nix b/pkgs/applications/misc/fusee-interfacee-tk/default.nix
index 813b8113ee30d..c69b7c0633f43 100644
--- a/pkgs/applications/misc/fusee-interfacee-tk/default.nix
+++ b/pkgs/applications/misc/fusee-interfacee-tk/default.nix
@@ -32,6 +32,7 @@ in stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/nh-server/fusee-interfacee-tk";
     description = "A tool to send .bin files to a Nintendo Switch in RCM mode";
+    mainProgram = "fusee-interfacee-tk";
     longDescription = "A mod of falquinhos Fusée Launcher for use with Nintendo Homebrew Switch Guide. It also adds the ability to mount SD while in RCM.
     Must be run as sudo.";
     maintainers = with maintainers; [ kristian-brucaj ];
diff --git a/pkgs/applications/misc/gImageReader/default.nix b/pkgs/applications/misc/gImageReader/default.nix
index 04efe6f52dcd5..bc293b455b2a8 100644
--- a/pkgs/applications/misc/gImageReader/default.nix
+++ b/pkgs/applications/misc/gImageReader/default.nix
@@ -62,6 +62,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A simple Gtk/Qt front-end to tesseract-ocr";
+    mainProgram = "gimagereader-gtk";
     homepage = "https://github.com/manisandro/gImageReader";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [teto];
diff --git a/pkgs/applications/misc/gcalcli/default.nix b/pkgs/applications/misc/gcalcli/default.nix
index 90b4883ec290a..47950616578ed 100644
--- a/pkgs/applications/misc/gcalcli/default.nix
+++ b/pkgs/applications/misc/gcalcli/default.nix
@@ -30,6 +30,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "CLI for Google Calendar";
+    mainProgram = "gcalcli";
     homepage = "https://github.com/insanum/gcalcli";
     license = licenses.mit;
     maintainers = with maintainers; [ nocoolnametom ];
diff --git a/pkgs/applications/misc/gcstar/default.nix b/pkgs/applications/misc/gcstar/default.nix
index 4a6b45469d27f..0f6478f50fcd2 100644
--- a/pkgs/applications/misc/gcstar/default.nix
+++ b/pkgs/applications/misc/gcstar/default.nix
@@ -59,6 +59,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://gitlab.com/Kerenoc/GCstar";
     description = "Manage your collections of movies, games, books, music and more";
+    mainProgram = "gcstar";
     longDescription = ''
       GCstar is an application for managing your collections.
       It supports many types of collections, including movies, books, games, comics, stamps, coins, and many more.
diff --git a/pkgs/applications/misc/get_iplayer/default.nix b/pkgs/applications/misc/get_iplayer/default.nix
index 12d056b01ec6b..4f455d901c2d7 100644
--- a/pkgs/applications/misc/get_iplayer/default.nix
+++ b/pkgs/applications/misc/get_iplayer/default.nix
@@ -46,6 +46,7 @@ perlPackages.buildPerlPackage rec {
 
   meta = with lib; {
     description = "Downloads TV and radio programmes from BBC iPlayer and BBC Sounds";
+    mainProgram = "get_iplayer";
     license = licenses.gpl3Plus;
     homepage = "https://github.com/get-iplayer/get_iplayer";
     platforms = platforms.all;
diff --git a/pkgs/applications/misc/glava/default.nix b/pkgs/applications/misc/glava/default.nix
index 14173fc7057f6..df5d6138d35f6 100644
--- a/pkgs/applications/misc/glava/default.nix
+++ b/pkgs/applications/misc/glava/default.nix
@@ -80,6 +80,7 @@ in
       description = ''
         OpenGL audio spectrum visualizer
       '';
+      mainProgram = "glava";
       homepage = "https://github.com/wacossusca34/glava";
       platforms = platforms.linux;
       license = licenses.gpl3;
diff --git a/pkgs/applications/misc/gmtp/default.nix b/pkgs/applications/misc/gmtp/default.nix
index a8465538b50ad..31c62f53423c4 100644
--- a/pkgs/applications/misc/gmtp/default.nix
+++ b/pkgs/applications/misc/gmtp/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "A simple MP3 and Media player client for UNIX and UNIX like systems";
+    mainProgram = "gmtp";
     homepage = "https://gmtp.sourceforge.io";
     platforms = lib.platforms.linux;
     maintainers = [ ];
diff --git a/pkgs/applications/misc/gnome-firmware/default.nix b/pkgs/applications/misc/gnome-firmware/default.nix
index defaad0d2c973..4f94a5bc7f6b9 100644
--- a/pkgs/applications/misc/gnome-firmware/default.nix
+++ b/pkgs/applications/misc/gnome-firmware/default.nix
@@ -61,6 +61,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://gitlab.gnome.org/World/gnome-firmware";
     description = "Tool for installing firmware on devices";
+    mainProgram = "gnome-firmware";
     license = licenses.gpl2Plus;
     maintainers = teams.gnome.members;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/gnome-multi-writer/default.nix b/pkgs/applications/misc/gnome-multi-writer/default.nix
index 31d81a3327905..b4cca2f3bf63b 100644
--- a/pkgs/applications/misc/gnome-multi-writer/default.nix
+++ b/pkgs/applications/misc/gnome-multi-writer/default.nix
@@ -54,6 +54,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tool for writing an ISO file to multiple USB devices at once";
+    mainProgram = "gnome-multi-writer";
     homepage = "https://wiki.gnome.org/Apps/MultiWriter";
     license = licenses.gpl2Plus;
     maintainers = teams.gnome.members;
diff --git a/pkgs/applications/misc/gnome-recipes/default.nix b/pkgs/applications/misc/gnome-recipes/default.nix
index 818ef8fb96a00..dc4df70bc00e4 100644
--- a/pkgs/applications/misc/gnome-recipes/default.nix
+++ b/pkgs/applications/misc/gnome-recipes/default.nix
@@ -69,6 +69,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Recipe management application for GNOME";
+    mainProgram = "gnome-recipes";
     homepage = "https://wiki.gnome.org/Apps/Recipes";
     maintainers = teams.gnome.members;
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/misc/gnome-usage/default.nix b/pkgs/applications/misc/gnome-usage/default.nix
index 179facc64fd50..c969c92ffdd2e 100644
--- a/pkgs/applications/misc/gnome-usage/default.nix
+++ b/pkgs/applications/misc/gnome-usage/default.nix
@@ -60,6 +60,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A nice way to view information about use of system resources, like memory and disk space";
+    mainProgram = "gnome-usage";
     homepage = "https://gitlab.gnome.org/GNOME/gnome-usage";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/golden-cheetah/default.nix b/pkgs/applications/misc/golden-cheetah/default.nix
index 1345dc51593d7..9cc9b3bf6d476 100644
--- a/pkgs/applications/misc/golden-cheetah/default.nix
+++ b/pkgs/applications/misc/golden-cheetah/default.nix
@@ -76,6 +76,7 @@ in mkDerivation rec {
 
   meta = {
     description = "Performance software for cyclists, runners and triathletes. Built from source and without API tokens";
+    mainProgram = "GoldenCheetah";
     platforms = lib.platforms.linux;
     maintainers = with lib.maintainers; [ adamcstephens ];
     license = lib.licenses.gpl2Plus;
diff --git a/pkgs/applications/misc/gphoto2/gphotofs.nix b/pkgs/applications/misc/gphoto2/gphotofs.nix
index afb02c9937f95..0f1e60ff01653 100644
--- a/pkgs/applications/misc/gphoto2/gphotofs.nix
+++ b/pkgs/applications/misc/gphoto2/gphotofs.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fuse FS to mount a digital camera";
+    mainProgram = "gphotofs";
     homepage = "http://www.gphoto.org/";
     maintainers = [ maintainers.raskin ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/gpx-viewer/default.nix b/pkgs/applications/misc/gpx-viewer/default.nix
index 887a469397e10..9a18c9d5c9d97 100644
--- a/pkgs/applications/misc/gpx-viewer/default.nix
+++ b/pkgs/applications/misc/gpx-viewer/default.nix
@@ -52,6 +52,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://blog.sarine.nl/tag/gpxviewer/";
     description = "Simple tool to visualize tracks and waypoints stored in a gpx file";
+    mainProgram = "gpx-viewer";
     changelog = "https://github.com/DaveDavenport/gpx-viewer/blob/${src.rev}/NEWS";
     platforms = with platforms; linux;
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/misc/gpxlab/default.nix b/pkgs/applications/misc/gpxlab/default.nix
index 9d3d7c27ec8cf..18c31afef6b52 100644
--- a/pkgs/applications/misc/gpxlab/default.nix
+++ b/pkgs/applications/misc/gpxlab/default.nix
@@ -27,6 +27,7 @@ mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/BourgeoisLab/GPXLab";
     description = "Program to show and manipulate GPS tracks";
+    mainProgram = "gpxlab";
     longDescription = ''
       GPXLab is an application to display and manage GPS tracks
       previously recorded with a GPS tracker.
diff --git a/pkgs/applications/misc/gpxsee/default.nix b/pkgs/applications/misc/gpxsee/default.nix
index 79164e932f331..227177d14369f 100644
--- a/pkgs/applications/misc/gpxsee/default.nix
+++ b/pkgs/applications/misc/gpxsee/default.nix
@@ -63,6 +63,7 @@ stdenv.mkDerivation (finalAttrs: {
     broken = isQt6 && stdenv.isDarwin;
     changelog = "https://build.opensuse.org/package/view_file/home:tumic:GPXSee/gpxsee/gpxsee.changes";
     description = "GPS log file viewer and analyzer";
+    mainProgram = "gpxsee";
     homepage = "https://www.gpxsee.org/";
     license = lib.licenses.gpl3Only;
     longDescription = ''
diff --git a/pkgs/applications/misc/gramps/default.nix b/pkgs/applications/misc/gramps/default.nix
index 7539b22087c34..bd0690b381a95 100644
--- a/pkgs/applications/misc/gramps/default.nix
+++ b/pkgs/applications/misc/gramps/default.nix
@@ -109,6 +109,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Genealogy software";
+    mainProgram = "gramps";
     homepage = "https://gramps-project.org";
     maintainers = with maintainers; [ jk pinpox ];
     changelog = "https://github.com/gramps-project/gramps/blob/v${version}/ChangeLog";
diff --git a/pkgs/applications/misc/gummi/default.nix b/pkgs/applications/misc/gummi/default.nix
index d9e0204be322b..7131c5cd12275 100644
--- a/pkgs/applications/misc/gummi/default.nix
+++ b/pkgs/applications/misc/gummi/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://gummi.app";
     description = "Simple LaTex editor for GTK users";
+    mainProgram = "gummi";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ flokli ];
     platforms = with lib.platforms; linux;
diff --git a/pkgs/applications/misc/hamster/default.nix b/pkgs/applications/misc/hamster/default.nix
index 5f7b51bb6ee67..c425014e24ed8 100644
--- a/pkgs/applications/misc/hamster/default.nix
+++ b/pkgs/applications/misc/hamster/default.nix
@@ -51,6 +51,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Time tracking application";
+    mainProgram = "hamster";
     homepage = "http://projecthamster.org/";
     license = licenses.gpl3Plus;
     platforms = platforms.all;
diff --git a/pkgs/applications/misc/heimer/default.nix b/pkgs/applications/misc/heimer/default.nix
index 69f45cb407b9d..b044c7fedbed2 100644
--- a/pkgs/applications/misc/heimer/default.nix
+++ b/pkgs/applications/misc/heimer/default.nix
@@ -28,6 +28,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Simple cross-platform mind map and note-taking tool written in Qt";
+    mainProgram = "heimer";
     homepage = "https://github.com/juzzlin/Heimer";
     changelog = "https://github.com/juzzlin/Heimer/blob/${version}/CHANGELOG";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/misc/hollywood/default.nix b/pkgs/applications/misc/hollywood/default.nix
index f3b721bc49597..1b655e5afacc7 100644
--- a/pkgs/applications/misc/hollywood/default.nix
+++ b/pkgs/applications/misc/hollywood/default.nix
@@ -87,6 +87,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "Fill your console with Hollywood melodrama technobabble";
+    mainProgram = "hollywood";
     homepage = "https://a.hollywood.computer/";
     license = lib.licenses.asl20;
     maintainers = [ lib.maintainers.anselmschueler ];
diff --git a/pkgs/applications/misc/hovercraft/default.nix b/pkgs/applications/misc/hovercraft/default.nix
index 25e541cf3d483..c5623d2dac169 100644
--- a/pkgs/applications/misc/hovercraft/default.nix
+++ b/pkgs/applications/misc/hovercraft/default.nix
@@ -36,6 +36,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Makes impress.js presentations from reStructuredText";
+    mainProgram = "hovercraft";
     homepage = "https://github.com/regebro/hovercraft";
     license = licenses.mit;
     maintainers = with maintainers; [ goibhniu makefu ];
diff --git a/pkgs/applications/misc/html5validator/default.nix b/pkgs/applications/misc/html5validator/default.nix
index 6c9c65cf4270e..cee564d512d53 100644
--- a/pkgs/applications/misc/html5validator/default.nix
+++ b/pkgs/applications/misc/html5validator/default.nix
@@ -33,6 +33,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command line tool that tests files for HTML5 validity";
+    mainProgram = "html5validator";
     homepage = "https://github.com/svenkreiss/html5validator";
     changelog = "https://github.com/svenkreiss/html5validator/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/applications/misc/huggle/default.nix b/pkgs/applications/misc/huggle/default.nix
index 3a6f25ede695d..37d43a90d05df 100644
--- a/pkgs/applications/misc/huggle/default.nix
+++ b/pkgs/applications/misc/huggle/default.nix
@@ -56,6 +56,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Anti-vandalism tool for use on MediaWiki-based projects";
+    mainProgram = "huggle";
     homepage = "https://github.com/huggle/huggle3-qt-lx";
     license = licenses.gpl3Only;
     maintainers = [ maintainers.fee1-dead ];
diff --git a/pkgs/applications/misc/imaginer/default.nix b/pkgs/applications/misc/imaginer/default.nix
index 3f2b99954e08c..1b00bd0614bdf 100644
--- a/pkgs/applications/misc/imaginer/default.nix
+++ b/pkgs/applications/misc/imaginer/default.nix
@@ -62,6 +62,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/ImaginerApp/Imaginer";
     description = "Imaginer with AI";
+    mainProgram = "imaginer";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ _0xMRTT ];
   };
diff --git a/pkgs/applications/misc/inkcut/default.nix b/pkgs/applications/misc/inkcut/default.nix
index 36d001d62d46a..b711fd9330dc5 100644
--- a/pkgs/applications/misc/inkcut/default.nix
+++ b/pkgs/applications/misc/inkcut/default.nix
@@ -89,6 +89,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://www.codelv.com/projects/inkcut/";
     description = "Control 2D plotters, cutters, engravers, and CNC machines";
+    mainProgram = "inkcut";
     license = licenses.gpl3;
     maintainers = with maintainers; [ raboof ];
   };
diff --git a/pkgs/applications/misc/johnny/default.nix b/pkgs/applications/misc/johnny/default.nix
index 0f1530afb50c3..cead88817a541 100644
--- a/pkgs/applications/misc/johnny/default.nix
+++ b/pkgs/applications/misc/johnny/default.nix
@@ -42,6 +42,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://openwall.info/wiki/john/johnny";
     description = "Open Source GUI frontend for John the Ripper";
+    mainProgram = "johnny";
     license = licenses.bsd2;
     maintainers = with maintainers; [ Misaka13514 ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/joplin-desktop/default.nix b/pkgs/applications/misc/joplin-desktop/default.nix
index 67c58d5c3009d..a8245a2234669 100644
--- a/pkgs/applications/misc/joplin-desktop/default.nix
+++ b/pkgs/applications/misc/joplin-desktop/default.nix
@@ -28,6 +28,7 @@ let
 
   meta = with lib; {
     description = "An open source note taking and to-do application with synchronisation capabilities";
+    mainProgram = "joplin-desktop";
     longDescription = ''
       Joplin is a free, open source note taking and to-do application, which can
       handle a large number of notes organised into notebooks. The notes are
diff --git a/pkgs/applications/misc/k4dirstat/default.nix b/pkgs/applications/misc/k4dirstat/default.nix
index d3c073e5663a3..e1636e30267b5 100644
--- a/pkgs/applications/misc/k4dirstat/default.nix
+++ b/pkgs/applications/misc/k4dirstat/default.nix
@@ -33,6 +33,7 @@ mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/jeromerobert/k4dirstat";
     description = "A small utility program that sums up disk usage for directory trees";
+    mainProgram = "k4dirstat";
     license = licenses.gpl2;
     maintainers = [ maintainers.raboof ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/kanjidraw/default.nix b/pkgs/applications/misc/kanjidraw/default.nix
index 53c752651d2d9..0d5189474729a 100644
--- a/pkgs/applications/misc/kanjidraw/default.nix
+++ b/pkgs/applications/misc/kanjidraw/default.nix
@@ -27,6 +27,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Handwritten kanji recognition";
+    mainProgram = "kanjidraw";
     longDescription = ''
       kanjidraw is a simple Python library + GUI for matching (the strokes of a)
       handwritten kanji against its database.
diff --git a/pkgs/applications/misc/kapow/default.nix b/pkgs/applications/misc/kapow/default.nix
index 49fbed7b1efb9..db352199408cf 100644
--- a/pkgs/applications/misc/kapow/default.nix
+++ b/pkgs/applications/misc/kapow/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Punch clock to track time spent on projects";
+    mainProgram = "kapow";
     homepage = "https://gottcode.org/kapow/";
     maintainers = with maintainers; [ orivej ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/kchmviewer/default.nix b/pkgs/applications/misc/kchmviewer/default.nix
index 4d703bff0c225..83d077f827955 100644
--- a/pkgs/applications/misc/kchmviewer/default.nix
+++ b/pkgs/applications/misc/kchmviewer/default.nix
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "CHM (Winhelp) files viewer";
+    mainProgram = "kchmviewer";
     homepage = "http://www.ulduzsoft.com/linux/kchmviewer/";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ sikmir ];
diff --git a/pkgs/applications/misc/keepmenu/default.nix b/pkgs/applications/misc/keepmenu/default.nix
index d10c10c231d6d..040f2f6f61a75 100644
--- a/pkgs/applications/misc/keepmenu/default.nix
+++ b/pkgs/applications/misc/keepmenu/default.nix
@@ -42,6 +42,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/firecat53/keepmenu";
     description = "Dmenu/Rofi frontend for Keepass databases";
+    mainProgram = "keepmenu";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ elliot ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/keeweb/default.nix b/pkgs/applications/misc/keeweb/default.nix
index 7af5465ad9e03..22f3ad668ccbf 100644
--- a/pkgs/applications/misc/keeweb/default.nix
+++ b/pkgs/applications/misc/keeweb/default.nix
@@ -65,6 +65,7 @@ let
 
   meta = with lib; {
     description = "Free cross-platform password manager compatible with KeePass";
+    mainProgram = "keeweb";
     homepage = "https://keeweb.info/";
     changelog = "https://github.com/keeweb/keeweb/blob/v${version}/release-notes.md";
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
diff --git a/pkgs/applications/misc/keystore-explorer/default.nix b/pkgs/applications/misc/keystore-explorer/default.nix
index a79169ff633eb..fb5990f5dca0b 100644
--- a/pkgs/applications/misc/keystore-explorer/default.nix
+++ b/pkgs/applications/misc/keystore-explorer/default.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Open source GUI replacement for the Java command-line utilities keytool and jarsigner";
+    mainProgram = "keystore-explorer";
     sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
     license = lib.licenses.gpl3Only;
     maintainers = [ lib.maintainers.numinit ];
diff --git a/pkgs/applications/misc/kickoff/default.nix b/pkgs/applications/misc/kickoff/default.nix
index 21018f509b1cb..cd1a57a09f35a 100644
--- a/pkgs/applications/misc/kickoff/default.nix
+++ b/pkgs/applications/misc/kickoff/default.nix
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Minimalistic program launcher";
+    mainProgram = "kickoff";
     homepage = "https://github.com/j0ru/kickoff";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ pyxels ];
diff --git a/pkgs/applications/misc/kiwix/default.nix b/pkgs/applications/misc/kiwix/default.nix
index 6e255b74f4b13..e804f890b832f 100644
--- a/pkgs/applications/misc/kiwix/default.nix
+++ b/pkgs/applications/misc/kiwix/default.nix
@@ -39,6 +39,7 @@ mkDerivation {
 
   meta = with lib; {
     description = "An offline reader for Web content";
+    mainProgram = "kiwix-desktop";
     homepage = "https://kiwix.org";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/kjv/lukesmithxyz-kjv.nix b/pkgs/applications/misc/kjv/lukesmithxyz-kjv.nix
index 7cec6c592235d..27a1a90502845 100644
--- a/pkgs/applications/misc/kjv/lukesmithxyz-kjv.nix
+++ b/pkgs/applications/misc/kjv/lukesmithxyz-kjv.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Read the Word of God from your terminal + Apocrypha";
+    mainProgram = "kjv";
     homepage = "https://lukesmith.xyz/articles/command-line-bibles";
     license = licenses.unlicense;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/klayout/default.nix b/pkgs/applications/misc/klayout/default.nix
index a119dc6633f20..0b1bc647917a7 100644
--- a/pkgs/applications/misc/klayout/default.nix
+++ b/pkgs/applications/misc/klayout/default.nix
@@ -58,6 +58,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "High performance layout viewer and editor with support for GDS and OASIS";
+    mainProgram = "klayout";
     license = with licenses; [ gpl2Plus ];
     homepage = "https://www.klayout.de/";
     changelog = "https://www.klayout.de/development.html#${version}";
diff --git a/pkgs/applications/misc/konsave/default.nix b/pkgs/applications/misc/konsave/default.nix
index 75950d28e2320..f86f2c19c6c07 100644
--- a/pkgs/applications/misc/konsave/default.nix
+++ b/pkgs/applications/misc/konsave/default.nix
@@ -19,6 +19,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Save Linux Customization";
+    mainProgram = "konsave";
     maintainers = with maintainers; [ MoritzBoehme ];
     homepage = "https://github.com/Prayag2/konsave";
     license = licenses.gpl3;
diff --git a/pkgs/applications/misc/koreader/default.nix b/pkgs/applications/misc/koreader/default.nix
index b24ae5d06ad29..857ca1d26a8eb 100644
--- a/pkgs/applications/misc/koreader/default.nix
+++ b/pkgs/applications/misc/koreader/default.nix
@@ -65,6 +65,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/koreader/koreader";
     description =
       "An ebook reader application supporting PDF, DjVu, EPUB, FB2 and many more formats, running on Cervantes, Kindle, Kobo, PocketBook and Android devices";
+    mainProgram = "koreader";
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     platforms = [ "aarch64-linux" "x86_64-linux" ];
     license = licenses.agpl3Only;
diff --git a/pkgs/applications/misc/krename/default.nix b/pkgs/applications/misc/krename/default.nix
index 6d575709208e9..98ba8836efca7 100644
--- a/pkgs/applications/misc/krename/default.nix
+++ b/pkgs/applications/misc/krename/default.nix
@@ -35,6 +35,7 @@ in mkDerivation rec {
 
   meta = with lib; {
     description = "A powerful batch renamer for KDE";
+    mainProgram = "krename";
     homepage = "https://kde.org/applications/utilities/krename/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/applications/misc/ksmoothdock/default.nix b/pkgs/applications/misc/ksmoothdock/default.nix
index 80c46bd9c16da..c592d944c6322 100644
--- a/pkgs/applications/misc/ksmoothdock/default.nix
+++ b/pkgs/applications/misc/ksmoothdock/default.nix
@@ -32,6 +32,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A cool desktop panel for KDE Plasma 5";
+    mainProgram = "ksmoothdock";
     license = licenses.mit;
     homepage = "https://dangvd.github.io/ksmoothdock/";
     maintainers = with maintainers; [ shamilton ];
diff --git a/pkgs/applications/misc/latte-dock/default.nix b/pkgs/applications/misc/latte-dock/default.nix
index 6562cd7b4a29b..ae1b13cc870a2 100644
--- a/pkgs/applications/misc/latte-dock/default.nix
+++ b/pkgs/applications/misc/latte-dock/default.nix
@@ -30,6 +30,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Dock-style app launcher based on Plasma frameworks";
+    mainProgram = "latte-dock";
     homepage = "https://invent.kde.org/plasma/latte-dock";
     license = licenses.gpl2;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/loxodo/default.nix b/pkgs/applications/misc/loxodo/default.nix
index 77dd39bc06015..a5b729c3cf3bf 100644
--- a/pkgs/applications/misc/loxodo/default.nix
+++ b/pkgs/applications/misc/loxodo/default.nix
@@ -33,6 +33,7 @@ python3.pkgs.buildPythonApplication {
 
   meta = with lib; {
     description = "A Password Safe V3 compatible password vault";
+    mainProgram = "loxodo";
     homepage = "https://www.christoph-sommer.de/loxodo/";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/maliit-framework/default.nix b/pkgs/applications/misc/maliit-framework/default.nix
index ce8ebef16a894..2f30e805c5848 100644
--- a/pkgs/applications/misc/maliit-framework/default.nix
+++ b/pkgs/applications/misc/maliit-framework/default.nix
@@ -70,6 +70,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Core libraries of Maliit and server";
+    mainProgram = "maliit-server";
     homepage = "http://maliit.github.io/";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ samueldr ];
diff --git a/pkgs/applications/misc/maliit-keyboard/default.nix b/pkgs/applications/misc/maliit-keyboard/default.nix
index b662c2522df8e..3669dfe5a5b7b 100644
--- a/pkgs/applications/misc/maliit-keyboard/default.nix
+++ b/pkgs/applications/misc/maliit-keyboard/default.nix
@@ -67,6 +67,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Virtual keyboard";
+    mainProgram = "maliit-keyboard";
     homepage = "http://maliit.github.io/";
     license = with licenses; [ lgpl3Only bsd3 cc-by-30 ];
     maintainers = with maintainers; [ samueldr ];
diff --git a/pkgs/applications/misc/mbutil/default.nix b/pkgs/applications/misc/mbutil/default.nix
index 69b61afaee557..13809abe3929c 100644
--- a/pkgs/applications/misc/mbutil/default.nix
+++ b/pkgs/applications/misc/mbutil/default.nix
@@ -16,6 +16,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "An importer and exporter for MBTiles";
+    mainProgram = "mb-util";
     homepage = "https://github.com/mapbox/mbutil";
     license = licenses.bsd3;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/mediaelch/default.nix b/pkgs/applications/misc/mediaelch/default.nix
index bc85e674c575e..b1d472a605a60 100644
--- a/pkgs/applications/misc/mediaelch/default.nix
+++ b/pkgs/applications/misc/mediaelch/default.nix
@@ -70,6 +70,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://mediaelch.de/mediaelch/";
     description = "Media Manager for Kodi";
+    mainProgram = "MediaElch";
     license = licenses.lgpl3Only;
     maintainers = with maintainers; [ stunkymonkey ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/meerk40t/default.nix b/pkgs/applications/misc/meerk40t/default.nix
index b07133ecbbc2f..c1a0b41a58ac4 100644
--- a/pkgs/applications/misc/meerk40t/default.nix
+++ b/pkgs/applications/misc/meerk40t/default.nix
@@ -74,6 +74,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     changelog = "https://github.com/meerk40t/meerk40t/releases/tag/${version}";
     description = "MeerK40t LaserCutter Software";
+    mainProgram = "meerk40t";
     homepage = "https://github.com/meerk40t/meerk40t";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/applications/misc/menumaker/default.nix b/pkgs/applications/misc/menumaker/default.nix
index c0958cd235375..23ec74cd8b8d2 100644
--- a/pkgs/applications/misc/menumaker/default.nix
+++ b/pkgs/applications/misc/menumaker/default.nix
@@ -13,6 +13,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Heuristics-driven menu generator for several window managers";
+    mainProgram = "mmaker";
     homepage = "https://menumaker.sourceforge.net";
     license = licenses.bsd2;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/metadata-cleaner/default.nix b/pkgs/applications/misc/metadata-cleaner/default.nix
index 88df68f55979f..24970e7a5832c 100644
--- a/pkgs/applications/misc/metadata-cleaner/default.nix
+++ b/pkgs/applications/misc/metadata-cleaner/default.nix
@@ -57,6 +57,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Python GTK application to view and clean metadata in files, using mat2";
+    mainProgram = "metadata-cleaner";
     homepage = "https://gitlab.com/rmnvgr/metadata-cleaner";
     changelog = "https://gitlab.com/rmnvgr/metadata-cleaner/-/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ gpl3Plus cc-by-sa-40 ];
diff --git a/pkgs/applications/misc/michabo/default.nix b/pkgs/applications/misc/michabo/default.nix
index c356dc19786d1..6329bd9d2495b 100644
--- a/pkgs/applications/misc/michabo/default.nix
+++ b/pkgs/applications/misc/michabo/default.nix
@@ -43,6 +43,7 @@ in mkDerivation rec {
 
   meta = with lib; {
     description = "A native desktop app for Pleroma and Mastodon servers";
+    mainProgram = "Michabo";
     homepage = "https://git.pleroma.social/kaniini/michabo";
     license = licenses.gpl3;
     maintainers = with maintainers; [ fgaz ];
diff --git a/pkgs/applications/misc/mnamer/default.nix b/pkgs/applications/misc/mnamer/default.nix
index e928e631c07ca..fbcc9e61be45d 100644
--- a/pkgs/applications/misc/mnamer/default.nix
+++ b/pkgs/applications/misc/mnamer/default.nix
@@ -40,6 +40,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/jkwill87/mnamer";
     description = "An intelligent and highly configurable media organization utility";
+    mainProgram = "mnamer";
     license = licenses.mit;
     maintainers = with maintainers; [ urlordjames ];
   };
diff --git a/pkgs/applications/misc/mob/default.nix b/pkgs/applications/misc/mob/default.nix
index f41e927185ec1..7fb218266fa10 100644
--- a/pkgs/applications/misc/mob/default.nix
+++ b/pkgs/applications/misc/mob/default.nix
@@ -35,6 +35,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for smooth git handover";
+    mainProgram = "mob";
     homepage = "https://github.com/remotemobprogramming/mob";
     license = licenses.mit;
     maintainers = with maintainers; [ ericdallo ];
diff --git a/pkgs/applications/misc/mozphab/default.nix b/pkgs/applications/misc/mozphab/default.nix
index 6d8455e6915d9..a19297acbc856 100644
--- a/pkgs/applications/misc/mozphab/default.nix
+++ b/pkgs/applications/misc/mozphab/default.nix
@@ -71,6 +71,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Phabricator CLI from Mozilla to support submission of a series of commits";
+    mainProgram = "moz-phab";
     longDescription = ''
       moz-phab is a custom command-line tool, which communicates to
       Phabricator’s API, providing several conveniences, including support for
diff --git a/pkgs/applications/misc/mpvc/default.nix b/pkgs/applications/misc/mpvc/default.nix
index 58f6962f4c3a6..8736abb413ba5 100644
--- a/pkgs/applications/misc/mpvc/default.nix
+++ b/pkgs/applications/misc/mpvc/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A mpc-like control interface for mpv";
+    mainProgram = "mpvc";
     homepage = "https://github.com/lwilletts/mpvc";
     license = licenses.mit;
     maintainers = [ maintainers.neeasade ];
diff --git a/pkgs/applications/misc/mwic/default.nix b/pkgs/applications/misc/mwic/default.nix
index a31d6d5a90ab3..6b647aab24734 100644
--- a/pkgs/applications/misc/mwic/default.nix
+++ b/pkgs/applications/misc/mwic/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://jwilk.net/software/mwic";
     description = "spell-checker that groups possible misspellings and shows them in their contexts";
+    mainProgram = "mwic";
     license = licenses.mit;
     maintainers = with maintainers; [ matthiasbeyer ];
   };
diff --git a/pkgs/applications/misc/nerd-font-patcher/default.nix b/pkgs/applications/misc/nerd-font-patcher/default.nix
index 76bd2a44824e1..b4479f10309ee 100644
--- a/pkgs/applications/misc/nerd-font-patcher/default.nix
+++ b/pkgs/applications/misc/nerd-font-patcher/default.nix
@@ -33,6 +33,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Font patcher to generate Nerd font";
+    mainProgram = "nerd-font-patcher";
     homepage = "https://nerdfonts.com/";
     license = licenses.mit;
     maintainers = with maintainers; [ ck3d ];
diff --git a/pkgs/applications/misc/notify-osd-customizable/default.nix b/pkgs/applications/misc/notify-osd-customizable/default.nix
index 17377c6dae55f..49f6cf478fbbc 100644
--- a/pkgs/applications/misc/notify-osd-customizable/default.nix
+++ b/pkgs/applications/misc/notify-osd-customizable/default.nix
@@ -39,6 +39,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Daemon that displays passive pop-up notifications";
+    mainProgram = "notify-osd";
     homepage = "https://launchpad.net/notify-osd";
     license = licenses.gpl3;
     maintainers = [ maintainers.imalison ];
diff --git a/pkgs/applications/misc/notify-osd/default.nix b/pkgs/applications/misc/notify-osd/default.nix
index 9c0c5a3921efb..77b5d52c22cf4 100644
--- a/pkgs/applications/misc/notify-osd/default.nix
+++ b/pkgs/applications/misc/notify-osd/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Daemon that displays passive pop-up notifications";
+    mainProgram = "notify-osd";
     homepage = "https://launchpad.net/notify-osd";
     license = licenses.gpl3;
     maintainers = [ maintainers.bodil ];
diff --git a/pkgs/applications/misc/notifymuch/default.nix b/pkgs/applications/misc/notifymuch/default.nix
index e94b6f2f156b7..6ba819133eccf 100644
--- a/pkgs/applications/misc/notifymuch/default.nix
+++ b/pkgs/applications/misc/notifymuch/default.nix
@@ -43,6 +43,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Display desktop notifications for unread mail in a notmuch database";
+    mainProgram = "notifymuch";
     homepage = "https://github.com/kspi/notifymuch";
     maintainers = with maintainers; [ arjan-s ];
     license = licenses.gpl3;
diff --git a/pkgs/applications/misc/numberstation/default.nix b/pkgs/applications/misc/numberstation/default.nix
index de2c377b26c20..7a1393637dffd 100644
--- a/pkgs/applications/misc/numberstation/default.nix
+++ b/pkgs/applications/misc/numberstation/default.nix
@@ -62,6 +62,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     changelog = "https://git.sr.ht/~martijnbraam/numberstation/refs/${version}";
     description = "TOTP Authentication application for mobile";
+    mainProgram = "numberstation";
     homepage = "https://sr.ht/~martijnbraam/numberstation/";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ dotlambda ];
diff --git a/pkgs/applications/misc/nwg-bar/default.nix b/pkgs/applications/misc/nwg-bar/default.nix
index 0b4b7cd1e2557..356b1edb15aeb 100644
--- a/pkgs/applications/misc/nwg-bar/default.nix
+++ b/pkgs/applications/misc/nwg-bar/default.nix
@@ -38,6 +38,7 @@ buildGoModule rec {
   meta = with lib; {
     description =
       "GTK3-based button bar for sway and other wlroots-based compositors";
+    mainProgram = "nwg-bar";
     homepage = "https://github.com/nwg-piotr/nwg-bar";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/nwg-dock-hyprland/default.nix b/pkgs/applications/misc/nwg-dock-hyprland/default.nix
index 676af3ec58912..607dd7c22facf 100644
--- a/pkgs/applications/misc/nwg-dock-hyprland/default.nix
+++ b/pkgs/applications/misc/nwg-dock-hyprland/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "GTK3-based dock for Hyprland";
+    mainProgram = "nwg-dock-hyprland";
     homepage = "https://github.com/nwg-piotr/nwg-dock-hyprland";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/nwg-menu/default.nix b/pkgs/applications/misc/nwg-menu/default.nix
index e587396e151a8..179b4f71ae644 100644
--- a/pkgs/applications/misc/nwg-menu/default.nix
+++ b/pkgs/applications/misc/nwg-menu/default.nix
@@ -39,6 +39,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/nwg-piotr/nwg-menu";
     description = "MenuStart plugin for nwg-panel";
+    mainProgram = "nwg-menu";
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ berbiche ];
diff --git a/pkgs/applications/misc/nwg-wrapper/default.nix b/pkgs/applications/misc/nwg-wrapper/default.nix
index 2ff04c09b82e5..5b28628318961 100644
--- a/pkgs/applications/misc/nwg-wrapper/default.nix
+++ b/pkgs/applications/misc/nwg-wrapper/default.nix
@@ -31,6 +31,7 @@ python3Packages.buildPythonPackage rec {
 
   meta = with lib; {
     description = "Wrapper to display a script output or a text file content on the desktop in sway or other wlroots-based compositors";
+    mainProgram = "nwg-wrapper";
     homepage = "https://github.com/nwg-piotr/nwg-wrapper/";
     license = licenses.mit;
     maintainers = with maintainers; [ artturin ];
diff --git a/pkgs/applications/misc/octoprint/default.nix b/pkgs/applications/misc/octoprint/default.nix
index 5b42f1d08c3cf..21b74c3c4bf13 100644
--- a/pkgs/applications/misc/octoprint/default.nix
+++ b/pkgs/applications/misc/octoprint/default.nix
@@ -246,6 +246,7 @@ let
               meta = with lib; {
                 homepage = "https://octoprint.org/";
                 description = "The snappy web interface for your 3D printer";
+                mainProgram = "octoprint";
                 license = licenses.agpl3Only;
                 maintainers = with maintainers; [ abbradar gebner WhittlesJr gador ];
               };
diff --git a/pkgs/applications/misc/omegat.nix b/pkgs/applications/misc/omegat.nix
index da4de96fbce0b..5349add035ae6 100644
--- a/pkgs/applications/misc/omegat.nix
+++ b/pkgs/applications/misc/omegat.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "The free computer aided translation (CAT) tool for professionals";
+    mainProgram = "omegat";
     longDescription = ''
       OmegaT is a free and open source multiplatform Computer Assisted Translation
       tool with fuzzy matching, translation memory, keyword search, glossaries, and
diff --git a/pkgs/applications/misc/openbangla-keyboard/default.nix b/pkgs/applications/misc/openbangla-keyboard/default.nix
index 4b7e1ec8c16a9..108bb1aeff0dc 100644
--- a/pkgs/applications/misc/openbangla-keyboard/default.nix
+++ b/pkgs/applications/misc/openbangla-keyboard/default.nix
@@ -80,6 +80,7 @@ stdenv.mkDerivation rec {
   meta = {
     isIbusEngine = withIbusSupport;
     description = "An OpenSource, Unicode compliant Bengali Input Method";
+    mainProgram = "openbangla-gui";
     homepage = "https://openbangla.github.io/";
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ eclairevoyant hqurve ];
diff --git a/pkgs/applications/misc/openbrf/default.nix b/pkgs/applications/misc/openbrf/default.nix
index 63734811ff438..03b3cde0c835f 100644
--- a/pkgs/applications/misc/openbrf/default.nix
+++ b/pkgs/applications/misc/openbrf/default.nix
@@ -50,6 +50,7 @@ mkDerivation {
 
   meta = with lib; {
     description = "A tool to edit resource files (BRF)";
+    mainProgram = "openBrf";
     homepage = "https://github.com/cfcohen/openbrf";
     maintainers = with lib.maintainers; [ abbradar ];
     license = licenses.free;
diff --git a/pkgs/applications/misc/opentrack/default.nix b/pkgs/applications/misc/opentrack/default.nix
index 84edbc567b418..d28a9e52a902e 100644
--- a/pkgs/applications/misc/opentrack/default.nix
+++ b/pkgs/applications/misc/opentrack/default.nix
@@ -71,6 +71,7 @@ in
     meta = with lib; {
       homepage = "https://github.com/opentrack/opentrack";
       description = "Head tracking software for MS Windows, Linux, and Apple OSX";
+      mainProgram = "opentrack";
       changelog = "https://github.com/opentrack/opentrack/releases/tag/${version}";
       license = licenses.isc;
       maintainers = with maintainers; [zaninime];
diff --git a/pkgs/applications/misc/orca/default.nix b/pkgs/applications/misc/orca/default.nix
index fdb7d3ac98793..283970a6e75ef 100644
--- a/pkgs/applications/misc/orca/default.nix
+++ b/pkgs/applications/misc/orca/default.nix
@@ -98,6 +98,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://wiki.gnome.org/Projects/Orca";
     description = "Screen reader";
+    mainProgram = "orca";
     longDescription = ''
       A free, open source, flexible and extensible screen reader that provides
       access to the graphical desktop via speech and refreshable braille.
diff --git a/pkgs/applications/misc/overmind/default.nix b/pkgs/applications/misc/overmind/default.nix
index ec1ea90cd47ce..762dec67a61d4 100644
--- a/pkgs/applications/misc/overmind/default.nix
+++ b/pkgs/applications/misc/overmind/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/DarthSim/overmind";
     description = "Process manager for Procfile-based applications and tmux";
+    mainProgram = "overmind";
     license = with licenses; [ mit ];
     maintainers = [ maintainers.adisbladis ];
   };
diff --git a/pkgs/applications/misc/oversteer/default.nix b/pkgs/applications/misc/oversteer/default.nix
index a7567380c5f01..eb47b4225d87d 100644
--- a/pkgs/applications/misc/oversteer/default.nix
+++ b/pkgs/applications/misc/oversteer/default.nix
@@ -70,6 +70,7 @@ in stdenv.mkDerivation {
     homepage = "https://github.com/berarma/oversteer";
     changelog = "https://github.com/berarma/oversteer/releases/tag/${version}";
     description = "Steering Wheel Manager for Linux";
+    mainProgram = "oversteer";
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.srounce ];
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/pairdrop/default.nix b/pkgs/applications/misc/pairdrop/default.nix
index 7715481cffd59..f5ffafdb8015b 100644
--- a/pkgs/applications/misc/pairdrop/default.nix
+++ b/pkgs/applications/misc/pairdrop/default.nix
@@ -33,6 +33,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "Local file sharing in your browser";
+    mainProgram = "pairdrop";
     longDescription = ''
       PairDrop is a sublime alternative to AirDrop that works on all platforms.
       Send images, documents or text via peer to peer connection to devices in the same local network/Wi-Fi or to paired devices.
diff --git a/pkgs/applications/misc/pdf-quench/default.nix b/pkgs/applications/misc/pdf-quench/default.nix
index 0245fadb171a7..78151061700aa 100644
--- a/pkgs/applications/misc/pdf-quench/default.nix
+++ b/pkgs/applications/misc/pdf-quench/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication {
   meta = with lib; {
     homepage = "https://github.com/linuxerwang/pdf-quench";
     description = "A visual tool for cropping pdf files";
+    mainProgram = "pdf-quench";
     platforms = platforms.linux;
     license = licenses.gpl2;
     maintainers = with maintainers; [ flokli ];
diff --git a/pkgs/applications/misc/pdfarranger/default.nix b/pkgs/applications/misc/pdfarranger/default.nix
index 34077b8574151..2973a4b9a36cd 100644
--- a/pkgs/applications/misc/pdfarranger/default.nix
+++ b/pkgs/applications/misc/pdfarranger/default.nix
@@ -51,6 +51,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     inherit (src.meta) homepage;
     description = "Merge or split pdf documents and rotate, crop and rearrange their pages using an interactive and intuitive graphical interface";
+    mainProgram = "pdfarranger";
     platforms = platforms.linux;
     maintainers = with maintainers; [ symphorien ];
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/misc/pdfpc/default.nix b/pkgs/applications/misc/pdfpc/default.nix
index 0fa676bdfb4b7..9e36bba669617 100644
--- a/pkgs/applications/misc/pdfpc/default.nix
+++ b/pkgs/applications/misc/pdfpc/default.nix
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A presenter console with multi-monitor support for PDF files";
+    mainProgram = "pdfpc";
     homepage = "https://pdfpc.github.io/";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ pSub ];
diff --git a/pkgs/applications/misc/pdfposter/default.nix b/pkgs/applications/misc/pdfposter/default.nix
index 5261fe3dbfe2f..ff7d97969e43a 100644
--- a/pkgs/applications/misc/pdfposter/default.nix
+++ b/pkgs/applications/misc/pdfposter/default.nix
@@ -37,6 +37,7 @@ with localPython.pkgs; buildPythonApplication rec {
 
   meta = with lib; {
     description = "Split large pages of a PDF into smaller ones for poster printing";
+    mainProgram = "pdfposter";
     homepage = "https://pdfposter.readthedocs.io";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ wamserma ];
diff --git a/pkgs/applications/misc/pdfsam-basic/default.nix b/pkgs/applications/misc/pdfsam-basic/default.nix
index b56f9374bddb6..0d1e5e5f737cc 100644
--- a/pkgs/applications/misc/pdfsam-basic/default.nix
+++ b/pkgs/applications/misc/pdfsam-basic/default.nix
@@ -42,6 +42,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/torakiki/pdfsam";
     description = "Multi-platform software designed to extract pages, split, merge, mix and rotate PDF files";
+    mainProgram = "pdfsam-basic";
     sourceProvenance = with sourceTypes; [
       binaryBytecode
       binaryNativeCode
diff --git a/pkgs/applications/misc/pe-bear/default.nix b/pkgs/applications/misc/pe-bear/default.nix
index 79307f7779558..9a71d8add70e1 100644
--- a/pkgs/applications/misc/pe-bear/default.nix
+++ b/pkgs/applications/misc/pe-bear/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Portable Executable reversing tool with a friendly GUI";
+    mainProgram = "PE-bear";
     homepage = "https://hshrzd.wordpress.com/pe-bear/";
 
     license = [
diff --git a/pkgs/applications/misc/phoc/default.nix b/pkgs/applications/misc/phoc/default.nix
index e50b9787236af..deccbabe3fd47 100644
--- a/pkgs/applications/misc/phoc/default.nix
+++ b/pkgs/applications/misc/phoc/default.nix
@@ -80,6 +80,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Wayland compositor for mobile phones like the Librem 5";
+    mainProgram = "phoc";
     homepage = "https://gitlab.gnome.org/World/Phosh/phoc";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ masipcat tomfitzhenry zhaofengli ];
diff --git a/pkgs/applications/misc/pipr/default.nix b/pkgs/applications/misc/pipr/default.nix
index 2f5ba3e6d9cbf..f447ffcaeef6b 100644
--- a/pkgs/applications/misc/pipr/default.nix
+++ b/pkgs/applications/misc/pipr/default.nix
@@ -25,6 +25,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A commandline-tool to interactively write shell pipelines";
+    mainProgram = "pipr";
     homepage = "https://github.com/ElKowar/pipr";
     license = licenses.mit;
     maintainers = with maintainers; [ elkowar ];
diff --git a/pkgs/applications/misc/plank/default.nix b/pkgs/applications/misc/plank/default.nix
index 1a8f0df5e41c7..fb3226e6d8030 100644
--- a/pkgs/applications/misc/plank/default.nix
+++ b/pkgs/applications/misc/plank/default.nix
@@ -80,6 +80,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Elegant, simple, clean dock";
+    mainProgram = "plank";
     homepage = "https://launchpad.net/plank";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/plots/default.nix b/pkgs/applications/misc/plots/default.nix
index 4e6b9d24a56be..1e7db2651a106 100644
--- a/pkgs/applications/misc/plots/default.nix
+++ b/pkgs/applications/misc/plots/default.nix
@@ -56,6 +56,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Graph plotting app for GNOME";
+    mainProgram = "plots";
     longDescription = ''
       Plots is a graph plotting app for GNOME.
       Plots makes it easy to visualise mathematical formulae.
diff --git a/pkgs/applications/misc/polar-bookshelf/default.nix b/pkgs/applications/misc/polar-bookshelf/default.nix
index ad731c1050c9d..983dc81d1790d 100644
--- a/pkgs/applications/misc/polar-bookshelf/default.nix
+++ b/pkgs/applications/misc/polar-bookshelf/default.nix
@@ -122,6 +122,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://getpolarized.io/";
     description = "Personal knowledge repository for PDF and web content supporting incremental reading and document annotation";
+    mainProgram = "polar-desktop-app";
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     license = lib.licenses.gpl3Only;
     platforms = lib.platforms.linux;
diff --git a/pkgs/applications/misc/polar-bookshelf1/default.nix b/pkgs/applications/misc/polar-bookshelf1/default.nix
index 41b7fb786abd4..a4ff885a71b8a 100644
--- a/pkgs/applications/misc/polar-bookshelf1/default.nix
+++ b/pkgs/applications/misc/polar-bookshelf1/default.nix
@@ -109,6 +109,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://getpolarized.io/";
     description = "Personal knowledge repository for PDF and web content supporting incremental reading and document annotation";
+    mainProgram = "polar-bookshelf";
     license = lib.licenses.gpl3Only;
     maintainers = [ lib.maintainers.dansbandit ];
     platforms = lib.platforms.linux;
diff --git a/pkgs/applications/misc/pot/default.nix b/pkgs/applications/misc/pot/default.nix
index 33e6c18932de6..fdc0a6b6c4149 100644
--- a/pkgs/applications/misc/pot/default.nix
+++ b/pkgs/applications/misc/pot/default.nix
@@ -128,6 +128,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A cross-platform translation software";
+    mainProgram = "pot";
     homepage = "https://pot.pylogmon.com";
     platforms = platforms.linux;
     license = licenses.gpl3Only;
diff --git a/pkgs/applications/misc/projectlibre/default.nix b/pkgs/applications/misc/projectlibre/default.nix
index ceb61d71866c3..52e56ed0623c6 100644
--- a/pkgs/applications/misc/projectlibre/default.nix
+++ b/pkgs/applications/misc/projectlibre/default.nix
@@ -39,6 +39,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.projectlibre.com/";
     description = "Project-Management Software similar to MS-Project";
+    mainProgram = "projectlibre";
     maintainers = [ maintainers.Mogria ];
     license = licenses.cpal10;
   };
diff --git a/pkgs/applications/misc/ptask/default.nix b/pkgs/applications/misc/ptask/default.nix
index 7390037204476..67a4bca94cf89 100644
--- a/pkgs/applications/misc/ptask/default.nix
+++ b/pkgs/applications/misc/ptask/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://wpitchoune.net/ptask/";
     description = "GTK-based GUI for taskwarrior";
+    mainProgram = "ptask";
     license = licenses.gpl2;
     maintainers = [ maintainers.spacefrogg ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/pure-maps/default.nix b/pkgs/applications/misc/pure-maps/default.nix
index 1789771ae5063..1531d6edb7a82 100644
--- a/pkgs/applications/misc/pure-maps/default.nix
+++ b/pkgs/applications/misc/pure-maps/default.nix
@@ -36,6 +36,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Display vector and raster maps, places, routes, and provide navigation instructions with a flexible selection of data and service providers";
+    mainProgram = "pure-maps";
     homepage = "https://github.com/rinigus/pure-maps";
     changelog = "https://github.com/rinigus/pure-maps/blob/${src.rev}/NEWS.md";
     license = licenses.gpl3Only;
diff --git a/pkgs/applications/misc/pytrainer/default.nix b/pkgs/applications/misc/pytrainer/default.nix
index 22ee11082f15b..6d907fab0db46 100644
--- a/pkgs/applications/misc/pytrainer/default.nix
+++ b/pkgs/applications/misc/pytrainer/default.nix
@@ -91,6 +91,7 @@ in python.pkgs.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/pytrainer/pytrainer";
     description = "Application for logging and graphing sporting excursions";
+    mainProgram = "pytrainer";
     maintainers = with maintainers; [ rycee dotlambda ];
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/qMasterPassword/default.nix b/pkgs/applications/misc/qMasterPassword/default.nix
index 436c1fc70377a..e6a672040824b 100644
--- a/pkgs/applications/misc/qMasterPassword/default.nix
+++ b/pkgs/applications/misc/qMasterPassword/default.nix
@@ -60,6 +60,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Stateless Master Password Manager";
+    mainProgram = "qMasterPassword";
     longDescription = ''
       Access all your passwords using only a single master password. But in
       contrast to other managers it does not store any passwords: Unique
diff --git a/pkgs/applications/misc/qelectrotech/default.nix b/pkgs/applications/misc/qelectrotech/default.nix
index 3b97a69de2269..b4d8bd3ab182b 100644
--- a/pkgs/applications/misc/qelectrotech/default.nix
+++ b/pkgs/applications/misc/qelectrotech/default.nix
@@ -69,6 +69,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Free software to create electric diagrams";
+    mainProgram = "qelectrotech";
     homepage = "https://qelectrotech.org/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ yvesf ];
diff --git a/pkgs/applications/misc/qolibri/default.nix b/pkgs/applications/misc/qolibri/default.nix
index af7cc7e01a6f1..c0530dfe78e30 100644
--- a/pkgs/applications/misc/qolibri/default.nix
+++ b/pkgs/applications/misc/qolibri/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/ludios/qolibri";
     description = "EPWING reader for viewing Japanese dictionaries";
+    mainProgram = "qolibri";
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
     license = licenses.gpl2;
diff --git a/pkgs/applications/misc/qsudo/default.nix b/pkgs/applications/misc/qsudo/default.nix
index d73c3793871a1..a573ba814a427 100644
--- a/pkgs/applications/misc/qsudo/default.nix
+++ b/pkgs/applications/misc/qsudo/default.nix
@@ -34,6 +34,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Graphical sudo utility from Project Trident";
+    mainProgram = "qsudo";
     homepage = "https://github.com/project-trident/qsudo";
     license = licenses.bsd2;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/qt-box-editor/default.nix b/pkgs/applications/misc/qt-box-editor/default.nix
index 7a84f85a9e21e..937641021a5c2 100644
--- a/pkgs/applications/misc/qt-box-editor/default.nix
+++ b/pkgs/applications/misc/qt-box-editor/default.nix
@@ -33,6 +33,7 @@ mkDerivation {
 
   meta = with lib; {
     description = "Editor of tesseract-ocr box files";
+    mainProgram = "qt-box-editor-1.12rc1";
     homepage = "https://github.com/zdenop/qt-box-editor";
     license = licenses.asl20;
     maintainers = [ maintainers.costrouc ];
diff --git a/pkgs/applications/misc/qt-video-wlr/default.nix b/pkgs/applications/misc/qt-video-wlr/default.nix
index f8020fbdb4475..4ebd059c9274c 100644
--- a/pkgs/applications/misc/qt-video-wlr/default.nix
+++ b/pkgs/applications/misc/qt-video-wlr/default.nix
@@ -39,6 +39,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Qt pip-mode-like video player for wlroots-based wayland compositors";
+    mainProgram = "qt-video-wlr";
     homepage = "https://github.com/xdavidwu/qt-video-wlr";
     license = licenses.mit;
     maintainers = with maintainers; [ fionera rewine ];
diff --git a/pkgs/applications/misc/qtbitcointrader/default.nix b/pkgs/applications/misc/qtbitcointrader/default.nix
index d158c111c87ff..ce265d5f67fd4 100644
--- a/pkgs/applications/misc/qtbitcointrader/default.nix
+++ b/pkgs/applications/misc/qtbitcointrader/default.nix
@@ -27,6 +27,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Bitcoin trading client";
+    mainProgram = "QtBitcoinTrader";
     homepage = "https://centrabit.com/";
     license = licenses.gpl3;
     platforms = qt5.qtbase.meta.platforms;
diff --git a/pkgs/applications/misc/qtpass/default.nix b/pkgs/applications/misc/qtpass/default.nix
index ad940a77f99a8..26807bc42a1cd 100644
--- a/pkgs/applications/misc/qtpass/default.nix
+++ b/pkgs/applications/misc/qtpass/default.nix
@@ -54,6 +54,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A multi-platform GUI for pass, the standard unix password manager";
+    mainProgram = "qtpass";
     homepage = "https://qtpass.org";
     license = licenses.gpl3;
     maintainers = [ maintainers.hrdinka ];
diff --git a/pkgs/applications/misc/raiseorlaunch/default.nix b/pkgs/applications/misc/raiseorlaunch/default.nix
index 9c5f35be9a9e5..455b6df4d0546 100644
--- a/pkgs/applications/misc/raiseorlaunch/default.nix
+++ b/pkgs/applications/misc/raiseorlaunch/default.nix
@@ -19,6 +19,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     maintainers = with maintainers; [ winpat ];
     description = "A run-or-raise-application-launcher for i3 window manager";
+    mainProgram = "raiseorlaunch";
     homepage = "https://github.com/open-dynaMIX/raiseorlaunch";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/razergenie/default.nix b/pkgs/applications/misc/razergenie/default.nix
index 8f78c0becaf5d..9b18c60447e39 100644
--- a/pkgs/applications/misc/razergenie/default.nix
+++ b/pkgs/applications/misc/razergenie/default.nix
@@ -34,6 +34,7 @@ in stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://github.com/z3ntu/RazerGenie";
     description = "Qt application for configuring your Razer devices under GNU/Linux";
+    mainProgram = "razergenie";
     license = licenses.gpl3;
     maintainers = with maintainers; [ f4814n Mogria ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/regextester/default.nix b/pkgs/applications/misc/regextester/default.nix
index e5900a050efc5..05daa180d0297 100644
--- a/pkgs/applications/misc/regextester/default.nix
+++ b/pkgs/applications/misc/regextester/default.nix
@@ -52,6 +52,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A desktop application to test regular expressions interactively";
+    mainProgram = "com.github.artemanufrij.regextester";
     homepage = "https://github.com/artemanufrij/regextester";
     maintainers = with maintainers; [ samdroid-apps ];
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/remarkable/restream/default.nix b/pkgs/applications/misc/remarkable/restream/default.nix
index c5958aff724c5..c9a60d4ce2e8a 100644
--- a/pkgs/applications/misc/remarkable/restream/default.nix
+++ b/pkgs/applications/misc/remarkable/restream/default.nix
@@ -51,6 +51,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "reMarkable screen sharing over SSH";
+    mainProgram = "restream";
     homepage = "https://github.com/rien/reStream";
     license = licenses.mit;
     maintainers = [ maintainers.cpcloud ];
diff --git a/pkgs/applications/misc/remarkable/rmview/default.nix b/pkgs/applications/misc/remarkable/rmview/default.nix
index 24627025ca9ff..52ad1dce2688e 100644
--- a/pkgs/applications/misc/remarkable/rmview/default.nix
+++ b/pkgs/applications/misc/remarkable/rmview/default.nix
@@ -24,6 +24,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Fast live viewer for reMarkable 1 and 2";
+    mainProgram = "rmview";
     homepage = "https://github.com/bordaigorl/rmview";
     license = licenses.gpl3Only;
     maintainers = [ maintainers.nickhu ];
diff --git a/pkgs/applications/misc/remontoire/default.nix b/pkgs/applications/misc/remontoire/default.nix
index fdabc149d6db8..0aabaababf6a5 100644
--- a/pkgs/applications/misc/remontoire/default.nix
+++ b/pkgs/applications/misc/remontoire/default.nix
@@ -50,6 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "A small GTK app for presenting keybinding hints";
+    mainProgram = "remontoire";
     homepage = "https://github.com/regolith-linux/remontoire";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/resp-app/default.nix b/pkgs/applications/misc/resp-app/default.nix
index b95bc98fdd3ac..9748ca63c2810 100644
--- a/pkgs/applications/misc/resp-app/default.nix
+++ b/pkgs/applications/misc/resp-app/default.nix
@@ -95,6 +95,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Cross-platform Developer GUI for Redis";
+    mainProgram = "resp";
     homepage = "https://resp.app/";
     license = licenses.gpl3Only;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/rofi-screenshot/default.nix b/pkgs/applications/misc/rofi-screenshot/default.nix
index fedb03fa613d6..6b1861dc8fc59 100644
--- a/pkgs/applications/misc/rofi-screenshot/default.nix
+++ b/pkgs/applications/misc/rofi-screenshot/default.nix
@@ -50,6 +50,7 @@ stdenv.mkDerivation rec {
   meta = {
     description =
       "Use rofi to perform various types of screenshots and screen captures";
+    mainProgram = "rofi-screenshot";
     homepage = "https://github.com/ceuk/rofi-screenshot";
     maintainers = with lib.maintainers; [ zopieux ];
     platforms = lib.platforms.all;
diff --git a/pkgs/applications/misc/rofimoji/default.nix b/pkgs/applications/misc/rofimoji/default.nix
index f620bb7bd8325..7979232265468 100644
--- a/pkgs/applications/misc/rofimoji/default.nix
+++ b/pkgs/applications/misc/rofimoji/default.nix
@@ -50,6 +50,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "A simple emoji and character picker for rofi";
+    mainProgram = "rofimoji";
     homepage = "https://github.com/fdw/rofimoji";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/rootbar/default.nix b/pkgs/applications/misc/rootbar/default.nix
index ee536ca7c50ff..41582e1b413c2 100644
--- a/pkgs/applications/misc/rootbar/default.nix
+++ b/pkgs/applications/misc/rootbar/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://hg.sr.ht/~scoopta/rootbar";
     description = "A bar for Wayland WMs";
+    mainProgram = "rootbar";
     longDescription = ''
       Root Bar is a bar for wlroots based wayland compositors such as sway and
       was designed to address the lack of good bars for wayland.
diff --git a/pkgs/applications/misc/rsibreak/default.nix b/pkgs/applications/misc/rsibreak/default.nix
index eb0944fd2a033..24d0a0eaa6ab9 100644
--- a/pkgs/applications/misc/rsibreak/default.nix
+++ b/pkgs/applications/misc/rsibreak/default.nix
@@ -18,6 +18,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Takes care of your health and regularly breaks your work to avoid repetitive strain injury (RSI)";
+    mainProgram = "rsibreak";
     license = licenses.gpl2;
     homepage = "https://www.kde.org/applications/utilities/rsibreak/";
     maintainers = with maintainers; [ vandenoever ];
diff --git a/pkgs/applications/misc/schemes/default.nix b/pkgs/applications/misc/schemes/default.nix
index 41ec97f8b1761..b3653d50646fb 100644
--- a/pkgs/applications/misc/schemes/default.nix
+++ b/pkgs/applications/misc/schemes/default.nix
@@ -46,6 +46,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Edit GtkSourceView style-schemes for an application or platform";
+    mainProgram = "schemes";
     homepage = "https://gitlab.gnome.org/chergert/schemes";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ _0xMRTT ];
diff --git a/pkgs/applications/misc/scli/default.nix b/pkgs/applications/misc/scli/default.nix
index e493b0188032d..4c11333a4a01b 100644
--- a/pkgs/applications/misc/scli/default.nix
+++ b/pkgs/applications/misc/scli/default.nix
@@ -51,6 +51,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Simple terminal user interface for Signal";
+    mainProgram = "scli";
     homepage = "https://github.com/isamert/scli";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/applications/misc/seashells/default.nix b/pkgs/applications/misc/seashells/default.nix
index 4ece0036c5304..37a90478710ca 100644
--- a/pkgs/applications/misc/seashells/default.nix
+++ b/pkgs/applications/misc/seashells/default.nix
@@ -16,6 +16,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://seashells.io/";
     description = "Pipe command-line programs to seashells.io";
+    mainProgram = "seashells";
     longDescription = ''
       Official cient for seashells.io, which allows you to view
       command-line output on the web, in real-time.
diff --git a/pkgs/applications/misc/selectdefaultapplication/default.nix b/pkgs/applications/misc/selectdefaultapplication/default.nix
index 39470d2b0edd5..700ac3e75884e 100644
--- a/pkgs/applications/misc/selectdefaultapplication/default.nix
+++ b/pkgs/applications/misc/selectdefaultapplication/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A very simple application that lets you define default applications on Linux in a sane way";
+    mainProgram = "selectdefaultapplication";
     homepage = "https://github.com/sandsmark/selectdefaultapplication";
     maintainers = with maintainers; [ nsnelson ];
     license = licenses.gpl2;
diff --git a/pkgs/applications/misc/sent/default.nix b/pkgs/applications/misc/sent/default.nix
index fcf021a5ac7f4..dc681b7385dc6 100644
--- a/pkgs/applications/misc/sent/default.nix
+++ b/pkgs/applications/misc/sent/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A simple plaintext presentation tool";
+    mainProgram = "sent";
     homepage = "https://tools.suckless.org/sent/";
     license = licenses.isc;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/serial-studio/default.nix b/pkgs/applications/misc/serial-studio/default.nix
index 1e205618f400b..129f3d49eb75e 100644
--- a/pkgs/applications/misc/serial-studio/default.nix
+++ b/pkgs/applications/misc/serial-studio/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Multi-purpose serial data visualization & processing program";
+    mainProgram = "serial-studio";
     homepage = "https://serial-studio.github.io/";
     license = licenses.mit;
     maintainers = with maintainers; [ sikmir ];
diff --git a/pkgs/applications/misc/sfwbar/default.nix b/pkgs/applications/misc/sfwbar/default.nix
index bd46c449ffabd..9f467fdf6a2d3 100644
--- a/pkgs/applications/misc/sfwbar/default.nix
+++ b/pkgs/applications/misc/sfwbar/default.nix
@@ -50,6 +50,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/LBCrion/sfwbar";
     description = "A flexible taskbar application for wayland compositors, designed with a stacking layout in mind";
+    mainProgram = "sfwbar";
     platforms = platforms.linux;
     maintainers = with maintainers; [ NotAShelf ];
     license = licenses.gpl3Only;
diff --git a/pkgs/applications/misc/shell-genie/default.nix b/pkgs/applications/misc/shell-genie/default.nix
index dd6c723121d4b..63294e4048210 100644
--- a/pkgs/applications/misc/shell-genie/default.nix
+++ b/pkgs/applications/misc/shell-genie/default.nix
@@ -44,6 +44,7 @@ buildPythonPackage rec {
 
   meta = with lib; {
     description = "Describe your shell commands in natural language";
+    mainProgram = "shell-genie";
     homepage = "https://github.com/dylanjcastillo/shell-genie";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
diff --git a/pkgs/applications/misc/shipments/default.nix b/pkgs/applications/misc/shipments/default.nix
index dccd5dc89c69a..792f997c5f850 100644
--- a/pkgs/applications/misc/shipments/default.nix
+++ b/pkgs/applications/misc/shipments/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Postal package tracking application";
+    mainProgram = "shipments";
     homepage = "https://sr.ht/~martijnbraam/shipments/";
     changelog = "https://git.sr.ht/~martijnbraam/shipments/refs/${version}";
     license = licenses.lgpl3;
diff --git a/pkgs/applications/misc/sigal/default.nix b/pkgs/applications/misc/sigal/default.nix
index 145c34b7f8c0b..1e82fce078986 100644
--- a/pkgs/applications/misc/sigal/default.nix
+++ b/pkgs/applications/misc/sigal/default.nix
@@ -51,6 +51,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Yet another simple static gallery generator";
+    mainProgram = "sigal";
     homepage = "http://sigal.saimon.org/";
     license = licenses.mit;
     maintainers = with maintainers; [ domenkozar matthiasbeyer ];
diff --git a/pkgs/applications/misc/siglo/default.nix b/pkgs/applications/misc/siglo/default.nix
index 520f4330e5037..1231d2fd47fd9 100644
--- a/pkgs/applications/misc/siglo/default.nix
+++ b/pkgs/applications/misc/siglo/default.nix
@@ -61,6 +61,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "GTK app to sync InfiniTime watch with PinePhone";
+    mainProgram = "siglo";
     homepage = "https://github.com/theironrobin/siglo";
     changelog = "https://github.com/theironrobin/siglo/tags/v${version}";
     license = licenses.mpl20;
diff --git a/pkgs/applications/misc/sioyek/default.nix b/pkgs/applications/misc/sioyek/default.nix
index 3a59a2542eaf2..3cdec7ec291f7 100644
--- a/pkgs/applications/misc/sioyek/default.nix
+++ b/pkgs/applications/misc/sioyek/default.nix
@@ -86,6 +86,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     homepage = "https://sioyek.info/";
     description = "A PDF viewer designed for research papers and technical books";
+    mainProgram = "sioyek";
     changelog = "https://github.com/ahrm/sioyek/releases/tag/v${finalAttrs.version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ podocarp ];
diff --git a/pkgs/applications/misc/skytemple/default.nix b/pkgs/applications/misc/skytemple/default.nix
index 945ea6e25bdd4..b054be4be0948 100644
--- a/pkgs/applications/misc/skytemple/default.nix
+++ b/pkgs/applications/misc/skytemple/default.nix
@@ -65,6 +65,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/SkyTemple/skytemple";
     description = "ROM hacking tool for Pokémon Mystery Dungeon Explorers of Sky";
+    mainProgram = "skytemple";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ xfix marius851000 ];
   };
diff --git a/pkgs/applications/misc/sl1-to-photon/default.nix b/pkgs/applications/misc/sl1-to-photon/default.nix
index c924a3ec2bb54..e76dff0ca5705 100644
--- a/pkgs/applications/misc/sl1-to-photon/default.nix
+++ b/pkgs/applications/misc/sl1-to-photon/default.nix
@@ -34,6 +34,7 @@ in
     maintainers = [ maintainers.cab404 ];
     license = licenses.gpl3Plus;
     description = "Tool for converting Slic3r PE's SL1 files to Photon files for the Anycubic Photon 3D-Printer";
+    mainProgram = "sl1-to-photon";
     homepage = "https://github.com/fookatchu/SL1toPhoton";
   };
 
diff --git a/pkgs/applications/misc/slic3r/default.nix b/pkgs/applications/misc/slic3r/default.nix
index 923e480c1f0f6..5f0d83b078c8b 100644
--- a/pkgs/applications/misc/slic3r/default.nix
+++ b/pkgs/applications/misc/slic3r/default.nix
@@ -89,6 +89,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "G-code generator for 3D printers";
+    mainProgram = "slic3r";
     longDescription = ''
       Slic3r is the tool you need to convert a digital 3D model into printing
       instructions for your 3D printer. It cuts the model into horizontal
diff --git a/pkgs/applications/misc/snapper-gui/default.nix b/pkgs/applications/misc/snapper-gui/default.nix
index 4c60e2947b973..c82b0813f78ba 100644
--- a/pkgs/applications/misc/snapper-gui/default.nix
+++ b/pkgs/applications/misc/snapper-gui/default.nix
@@ -34,6 +34,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Graphical interface for snapper";
+    mainProgram = "snapper-gui";
     longDescription = ''
       A graphical user interface for the tool snapper for Linux filesystem
       snapshot management. It can compare snapshots and revert differences between snapshots.
diff --git a/pkgs/applications/misc/sqls/default.nix b/pkgs/applications/misc/sqls/default.nix
index b6d4f3f180ebe..5851ea49289e5 100644
--- a/pkgs/applications/misc/sqls/default.nix
+++ b/pkgs/applications/misc/sqls/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/sqls-server/sqls";
     description = "SQL language server written in Go";
+    mainProgram = "sqls";
     license = licenses.mit;
     maintainers = [ maintainers.marsam ];
   };
diff --git a/pkgs/applications/misc/sticky/default.nix b/pkgs/applications/misc/sticky/default.nix
index 6571bca3bfa60..9e9df71ddf9ac 100644
--- a/pkgs/applications/misc/sticky/default.nix
+++ b/pkgs/applications/misc/sticky/default.nix
@@ -78,6 +78,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A sticky notes app for the linux desktop";
+    mainProgram = "sticky";
     homepage = "https://github.com/linuxmint/sticky";
     license = licenses.gpl2Only;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/stylish/default.nix b/pkgs/applications/misc/stylish/default.nix
index b1fed22b7ffe7..8dce6409bb7c4 100644
--- a/pkgs/applications/misc/stylish/default.nix
+++ b/pkgs/applications/misc/stylish/default.nix
@@ -45,6 +45,7 @@ stdenvNoCC.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/thevinter/styli.sh";
     description = "A shell script to manage wallpapers";
+    mainProgram = "styli.sh";
     longDescription = ''
       Styli.sh is a Bash script that aims to automate the tedious process
       of finding new wallpapers, downloading and switching them via the
diff --git a/pkgs/applications/misc/subsurface/default.nix b/pkgs/applications/misc/subsurface/default.nix
index 6831cea6c4f31..fb028c7447511 100644
--- a/pkgs/applications/misc/subsurface/default.nix
+++ b/pkgs/applications/misc/subsurface/default.nix
@@ -140,6 +140,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A divelog program";
+    mainProgram = "subsurface";
     longDescription = ''
       Subsurface can track single- and multi-tank dives using air, Nitrox or TriMix.
       It allows tracking of dive locations including GPS coordinates (which can also
diff --git a/pkgs/applications/misc/sway-launcher-desktop/default.nix b/pkgs/applications/misc/sway-launcher-desktop/default.nix
index 525e25ae7e063..f377e493dfd9b 100644
--- a/pkgs/applications/misc/sway-launcher-desktop/default.nix
+++ b/pkgs/applications/misc/sway-launcher-desktop/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "TUI Application launcher with Desktop Entry support.";
+    mainProgram = "sway-launcher-desktop";
     longDescription = ''
       This is a TUI-based launcher menu made with bash and the amazing fzf.
       Despite its name, it does not (read: no longer) depend on the Sway window manager
diff --git a/pkgs/applications/misc/system76-keyboard-configurator/default.nix b/pkgs/applications/misc/system76-keyboard-configurator/default.nix
index 737c713fb79c8..94dc95a466cd4 100644
--- a/pkgs/applications/misc/system76-keyboard-configurator/default.nix
+++ b/pkgs/applications/misc/system76-keyboard-configurator/default.nix
@@ -37,6 +37,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Keyboard configuration application for System76 keyboards and laptops";
+    mainProgram = "system76-keyboard-configurator";
     homepage = "https://github.com/pop-os/keyboard-configurator";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ mirrexagon ];
diff --git a/pkgs/applications/misc/tasknc/default.nix b/pkgs/applications/misc/tasknc/default.nix
index 5250581762b08..236c81da562c0 100644
--- a/pkgs/applications/misc/tasknc/default.nix
+++ b/pkgs/applications/misc/tasknc/default.nix
@@ -46,6 +46,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/lharding/tasknc";
     description = "A ncurses wrapper around taskwarrior";
+    mainProgram = "tasknc";
     maintainers = with maintainers; [ matthiasbeyer infinisil ];
     platforms = platforms.linux; # Cannot test others
     license = licenses.mit;
diff --git a/pkgs/applications/misc/taskopen/default.nix b/pkgs/applications/misc/taskopen/default.nix
index 54361a0fbbd58..ee40e19261a98 100644
--- a/pkgs/applications/misc/taskopen/default.nix
+++ b/pkgs/applications/misc/taskopen/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Script for taking notes and open urls with taskwarrior";
+    mainProgram = "taskopen";
     homepage = "https://github.com/ValiValpas/taskopen";
     platforms = platforms.linux;
     license = licenses.gpl2Plus;
diff --git a/pkgs/applications/misc/tdrop/default.nix b/pkgs/applications/misc/tdrop/default.nix
index 34c01a197591e..e39dd24623216 100644
--- a/pkgs/applications/misc/tdrop/default.nix
+++ b/pkgs/applications/misc/tdrop/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A Glorified WM-Independent Dropdown Creator";
+    mainProgram = "tdrop";
     homepage = "https://github.com/noctuid/tdrop";
     license = licenses.bsd2;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/tellico/default.nix b/pkgs/applications/misc/tellico/default.nix
index 52b513b89d6db..b990f0ddb0d23 100644
--- a/pkgs/applications/misc/tellico/default.nix
+++ b/pkgs/applications/misc/tellico/default.nix
@@ -61,6 +61,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Collection management software, free and simple";
+    mainProgram = "tellico";
     homepage = "https://tellico-project.org/";
     license = with licenses; [ gpl2Only gpl3Only lgpl2Only ];
     maintainers = with maintainers; [ numkem ];
diff --git a/pkgs/applications/misc/termdown/default.nix b/pkgs/applications/misc/termdown/default.nix
index f28bd665a5e16..d2d592dce7e9d 100644
--- a/pkgs/applications/misc/termdown/default.nix
+++ b/pkgs/applications/misc/termdown/default.nix
@@ -22,6 +22,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Starts a countdown to or from TIMESPEC";
+    mainProgram = "termdown";
     longDescription = "Countdown timer and stopwatch in your terminal";
     homepage = "https://github.com/trehn/termdown";
     license = licenses.gpl3;
diff --git a/pkgs/applications/misc/termpdf.py/default.nix b/pkgs/applications/misc/termpdf.py/default.nix
index e51f7633e013a..244bfee240329 100644
--- a/pkgs/applications/misc/termpdf.py/default.nix
+++ b/pkgs/applications/misc/termpdf.py/default.nix
@@ -32,6 +32,7 @@ buildPythonApplication {
       A graphical pdf (and epub, cbz, ...) reader that works
       inside the kitty terminal.
     '';
+    mainProgram = "termpdf.py";
     homepage = "https://github.com/dsanson/termpdf.py";
     maintainers = with maintainers; [ teto ];
     license = licenses.mit;
diff --git a/pkgs/applications/misc/themechanger/default.nix b/pkgs/applications/misc/themechanger/default.nix
index 945bd8de5420b..652fe267852a9 100644
--- a/pkgs/applications/misc/themechanger/default.nix
+++ b/pkgs/applications/misc/themechanger/default.nix
@@ -53,6 +53,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/ALEX11BR/ThemeChanger";
     description = "A theme changing utility for Linux";
+    mainProgram = "themechanger";
     longDescription = ''
       This app is a theme changing utility for Linux, BSDs, and whatnots.
       It lets the user change GTK 2/3/4, Kvantum, icon and cursor themes, edit GTK CSS with live preview, and set some related options.
diff --git a/pkgs/applications/misc/thinking-rock/default.nix b/pkgs/applications/misc/thinking-rock/default.nix
index bf53848b5d38e..2c31d2b5725d7 100644
--- a/pkgs/applications/misc/thinking-rock/default.nix
+++ b/pkgs/applications/misc/thinking-rock/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Task management system";
+    mainProgram = "thinkingrock";
     homepage = "http://www.thinkingrock.com.au/";
     license = licenses.cddl;
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/tipp10/default.nix b/pkgs/applications/misc/tipp10/default.nix
index 76ea8fb7fc0ef..d61e0deabbd7d 100644
--- a/pkgs/applications/misc/tipp10/default.nix
+++ b/pkgs/applications/misc/tipp10/default.nix
@@ -17,6 +17,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Learn and train typing with the ten-finger system";
+    mainProgram = "tipp10";
     homepage = "https://gitlab.com/tipp10/tipp10";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/applications/misc/tiv/default.nix b/pkgs/applications/misc/tiv/default.nix
index 30117180b74cb..4bfb705ae8612 100644
--- a/pkgs/applications/misc/tiv/default.nix
+++ b/pkgs/applications/misc/tiv/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/stefanhaustein/TerminalImageViewer";
     description = "Small C++ program to display images in a (modern) terminal using RGB ANSI codes and unicode block graphics characters";
+    mainProgram = "tiv";
     license = licenses.asl20;
     maintainers = with maintainers; [ magnetophon ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/applications/misc/toot/default.nix b/pkgs/applications/misc/toot/default.nix
index dd90ffe370e6e..496644ff4d42f 100644
--- a/pkgs/applications/misc/toot/default.nix
+++ b/pkgs/applications/misc/toot/default.nix
@@ -27,6 +27,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Mastodon CLI interface";
+    mainProgram = "toot";
     homepage    = "https://github.com/ihabunek/toot";
     license     = licenses.gpl3;
     maintainers = [ maintainers.matthiasbeyer ];
diff --git a/pkgs/applications/misc/topydo/default.nix b/pkgs/applications/misc/topydo/default.nix
index 9ece11043fa06..59e93dcb5dea8 100644
--- a/pkgs/applications/misc/topydo/default.nix
+++ b/pkgs/applications/misc/topydo/default.nix
@@ -44,6 +44,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A cli todo application compatible with the todo.txt format";
+    mainProgram = "topydo";
     homepage = "https://github.com/topydo/topydo";
     changelog = "https://github.com/topydo/topydo/blob/${src.rev}/CHANGES.md";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/misc/tpmmanager/default.nix b/pkgs/applications/misc/tpmmanager/default.nix
index 48ff9675a78d4..90d1cc01ffb46 100644
--- a/pkgs/applications/misc/tpmmanager/default.nix
+++ b/pkgs/applications/misc/tpmmanager/default.nix
@@ -46,6 +46,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://projects.sirrix.com/trac/tpmmanager";
     description = "Tool for managing the TPM";
+    mainProgram = "tpmmanager";
     license = lib.licenses.gpl2;
     maintainers = with lib.maintainers; [ ];
     platforms = with lib.platforms; linux;
diff --git a/pkgs/applications/misc/tuhi/default.nix b/pkgs/applications/misc/tuhi/default.nix
index 1b26f455649a3..b3334c59c4a0a 100644
--- a/pkgs/applications/misc/tuhi/default.nix
+++ b/pkgs/applications/misc/tuhi/default.nix
@@ -56,6 +56,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "DBus daemon to access Wacom SmartPad devices";
+    mainProgram = "tuhi";
     homepage = "https://github.com/tuhiproject/tuhi";
     license = licenses.gpl2;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/tuir/default.nix b/pkgs/applications/misc/tuir/default.nix
index d4188829d40ba..a1c4f60c4e65a 100644
--- a/pkgs/applications/misc/tuir/default.nix
+++ b/pkgs/applications/misc/tuir/default.nix
@@ -25,6 +25,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Browse Reddit from your Terminal (fork of rtv)";
+    mainProgram = "tuir";
     homepage = "https://gitlab.com/ajak/tuir/";
     license = licenses.mit;
     maintainers = with maintainers; [ Br1ght0ne matthiasbeyer ];
diff --git a/pkgs/applications/misc/twitch-chat-downloader/default.nix b/pkgs/applications/misc/twitch-chat-downloader/default.nix
index 61fb052507127..a602c31008ded 100644
--- a/pkgs/applications/misc/twitch-chat-downloader/default.nix
+++ b/pkgs/applications/misc/twitch-chat-downloader/default.nix
@@ -31,6 +31,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Twitch Chat Downloader";
+    mainProgram = "tcd";
     homepage = "https://github.com/TheDrHax/Twitch-Chat-Downloader";
     license = licenses.mit;
     maintainers = with maintainers; [ marsam ];
diff --git a/pkgs/applications/misc/tzupdate/default.nix b/pkgs/applications/misc/tzupdate/default.nix
index 7c49696141c65..7ca8c9f97345d 100644
--- a/pkgs/applications/misc/tzupdate/default.nix
+++ b/pkgs/applications/misc/tzupdate/default.nix
@@ -16,6 +16,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Update timezone information based on geoip";
+    mainProgram = "tzupdate";
     homepage = "https://github.com/cdown/tzupdate";
     maintainers = [ maintainers.michaelpj ];
     license = licenses.unlicense;
diff --git a/pkgs/applications/misc/ubpm/default.nix b/pkgs/applications/misc/ubpm/default.nix
index 6e0d7f7f25f53..02e8411999fef 100644
--- a/pkgs/applications/misc/ubpm/default.nix
+++ b/pkgs/applications/misc/ubpm/default.nix
@@ -44,6 +44,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     homepage = "https://codeberg.org/LazyT/ubpm";
     description = "Universal Blood Pressure Manager";
+    mainProgram = "ubpm";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ kurnevsky ];
   };
diff --git a/pkgs/applications/misc/valent/default.nix b/pkgs/applications/misc/valent/default.nix
index fbd93fe504cce..1dad31d2539cf 100644
--- a/pkgs/applications/misc/valent/default.nix
+++ b/pkgs/applications/misc/valent/default.nix
@@ -62,6 +62,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "An implementation of the KDE Connect protocol, built on GNOME platform libraries";
+    mainProgram = "valent";
     longDescription = ''
       Note that you have to open firewall ports for other devices
       to connect to it. Use either:
diff --git a/pkgs/applications/misc/variety/default.nix b/pkgs/applications/misc/variety/default.nix
index cf0272f075e26..e26496718f39c 100644
--- a/pkgs/applications/misc/variety/default.nix
+++ b/pkgs/applications/misc/variety/default.nix
@@ -82,6 +82,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/varietywalls/variety";
     description = "A wallpaper manager for Linux systems";
+    mainProgram = "variety";
     longDescription = ''
       Variety is a wallpaper manager for Linux systems. It supports numerous
       desktops and wallpaper sources, including local files and online services:
diff --git a/pkgs/applications/misc/vhs/default.nix b/pkgs/applications/misc/vhs/default.nix
index ae0466c1faaab..43c3aea38e82f 100644
--- a/pkgs/applications/misc/vhs/default.nix
+++ b/pkgs/applications/misc/vhs/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool for generating terminal GIFs with code";
+    mainProgram = "vhs";
     homepage = "https://github.com/charmbracelet/vhs";
     changelog = "https://github.com/charmbracelet/vhs/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/applications/misc/viking/default.nix b/pkgs/applications/misc/viking/default.nix
index be642790f386a..8a987ed24672e 100644
--- a/pkgs/applications/misc/viking/default.nix
+++ b/pkgs/applications/misc/viking/default.nix
@@ -66,6 +66,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "GPS data editor and analyzer";
+    mainProgram = "viking";
     longDescription = ''
       Viking is a free/open source program to manage GPS data.  You
       can import and plot tracks and waypoints, show Openstreetmaps
diff --git a/pkgs/applications/misc/vit/default.nix b/pkgs/applications/misc/vit/default.nix
index b7594add350a2..7bd7501f2296e 100644
--- a/pkgs/applications/misc/vit/default.nix
+++ b/pkgs/applications/misc/vit/default.nix
@@ -33,6 +33,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/scottkosty/vit";
     description = "Visual Interactive Taskwarrior";
+    mainProgram = "vit";
     maintainers = with maintainers; [ dtzWill arcnmx ];
     platforms = platforms.all;
     license = licenses.mit;
diff --git a/pkgs/applications/misc/vym/default.nix b/pkgs/applications/misc/vym/default.nix
index 4815a7bc10af7..e58b98c4e0700 100644
--- a/pkgs/applications/misc/vym/default.nix
+++ b/pkgs/applications/misc/vym/default.nix
@@ -54,6 +54,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = {
     homepage = "http://www.insilmaril.de/vym/";
     description = "A mind-mapping software";
+    mainProgram = "vym";
     longDescription = ''
       VYM (View Your Mind) is a tool to generate and manipulate maps which show
       your thoughts. Such maps can help you to improve your creativity and
diff --git a/pkgs/applications/misc/watchmate/default.nix b/pkgs/applications/misc/watchmate/default.nix
index b78d7f5277ca6..c668aea455317 100644
--- a/pkgs/applications/misc/watchmate/default.nix
+++ b/pkgs/applications/misc/watchmate/default.nix
@@ -51,6 +51,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "PineTime smart watch companion app for Linux phone and desktop";
+    mainProgram = "watchmate";
     homepage = "https://github.com/azymohliad/watchmate";
     changelog = "https://github.com/azymohliad/watchmate/raw/v${version}/CHANGELOG.md";
     license = licenses.gpl3Plus;
diff --git a/pkgs/applications/misc/watershot/default.nix b/pkgs/applications/misc/watershot/default.nix
index 6a6feb209d051..6d29fab825277 100644
--- a/pkgs/applications/misc/watershot/default.nix
+++ b/pkgs/applications/misc/watershot/default.nix
@@ -33,6 +33,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     platforms = with platforms; linux;
     description = "A simple wayland native screenshot tool";
+    mainProgram = "watershot";
     homepage = "https://github.com/Kirottu/watershot";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ lord-valen ];
diff --git a/pkgs/applications/misc/waycorner/default.nix b/pkgs/applications/misc/waycorner/default.nix
index 66e5660042ad9..01b1b80277cb1 100644
--- a/pkgs/applications/misc/waycorner/default.nix
+++ b/pkgs/applications/misc/waycorner/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Hot corners for Wayland";
+    mainProgram = "waycorner";
     changelog = "https://github.com/AndreasBackx/waycorner/blob/main/CHANGELOG.md";
     homepage = "https://github.com/AndreasBackx/waycorner";
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/waypaper/default.nix b/pkgs/applications/misc/waypaper/default.nix
index 1b2ca4843461e..36f79865d31ad 100644
--- a/pkgs/applications/misc/waypaper/default.nix
+++ b/pkgs/applications/misc/waypaper/default.nix
@@ -42,6 +42,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     changelog = "https://github.com/anufrievroman/waypaper/releases/tag/${version}";
     description = "GUI wallpaper setter for Wayland-based window managers";
+    mainProgram = "waypaper";
     longDescription = ''
       GUI wallpaper setter for Wayland-based window managers that works as a frontend for popular backends like swaybg and swww.
 
diff --git a/pkgs/applications/misc/weather/default.nix b/pkgs/applications/misc/weather/default.nix
index 290de03f39ffe..b17bca38d6e9d 100644
--- a/pkgs/applications/misc/weather/default.nix
+++ b/pkgs/applications/misc/weather/default.nix
@@ -41,6 +41,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://fungi.yuggoth.org/weather";
     description = "Quick access to current weather conditions and forecasts";
+    mainProgram = "weather";
     license = licenses.isc;
     maintainers = [ maintainers.matthiasbeyer ];
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/webfontkitgenerator/default.nix b/pkgs/applications/misc/webfontkitgenerator/default.nix
index 57d006a5b569a..c4a3a7b86e98d 100644
--- a/pkgs/applications/misc/webfontkitgenerator/default.nix
+++ b/pkgs/applications/misc/webfontkitgenerator/default.nix
@@ -53,6 +53,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Webfont Kit Generator is a simple utility that allows you to generate woff, woff2 and the necessary CSS boilerplate from non-web font formats (otf & ttf)";
+    mainProgram = "webfontkitgenerator";
     homepage = "https://apps.gnome.org/app/com.rafaelmardojai.WebfontKitGenerator";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ benediktbroich ];
diff --git a/pkgs/applications/misc/whalebird/default.nix b/pkgs/applications/misc/whalebird/default.nix
index 83fcccbf37618..83b310ef885ef 100644
--- a/pkgs/applications/misc/whalebird/default.nix
+++ b/pkgs/applications/misc/whalebird/default.nix
@@ -103,6 +103,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Single-column Fediverse client for desktop";
+    mainProgram = "whalebird";
     homepage = "https://whalebird.social";
     changelog = "https://github.com/h3poteto/whalebird-desktop/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/applications/misc/wikicurses/default.nix b/pkgs/applications/misc/wikicurses/default.nix
index ec7dff141439c..5f20f314d3f4c 100644
--- a/pkgs/applications/misc/wikicurses/default.nix
+++ b/pkgs/applications/misc/wikicurses/default.nix
@@ -25,6 +25,7 @@ pythonPackages.buildPythonApplication rec {
 
   meta = {
     description = "A simple curses interface for MediaWiki sites such as Wikipedia";
+    mainProgram = "wikicurses";
     homepage = "https://github.com/ids1024/wikicurses/";
     license = lib.licenses.mit;
     platforms = lib.platforms.unix;
diff --git a/pkgs/applications/misc/wordbook/default.nix b/pkgs/applications/misc/wordbook/default.nix
index 757fed5265f2e..314ae208f9d59 100644
--- a/pkgs/applications/misc/wordbook/default.nix
+++ b/pkgs/applications/misc/wordbook/default.nix
@@ -61,6 +61,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Offline English-English dictionary application built for GNOME";
+    mainProgram = "wordbook";
     homepage = "https://github.com/fushinari/Wordbook";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/workrave/default.nix b/pkgs/applications/misc/workrave/default.nix
index 7d85f9c7a2349..c4a5e692cfcac 100644
--- a/pkgs/applications/misc/workrave/default.nix
+++ b/pkgs/applications/misc/workrave/default.nix
@@ -88,6 +88,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     broken = (stdenv.isLinux && stdenv.isAarch64);
     description = "A program to help prevent Repetitive Strain Injury";
+    mainProgram = "workrave";
     longDescription = ''
       Workrave is a program that assists in the recovery and prevention of
       Repetitive Strain Injury (RSI). The program frequently alerts you to
diff --git a/pkgs/applications/misc/wpm/default.nix b/pkgs/applications/misc/wpm/default.nix
index b6db073eb9459..f7786471839a5 100644
--- a/pkgs/applications/misc/wpm/default.nix
+++ b/pkgs/applications/misc/wpm/default.nix
@@ -21,6 +21,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Console app for measuring typing speed in words per minute (WPM)";
+    mainProgram = "wpm";
     homepage = "https://pypi.org/project/wpm";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ alejandrosame ];
diff --git a/pkgs/applications/misc/xca/default.nix b/pkgs/applications/misc/xca/default.nix
index f5c8e90d2703c..7b339a868002d 100644
--- a/pkgs/applications/misc/xca/default.nix
+++ b/pkgs/applications/misc/xca/default.nix
@@ -30,6 +30,7 @@ mkDerivation rec {
   meta = with lib; {
     broken = stdenv.isDarwin;
     description = "An x509 certificate generation tool, handling RSA, DSA and EC keys, certificate signing requests (PKCS#10) and CRLs";
+    mainProgram = "xca";
     homepage    = "https://hohnstaedt.de/xca/";
     license     = licenses.bsd3;
     maintainers = with maintainers; [ offline peterhoeg ];
diff --git a/pkgs/applications/misc/xdgmenumaker/default.nix b/pkgs/applications/misc/xdgmenumaker/default.nix
index a9ccb2399dafb..130b97189a626 100644
--- a/pkgs/applications/misc/xdgmenumaker/default.nix
+++ b/pkgs/applications/misc/xdgmenumaker/default.nix
@@ -56,6 +56,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command line tool that generates XDG menus for several window managers";
+    mainProgram = "xdgmenumaker";
     homepage = "https://github.com/gapan/xdgmenumaker";
     license = licenses.gpl3Plus;
     # NOTE: exclude darwin from platforms because Travis reports hash mismatch
diff --git a/pkgs/applications/misc/xfontsel/default.nix b/pkgs/applications/misc/xfontsel/default.nix
index 6bcab225c25ab..5bfdb209c1ff1 100644
--- a/pkgs/applications/misc/xfontsel/default.nix
+++ b/pkgs/applications/misc/xfontsel/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.x.org/";
     description = "Allows testing the fonts available in an X server";
+    mainProgram = "xfontsel";
     license = with licenses; [ x11 smlnj mit ];
     maintainers = with maintainers; [ viric ];
     platforms = platforms.unix;
diff --git a/pkgs/applications/misc/xmrig/proxy.nix b/pkgs/applications/misc/xmrig/proxy.nix
index 0acaece4cc028..23b6c07ba6c6c 100644
--- a/pkgs/applications/misc/xmrig/proxy.nix
+++ b/pkgs/applications/misc/xmrig/proxy.nix
@@ -53,6 +53,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Monero (XMR) Stratum protocol proxy";
+    mainProgram = "xmrig-proxy";
     homepage = "https://github.com/xmrig/xmrig-proxy";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ aij ];
diff --git a/pkgs/applications/misc/xneur/default.nix b/pkgs/applications/misc/xneur/default.nix
index eab545cf08189..e282d84f9c931 100644
--- a/pkgs/applications/misc/xneur/default.nix
+++ b/pkgs/applications/misc/xneur/default.nix
@@ -67,6 +67,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Utility for switching between keyboard layouts";
+    mainProgram = "xneur";
     homepage = "https://xneur.ru";
     license = licenses.gpl2Plus;
     maintainers = [ maintainers.raskin ];
diff --git a/pkgs/applications/misc/xpad/default.nix b/pkgs/applications/misc/xpad/default.nix
index 2a14cbe24fb51..13b29491bf3f7 100644
--- a/pkgs/applications/misc/xpad/default.nix
+++ b/pkgs/applications/misc/xpad/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A sticky note application for jotting down things to remember";
+    mainProgram = "xpad";
     homepage = "https://launchpad.net/xpad";
     license = licenses.gpl3;
     platforms = platforms.linux;
diff --git a/pkgs/applications/misc/xsuspender/default.nix b/pkgs/applications/misc/xsuspender/default.nix
index b47bbef0188fb..178522fbf518c 100644
--- a/pkgs/applications/misc/xsuspender/default.nix
+++ b/pkgs/applications/misc/xsuspender/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Auto-suspend inactive X11 applications";
+    mainProgram = "xsuspender";
     homepage = "https://kernc.github.io/xsuspender/";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ offline ];
diff --git a/pkgs/applications/misc/xygrib/default.nix b/pkgs/applications/misc/xygrib/default.nix
index f7b3f6837f7c6..4ce68f77e25be 100644
--- a/pkgs/applications/misc/xygrib/default.nix
+++ b/pkgs/applications/misc/xygrib/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://opengribs.org";
     description = "Weather Forecast Visualization";
+    mainProgram = "xygrib";
     longDescription = ''
       XyGrib is a leading opensource weather visualization package.
       It interacts with OpenGribs's Grib server providing a choice
diff --git a/pkgs/applications/misc/ydict/default.nix b/pkgs/applications/misc/ydict/default.nix
index 1c57456f4a199..0d52c230a423a 100644
--- a/pkgs/applications/misc/ydict/default.nix
+++ b/pkgs/applications/misc/ydict/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Yet another command-line Youdao Chinese dictionary";
+    mainProgram = "ydict";
     homepage = "https://github.com/TimothyYe/ydict";
     license = licenses.mit;
     maintainers = with maintainers; [ zendo ];
diff --git a/pkgs/applications/misc/yewtube/default.nix b/pkgs/applications/misc/yewtube/default.nix
index 14f50e3be2905..26ce9f8f64a27 100644
--- a/pkgs/applications/misc/yewtube/default.nix
+++ b/pkgs/applications/misc/yewtube/default.nix
@@ -40,6 +40,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Terminal based YouTube player and downloader, forked from mps-youtube";
+    mainProgram = "yt";
     homepage = "https://github.com/mps-youtube/yewtube";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ fgaz koral ];
diff --git a/pkgs/applications/misc/yubioath-flutter/default.nix b/pkgs/applications/misc/yubioath-flutter/default.nix
index 4895f749ec8d0..0611655da1bc9 100644
--- a/pkgs/applications/misc/yubioath-flutter/default.nix
+++ b/pkgs/applications/misc/yubioath-flutter/default.nix
@@ -84,6 +84,7 @@ flutter.buildFlutterApplication rec {
 
   meta = with lib; {
     description = "Yubico Authenticator for Desktop";
+    mainProgram = "yubioath-flutter";
     homepage = "https://github.com/Yubico/yubioath-flutter";
     license = licenses.asl20;
     maintainers = with maintainers; [ lukegb ];
diff --git a/pkgs/applications/misc/zk-shell/default.nix b/pkgs/applications/misc/zk-shell/default.nix
index 9f6816f00dda2..e565e1ecda75f 100644
--- a/pkgs/applications/misc/zk-shell/default.nix
+++ b/pkgs/applications/misc/zk-shell/default.nix
@@ -25,6 +25,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A powerful & scriptable shell for Apache ZooKeeper";
+    mainProgram = "zk-shell";
     homepage = "https://github.com/rgs1/zk_shell";
     license = licenses.asl20;
     maintainers = [ maintainers.mahe ];
diff --git a/pkgs/applications/misc/zscroll/default.nix b/pkgs/applications/misc/zscroll/default.nix
index bc53ade06a781..ccdac791e3369 100644
--- a/pkgs/applications/misc/zscroll/default.nix
+++ b/pkgs/applications/misc/zscroll/default.nix
@@ -20,6 +20,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A text scroller for use with panels and shells";
+    mainProgram = "zscroll";
     homepage = "https://github.com/noctuid/zscroll";
     license = licenses.gpl3Plus;
     platforms = platforms.all;