about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/tools/X11/xidlehook/default.nix1
-rw-r--r--pkgs/tools/backup/awsbck/default.nix1
-rw-r--r--pkgs/tools/backup/bdsync/default.nix1
-rw-r--r--pkgs/tools/backup/conserve/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/bchunk/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/bootiso/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/brasero/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/ccd2iso/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/cdi2iso/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/cue2pops/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/dvd-vr/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/dvdisaster/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/iat/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/isolyzer/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/lsdvd/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/mdf2iso/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/mkcue/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/nrg2iso/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/sacd/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/uif2iso/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/unetbootin/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/vobcopy/default.nix1
-rw-r--r--pkgs/tools/cd-dvd/vobsub2srt/default.nix1
-rw-r--r--pkgs/tools/compression/brotli/default.nix1
-rw-r--r--pkgs/tools/compression/bsc/default.nix1
-rw-r--r--pkgs/tools/compression/crabz/default.nix1
-rw-r--r--pkgs/tools/compression/dejsonlz4/default.nix1
-rw-r--r--pkgs/tools/compression/dtrx/default.nix1
-rw-r--r--pkgs/tools/compression/efficient-compression-tool/default.nix1
-rw-r--r--pkgs/tools/compression/flips/default.nix1
-rw-r--r--pkgs/tools/compression/hacpack/default.nix1
-rw-r--r--pkgs/tools/compression/hactool/default.nix1
-rw-r--r--pkgs/tools/compression/heatshrink/default.nix1
-rw-r--r--pkgs/tools/compression/imagelol/default.nix1
-rw-r--r--pkgs/tools/compression/lzbench/default.nix1
-rw-r--r--pkgs/tools/compression/lzfse/default.nix1
-rw-r--r--pkgs/tools/compression/lzip/default.nix1
-rw-r--r--pkgs/tools/compression/lziprecover/default.nix1
-rw-r--r--pkgs/tools/compression/lzop/default.nix1
-rw-r--r--pkgs/tools/compression/mozlz4a/default.nix1
-rw-r--r--pkgs/tools/compression/nx2elf/default.nix1
-rw-r--r--pkgs/tools/compression/offzip/default.nix1
-rw-r--r--pkgs/tools/compression/orz/default.nix1
-rw-r--r--pkgs/tools/compression/ouch/default.nix1
-rw-r--r--pkgs/tools/compression/pbzx/default.nix1
-rw-r--r--pkgs/tools/compression/pixz/default.nix1
-rw-r--r--pkgs/tools/compression/plzip/default.nix1
-rw-r--r--pkgs/tools/compression/rzip/default.nix1
-rw-r--r--pkgs/tools/compression/unzrip/default.nix1
-rw-r--r--pkgs/tools/compression/upx/default.nix1
-rw-r--r--pkgs/tools/compression/xar/default.nix1
-rw-r--r--pkgs/tools/compression/zfp/default.nix1
-rw-r--r--pkgs/tools/graphics/aaphoto/default.nix1
-rw-r--r--pkgs/tools/graphics/adriconf/default.nix1
-rw-r--r--pkgs/tools/graphics/blockhash/default.nix1
-rw-r--r--pkgs/tools/graphics/blur-effect/default.nix1
-rw-r--r--pkgs/tools/graphics/briss/default.nix1
-rw-r--r--pkgs/tools/graphics/cfdg/default.nix1
-rw-r--r--pkgs/tools/graphics/cuneiform/default.nix1
-rw-r--r--pkgs/tools/graphics/didder/default.nix1
-rw-r--r--pkgs/tools/graphics/ditaa/default.nix1
-rw-r--r--pkgs/tools/graphics/dnglab/default.nix1
-rw-r--r--pkgs/tools/graphics/dpic/default.nix1
-rw-r--r--pkgs/tools/graphics/editres/default.nix1
-rw-r--r--pkgs/tools/graphics/epstool/default.nix1
-rw-r--r--pkgs/tools/graphics/escrotum/default.nix1
-rw-r--r--pkgs/tools/graphics/esshader/default.nix1
-rw-r--r--pkgs/tools/graphics/exif/default.nix1
-rw-r--r--pkgs/tools/graphics/facedetect/default.nix1
-rw-r--r--pkgs/tools/graphics/fbv/default.nix1
-rw-r--r--pkgs/tools/graphics/feedgnuplot/default.nix1
-rw-r--r--pkgs/tools/graphics/fgallery/default.nix1
-rw-r--r--pkgs/tools/graphics/ggobi/default.nix1
-rw-r--r--pkgs/tools/graphics/gnuplot/default.nix1
-rw-r--r--pkgs/tools/graphics/goverlay/default.nix1
-rw-r--r--pkgs/tools/graphics/graph-cli/default.nix1
-rw-r--r--pkgs/tools/graphics/graph-easy/default.nix1
-rw-r--r--pkgs/tools/graphics/gromit-mpx/default.nix1
-rw-r--r--pkgs/tools/graphics/guff/default.nix1
-rw-r--r--pkgs/tools/graphics/ibniz/default.nix1
-rw-r--r--pkgs/tools/graphics/imgur-screenshot/default.nix1
-rw-r--r--pkgs/tools/graphics/imgurbash2/default.nix1
-rw-r--r--pkgs/tools/graphics/jhead/default.nix1
-rw-r--r--pkgs/tools/graphics/jpegexiforient/default.nix1
-rw-r--r--pkgs/tools/graphics/leela/default.nix1
-rw-r--r--pkgs/tools/graphics/logstalgia/default.nix1
-rw-r--r--pkgs/tools/graphics/lsix/default.nix1
-rw-r--r--pkgs/tools/graphics/mscgen/default.nix1
-rw-r--r--pkgs/tools/graphics/nifskope/default.nix1
-rw-r--r--pkgs/tools/graphics/nip2/default.nix1
-rw-r--r--pkgs/tools/graphics/optipng/default.nix1
-rw-r--r--pkgs/tools/graphics/oxipng/default.nix1
-rw-r--r--pkgs/tools/graphics/pdf2svg/default.nix1
-rw-r--r--pkgs/tools/graphics/pdftag/default.nix1
-rw-r--r--pkgs/tools/graphics/pdftoipe/default.nix1
-rw-r--r--pkgs/tools/graphics/perceptualdiff/default.nix1
-rw-r--r--pkgs/tools/graphics/piglit/default.nix1
-rw-r--r--pkgs/tools/graphics/pixel2svg/default.nix1
-rw-r--r--pkgs/tools/graphics/pngcheck/default.nix1
-rw-r--r--pkgs/tools/graphics/pngcrush/default.nix1
-rw-r--r--pkgs/tools/graphics/pngloss/default.nix1
-rw-r--r--pkgs/tools/graphics/pngout/default.nix1
-rw-r--r--pkgs/tools/graphics/pngtoico/default.nix1
-rw-r--r--pkgs/tools/graphics/povray/default.nix1
-rw-r--r--pkgs/tools/graphics/pstoedit/default.nix1
-rw-r--r--pkgs/tools/graphics/qrcode/default.nix1
-rw-r--r--pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix1
-rw-r--r--pkgs/tools/graphics/s2png/default.nix1
-rw-r--r--pkgs/tools/graphics/sanjuuni/default.nix1
-rw-r--r--pkgs/tools/graphics/shot-scraper/default.nix1
-rw-r--r--pkgs/tools/graphics/shotgun/default.nix1
-rw-r--r--pkgs/tools/graphics/smartcrop/default.nix1
-rw-r--r--pkgs/tools/graphics/sng/default.nix1
-rw-r--r--pkgs/tools/graphics/spirv-cross/default.nix1
-rw-r--r--pkgs/tools/graphics/steghide/default.nix1
-rw-r--r--pkgs/tools/graphics/stegsolve/default.nix1
-rw-r--r--pkgs/tools/graphics/svg2pdf/default.nix1
-rw-r--r--pkgs/tools/graphics/svgbob/default.nix1
-rw-r--r--pkgs/tools/graphics/svgcleaner/default.nix1
-rw-r--r--pkgs/tools/graphics/textplots/default.nix1
-rw-r--r--pkgs/tools/graphics/texture-synthesis/default.nix1
-rw-r--r--pkgs/tools/graphics/twilight/default.nix1
-rw-r--r--pkgs/tools/graphics/viu/default.nix1
-rw-r--r--pkgs/tools/graphics/vkbasalt-cli/default.nix1
-rw-r--r--pkgs/tools/graphics/vkdisplayinfo/default.nix1
-rw-r--r--pkgs/tools/graphics/vkmark/default.nix1
-rw-r--r--pkgs/tools/graphics/vulkan-helper/default.nix1
-rw-r--r--pkgs/tools/graphics/waifu2x-converter-cpp/default.nix1
-rw-r--r--pkgs/tools/graphics/xcolor/default.nix1
-rw-r--r--pkgs/tools/graphics/xcur2png/default.nix1
-rw-r--r--pkgs/tools/graphics/yaxg/default.nix1
-rw-r--r--pkgs/tools/llm/gorilla-cli/default.nix1
-rw-r--r--pkgs/tools/security/agebox/default.nix1
-rw-r--r--pkgs/tools/security/apkleaks/default.nix1
-rw-r--r--pkgs/tools/security/bao/default.nix1
-rw-r--r--pkgs/tools/security/bettercap/default.nix1
-rw-r--r--pkgs/tools/security/ctmg/default.nix1
-rw-r--r--pkgs/tools/security/cyclonedx-gomod/default.nix1
-rw-r--r--pkgs/tools/security/dalfox/default.nix1
-rw-r--r--pkgs/tools/security/dismember/default.nix1
-rw-r--r--pkgs/tools/security/erosmb/default.nix1
-rw-r--r--pkgs/tools/security/feroxbuster/default.nix1
-rw-r--r--pkgs/tools/security/fscan/default.nix1
-rw-r--r--pkgs/tools/security/gen-oath-safe/default.nix1
-rw-r--r--pkgs/tools/security/go-dork/default.nix1
-rw-r--r--pkgs/tools/security/hash-identifier/default.nix1
-rw-r--r--pkgs/tools/security/hcxdumptool/default.nix1
-rw-r--r--pkgs/tools/security/ic-keysmith/default.nix1
-rw-r--r--pkgs/tools/security/jwt-hack/default.nix1
-rw-r--r--pkgs/tools/security/kepler/default.nix1
-rw-r--r--pkgs/tools/security/kube-hunter/default.nix1
-rw-r--r--pkgs/tools/security/kubestroyer/default.nix1
-rw-r--r--pkgs/tools/security/ldapnomnom/default.nix1
-rw-r--r--pkgs/tools/security/lethe/default.nix1
-rw-r--r--pkgs/tools/security/libmodsecurity/default.nix1
-rw-r--r--pkgs/tools/security/lmp/default.nix1
-rw-r--r--pkgs/tools/security/log4jcheck/default.nix1
-rw-r--r--pkgs/tools/security/log4shell-detector/default.nix1
-rw-r--r--pkgs/tools/security/logmap/default.nix1
-rw-r--r--pkgs/tools/security/mantra/default.nix1
-rw-r--r--pkgs/tools/security/minisign/default.nix1
-rw-r--r--pkgs/tools/security/mongoaudit/default.nix1
-rw-r--r--pkgs/tools/security/nsjail/default.nix1
-rw-r--r--pkgs/tools/security/oath-toolkit/default.nix1
-rw-r--r--pkgs/tools/security/onesixtyone/default.nix1
-rw-r--r--pkgs/tools/security/parsero/default.nix1
-rw-r--r--pkgs/tools/security/prs/default.nix1
-rw-r--r--pkgs/tools/security/routersploit/default.nix1
-rw-r--r--pkgs/tools/security/rucredstash/default.nix1
-rw-r--r--pkgs/tools/security/shellz/default.nix1
-rw-r--r--pkgs/tools/security/silenthound/default.nix1
-rw-r--r--pkgs/tools/security/slowhttptest/default.nix1
-rw-r--r--pkgs/tools/security/smbscan/default.nix1
-rw-r--r--pkgs/tools/security/stegseek/default.nix1
-rw-r--r--pkgs/tools/security/stricat/default.nix1
-rw-r--r--pkgs/tools/security/sx-go/default.nix1
-rw-r--r--pkgs/tools/security/tessen/default.nix1
-rw-r--r--pkgs/tools/security/vaultwarden/default.nix1
-rw-r--r--pkgs/tools/security/webanalyze/default.nix1
-rw-r--r--pkgs/tools/security/xcrawl3r/default.nix1
-rw-r--r--pkgs/tools/security/yatas/default.nix1
-rw-r--r--pkgs/tools/security/yubihsm-connector/default.nix1
-rw-r--r--pkgs/tools/typesetting/asciidoctorj/default.nix1
-rw-r--r--pkgs/tools/typesetting/biber-ms/default.nix1
-rw-r--r--pkgs/tools/typesetting/biber/default.nix1
-rw-r--r--pkgs/tools/typesetting/biblatex-check/default.nix1
-rw-r--r--pkgs/tools/typesetting/coq2html/default.nix1
-rw-r--r--pkgs/tools/typesetting/djvu2pdf/default.nix1
-rw-r--r--pkgs/tools/typesetting/docbook2odf/default.nix1
-rw-r--r--pkgs/tools/typesetting/fop/default.nix1
-rw-r--r--pkgs/tools/typesetting/git-latexdiff/default.nix1
-rw-r--r--pkgs/tools/typesetting/halibut/default.nix1
-rw-r--r--pkgs/tools/typesetting/hayagriva/default.nix1
-rw-r--r--pkgs/tools/typesetting/htmldoc/default.nix1
-rw-r--r--pkgs/tools/typesetting/kramdown-asciidoc/default.nix1
-rw-r--r--pkgs/tools/typesetting/mmark/default.nix1
-rw-r--r--pkgs/tools/typesetting/pdf2djvu/default.nix1
-rw-r--r--pkgs/tools/typesetting/pdfchain/default.nix1
-rw-r--r--pkgs/tools/typesetting/pdfgrep/default.nix1
-rw-r--r--pkgs/tools/typesetting/pdfsandwich/default.nix1
-rw-r--r--pkgs/tools/typesetting/pdftk/default.nix1
-rw-r--r--pkgs/tools/typesetting/pulldown-cmark/default.nix1
-rw-r--r--pkgs/tools/typesetting/rfc-bibtex/default.nix1
-rw-r--r--pkgs/tools/typesetting/satysfi/default.nix1
-rw-r--r--pkgs/tools/typesetting/sile/default.nix1
-rw-r--r--pkgs/tools/typesetting/sshlatex/default.nix1
-rw-r--r--pkgs/tools/typesetting/tikzit/default.nix1
-rw-r--r--pkgs/tools/typesetting/typstfmt/default.nix1
-rw-r--r--pkgs/tools/typesetting/xmlroff/default.nix1
-rw-r--r--pkgs/tools/video/dvgrab/default.nix1
-rw-r--r--pkgs/tools/video/go2rtc/default.nix1
-rw-r--r--pkgs/tools/video/gopro/default.nix1
-rw-r--r--pkgs/tools/video/harvid/default.nix1
-rw-r--r--pkgs/tools/video/lux/default.nix1
-rw-r--r--pkgs/tools/video/play-with-mpv/default.nix1
-rw-r--r--pkgs/tools/video/rav1e/default.nix1
-rw-r--r--pkgs/tools/video/replay-sorcery/default.nix1
-rw-r--r--pkgs/tools/video/swfmill/default.nix1
-rw-r--r--pkgs/tools/video/vcsi/default.nix1
-rw-r--r--pkgs/tools/video/vncrec/default.nix1
-rw-r--r--pkgs/tools/video/wtwitch/default.nix1
-rw-r--r--pkgs/tools/video/yamdi/default.nix1
-rw-r--r--pkgs/tools/video/yaydl/default.nix1
224 files changed, 224 insertions, 0 deletions
diff --git a/pkgs/tools/X11/xidlehook/default.nix b/pkgs/tools/X11/xidlehook/default.nix
index bb86014257b8b..c23acbedafdfc 100644
--- a/pkgs/tools/X11/xidlehook/default.nix
+++ b/pkgs/tools/X11/xidlehook/default.nix
@@ -44,5 +44,6 @@ rustPlatform.buildRustPackage rec {
     maintainers = with maintainers; [ ];
     platforms = platforms.unix;
     badPlatforms = platforms.darwin;
+    mainProgram = "xidlehook";
   };
 }
diff --git a/pkgs/tools/backup/awsbck/default.nix b/pkgs/tools/backup/awsbck/default.nix
index d8d54dad392d4..3b2bf517a4040 100644
--- a/pkgs/tools/backup/awsbck/default.nix
+++ b/pkgs/tools/backup/awsbck/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/beeb/awsbck";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ beeb ];
+    mainProgram = "awsbck";
   };
 }
diff --git a/pkgs/tools/backup/bdsync/default.nix b/pkgs/tools/backup/bdsync/default.nix
index bf3afacb94961..8018a1b7cfdfc 100644
--- a/pkgs/tools/backup/bdsync/default.nix
+++ b/pkgs/tools/backup/bdsync/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ jluttine ];
+    mainProgram = "bdsync";
   };
 }
diff --git a/pkgs/tools/backup/conserve/default.nix b/pkgs/tools/backup/conserve/default.nix
index 345bd06e23c05..8b6e7e0722265 100644
--- a/pkgs/tools/backup/conserve/default.nix
+++ b/pkgs/tools/backup/conserve/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/sourcefrog/conserve";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ happysalada ];
+    mainProgram = "conserve";
   };
 }
diff --git a/pkgs/tools/cd-dvd/bchunk/default.nix b/pkgs/tools/cd-dvd/bchunk/default.nix
index df8ca279107e8..a3677b9848186 100644
--- a/pkgs/tools/cd-dvd/bchunk/default.nix
+++ b/pkgs/tools/cd-dvd/bchunk/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     description = "A program that converts CD images in BIN/CUE format into a set of ISO and CDR tracks";
     platforms = platforms.unix;
     license = licenses.gpl2;
+    mainProgram = "bchunk";
   };
 }
diff --git a/pkgs/tools/cd-dvd/bootiso/default.nix b/pkgs/tools/cd-dvd/bootiso/default.nix
index ee5d4fd8456f3..243989d049489 100644
--- a/pkgs/tools/cd-dvd/bootiso/default.nix
+++ b/pkgs/tools/cd-dvd/bootiso/default.nix
@@ -56,5 +56,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ muscaln ];
     platforms = platforms.all;
+    mainProgram = "bootiso";
   };
 }
diff --git a/pkgs/tools/cd-dvd/brasero/default.nix b/pkgs/tools/cd-dvd/brasero/default.nix
index decd4352ad454..fb57e2d7decb4 100644
--- a/pkgs/tools/cd-dvd/brasero/default.nix
+++ b/pkgs/tools/cd-dvd/brasero/default.nix
@@ -45,5 +45,6 @@ in stdenv.mkDerivation rec {
     maintainers = [ maintainers.bdimcheff ];
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
+    mainProgram = "brasero";
   };
 }
diff --git a/pkgs/tools/cd-dvd/ccd2iso/default.nix b/pkgs/tools/cd-dvd/ccd2iso/default.nix
index 1fe606e6acc2c..4885b16aa0657 100644
--- a/pkgs/tools/cd-dvd/ccd2iso/default.nix
+++ b/pkgs/tools/cd-dvd/ccd2iso/default.nix
@@ -15,5 +15,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ yana ];
     platforms = platforms.unix;
+    mainProgram = "ccd2iso";
   };
 }
diff --git a/pkgs/tools/cd-dvd/cdi2iso/default.nix b/pkgs/tools/cd-dvd/cdi2iso/default.nix
index 26768747a46cb..f6d0b4e1175fa 100644
--- a/pkgs/tools/cd-dvd/cdi2iso/default.nix
+++ b/pkgs/tools/cd-dvd/cdi2iso/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = with maintainers; [ hrdinka ];
     platforms = platforms.all;
+    mainProgram = "cdi2iso";
   };
 }
diff --git a/pkgs/tools/cd-dvd/cue2pops/default.nix b/pkgs/tools/cd-dvd/cue2pops/default.nix
index 795589a64ec29..6cb93b3e04be2 100644
--- a/pkgs/tools/cd-dvd/cue2pops/default.nix
+++ b/pkgs/tools/cd-dvd/cue2pops/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation {
     homepage = "https://github.com/makefu/cue2pops-linux";
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.all;
+    mainProgram = "cue2pops";
   };
 }
diff --git a/pkgs/tools/cd-dvd/dvd-vr/default.nix b/pkgs/tools/cd-dvd/dvd-vr/default.nix
index 4375aebe2990a..88703b28b5824 100644
--- a/pkgs/tools/cd-dvd/dvd-vr/default.nix
+++ b/pkgs/tools/cd-dvd/dvd-vr/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
     description = "A utility to identify and optionally copy recordings from a DVD-VR format disc";
     license = licenses.gpl2;
     maintainers = with maintainers; [ fgaz ];
+    mainProgram = "dvd-vr";
   };
 }
 
diff --git a/pkgs/tools/cd-dvd/dvdisaster/default.nix b/pkgs/tools/cd-dvd/dvdisaster/default.nix
index 55e0e51e5f448..abbda3512e5f0 100644
--- a/pkgs/tools/cd-dvd/dvdisaster/default.nix
+++ b/pkgs/tools/cd-dvd/dvdisaster/default.nix
@@ -93,5 +93,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
+    mainProgram = "dvdisaster";
   };
 }
diff --git a/pkgs/tools/cd-dvd/iat/default.nix b/pkgs/tools/cd-dvd/iat/default.nix
index 083ff35acd78c..0f7a1ad442a7f 100644
--- a/pkgs/tools/cd-dvd/iat/default.nix
+++ b/pkgs/tools/cd-dvd/iat/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation (finalAttr: {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ hughobrien ];
     platforms = platforms.linux;
+    mainProgram = "iat";
   };
 })
diff --git a/pkgs/tools/cd-dvd/isolyzer/default.nix b/pkgs/tools/cd-dvd/isolyzer/default.nix
index f13a17e01f791..6f231430fa86f 100644
--- a/pkgs/tools/cd-dvd/isolyzer/default.nix
+++ b/pkgs/tools/cd-dvd/isolyzer/default.nix
@@ -21,5 +21,6 @@ python3.pkgs.buildPythonApplication rec {
     description = "Verify size of ISO 9660 image against Volume Descriptor fields";
     license = licenses.asl20;
     maintainers = with maintainers; [ mkg20001 ];
+    mainProgram = "isolyzer";
   };
 }
diff --git a/pkgs/tools/cd-dvd/lsdvd/default.nix b/pkgs/tools/cd-dvd/lsdvd/default.nix
index 59e8bf8843a43..3fd116faea5be 100644
--- a/pkgs/tools/cd-dvd/lsdvd/default.nix
+++ b/pkgs/tools/cd-dvd/lsdvd/default.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation rec {
     description = "Display information about audio, video, and subtitle tracks on a DVD";
     license = licenses.gpl2;
     platforms = platforms.linux;
+    mainProgram = "lsdvd";
   };
 }
diff --git a/pkgs/tools/cd-dvd/mdf2iso/default.nix b/pkgs/tools/cd-dvd/mdf2iso/default.nix
index e737e38d1bd66..b5fcc557b4e19 100644
--- a/pkgs/tools/cd-dvd/mdf2iso/default.nix
+++ b/pkgs/tools/cd-dvd/mdf2iso/default.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.unix;
     maintainers = [ maintainers.oxij ];
+    mainProgram = "mdf2iso";
   };
 }
diff --git a/pkgs/tools/cd-dvd/mkcue/default.nix b/pkgs/tools/cd-dvd/mkcue/default.nix
index 596164f13ffa6..575adecbd5215 100644
--- a/pkgs/tools/cd-dvd/mkcue/default.nix
+++ b/pkgs/tools/cd-dvd/mkcue/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "mkcue";
   };
 }
diff --git a/pkgs/tools/cd-dvd/nrg2iso/default.nix b/pkgs/tools/cd-dvd/nrg2iso/default.nix
index fdde54b596f14..8807466d05a65 100644
--- a/pkgs/tools/cd-dvd/nrg2iso/default.nix
+++ b/pkgs/tools/cd-dvd/nrg2iso/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     homepage = "http://gregory.kokanosky.free.fr/v4/linux/nrg2iso.en.html";
     license = licenses.gpl2;
     platforms = platforms.all;
+    mainProgram = "nrg2iso";
   };
 }
diff --git a/pkgs/tools/cd-dvd/sacd/default.nix b/pkgs/tools/cd-dvd/sacd/default.nix
index 948c514284023..c24a5e7c15c7e 100644
--- a/pkgs/tools/cd-dvd/sacd/default.nix
+++ b/pkgs/tools/cd-dvd/sacd/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.gpl3;
     maintainers = [ maintainers.doronbehar ];
     platforms = [ "x86_64-linux" ];
+    mainProgram = "sacd";
   };
 })
diff --git a/pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix b/pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix
index 80e456d072ce9..b0868c885edd6 100644
--- a/pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix
+++ b/pkgs/tools/cd-dvd/srt-to-vtt-cl/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ ericdallo ];
     homepage = "https://github.com/nwoltman/srt-to-vtt-cl";
     platforms = platforms.unix;
+    mainProgram = "srt-vtt";
   };
 }
diff --git a/pkgs/tools/cd-dvd/uif2iso/default.nix b/pkgs/tools/cd-dvd/uif2iso/default.nix
index 7a8a6569e5337..ae1eff26568fb 100644
--- a/pkgs/tools/cd-dvd/uif2iso/default.nix
+++ b/pkgs/tools/cd-dvd/uif2iso/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     homepage = "http://aluigi.org/mytoolz.htm#uif2iso";
     license = lib.licenses.gpl1Plus;
     platforms = lib.platforms.linux;
+    mainProgram = "uif2iso";
   };
 }
diff --git a/pkgs/tools/cd-dvd/unetbootin/default.nix b/pkgs/tools/cd-dvd/unetbootin/default.nix
index 88fab512b0b8a..fb12968aa728a 100644
--- a/pkgs/tools/cd-dvd/unetbootin/default.nix
+++ b/pkgs/tools/cd-dvd/unetbootin/default.nix
@@ -80,5 +80,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ ebzzry ];
     platforms = platforms.linux;
+    mainProgram = "unetbootin";
   };
 }
diff --git a/pkgs/tools/cd-dvd/vobcopy/default.nix b/pkgs/tools/cd-dvd/vobcopy/default.nix
index 2ebe9e5e0a351..dbe192e039bd2 100644
--- a/pkgs/tools/cd-dvd/vobcopy/default.nix
+++ b/pkgs/tools/cd-dvd/vobcopy/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
 
     maintainers = [ lib.maintainers.bluescreen303 ];
     platforms = lib.platforms.all;
+    mainProgram = "vobcopy";
   };
 }
diff --git a/pkgs/tools/cd-dvd/vobsub2srt/default.nix b/pkgs/tools/cd-dvd/vobsub2srt/default.nix
index d56cfdf86c8ea..2847c68899fed 100644
--- a/pkgs/tools/cd-dvd/vobsub2srt/default.nix
+++ b/pkgs/tools/cd-dvd/vobsub2srt/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3Plus;
     platforms = lib.platforms.unix;
     maintainers = [ lib.maintainers.ttuegel ];
+    mainProgram = "vobsub2srt";
   };
 }
diff --git a/pkgs/tools/compression/brotli/default.nix b/pkgs/tools/compression/brotli/default.nix
index 263478e4ba3cd..60429f435ec66 100644
--- a/pkgs/tools/compression/brotli/default.nix
+++ b/pkgs/tools/compression/brotli/default.nix
@@ -73,5 +73,6 @@ stdenv.mkDerivation (finalAttrs: {
       "libbrotlienc"
     ];
     platforms = platforms.all;
+    mainProgram = "brotli";
   };
 })
diff --git a/pkgs/tools/compression/bsc/default.nix b/pkgs/tools/compression/bsc/default.nix
index 93b715f853cf9..7d2af1c4898fe 100644
--- a/pkgs/tools/compression/bsc/default.nix
+++ b/pkgs/tools/compression/bsc/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     # Later commits changed the licence to Apache2 (no release yet, though)
     license = with licenses; [ lgpl3Plus ];
     platforms = platforms.unix;
+    mainProgram = "bsc";
   };
 }
diff --git a/pkgs/tools/compression/crabz/default.nix b/pkgs/tools/compression/crabz/default.nix
index b68d3af1a8442..f8cb155f272e3 100644
--- a/pkgs/tools/compression/crabz/default.nix
+++ b/pkgs/tools/compression/crabz/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/sstadick/crabz/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ unlicense /* or */ mit ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "crabz";
   };
 }
diff --git a/pkgs/tools/compression/dejsonlz4/default.nix b/pkgs/tools/compression/dejsonlz4/default.nix
index 0dd703035fa97..51c5d485cfa9d 100644
--- a/pkgs/tools/compression/dejsonlz4/default.nix
+++ b/pkgs/tools/compression/dejsonlz4/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ mt-caret ];
     platforms = platforms.all;
+    mainProgram = "dejsonlz4";
   };
 }
diff --git a/pkgs/tools/compression/dtrx/default.nix b/pkgs/tools/compression/dtrx/default.nix
index 2bfe975d033cb..9890112171d86 100644
--- a/pkgs/tools/compression/dtrx/default.nix
+++ b/pkgs/tools/compression/dtrx/default.nix
@@ -51,5 +51,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/dtrx-py/dtrx";
     license = licenses.gpl3Plus;
     maintainers = [ ];
+    mainProgram = "dtrx";
   };
 }
diff --git a/pkgs/tools/compression/efficient-compression-tool/default.nix b/pkgs/tools/compression/efficient-compression-tool/default.nix
index 6a96156012766..17c1bfcbcf2b8 100644
--- a/pkgs/tools/compression/efficient-compression-tool/default.nix
+++ b/pkgs/tools/compression/efficient-compression-tool/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     maintainers = [ maintainers.lunik1 ];
     platforms = platforms.linux;
+    mainProgram = "ect";
   };
 }
diff --git a/pkgs/tools/compression/flips/default.nix b/pkgs/tools/compression/flips/default.nix
index 4ba618556a70c..6ee1c03cabce5 100644
--- a/pkgs/tools/compression/flips/default.nix
+++ b/pkgs/tools/compression/flips/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.xfix ];
     platforms = platforms.linux;
+    mainProgram = "flips";
   };
 }
diff --git a/pkgs/tools/compression/hacpack/default.nix b/pkgs/tools/compression/hacpack/default.nix
index 34722d52ccfd3..8d44660898cf8 100644
--- a/pkgs/tools/compression/hacpack/default.nix
+++ b/pkgs/tools/compression/hacpack/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Only;
     maintainers = [ maintainers.ivar ];
     platforms = platforms.linux;
+    mainProgram = "hacpack";
   };
 }
diff --git a/pkgs/tools/compression/hactool/default.nix b/pkgs/tools/compression/hactool/default.nix
index 2e6e7437fff2f..11adbe3ced1b9 100644
--- a/pkgs/tools/compression/hactool/default.nix
+++ b/pkgs/tools/compression/hactool/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ ivar ];
     platforms = platforms.unix;
+    mainProgram = "hactool";
   };
 }
diff --git a/pkgs/tools/compression/heatshrink/default.nix b/pkgs/tools/compression/heatshrink/default.nix
index 290e2dc9d8cab..49ef7354cbc91 100644
--- a/pkgs/tools/compression/heatshrink/default.nix
+++ b/pkgs/tools/compression/heatshrink/default.nix
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ fgaz ];
     platforms = platforms.all;
+    mainProgram = "heatshrink";
   };
 }
diff --git a/pkgs/tools/compression/imagelol/default.nix b/pkgs/tools/compression/imagelol/default.nix
index 857de32ad886f..950b12826b33f 100644
--- a/pkgs/tools/compression/imagelol/default.nix
+++ b/pkgs/tools/compression/imagelol/default.nix
@@ -54,5 +54,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.ivar ];
     platforms = platforms.unix;
+    mainProgram = "ImageLOL";
   };
 }
diff --git a/pkgs/tools/compression/lzbench/default.nix b/pkgs/tools/compression/lzbench/default.nix
index 93ccc67f7d142..c35f738b2bdec 100644
--- a/pkgs/tools/compression/lzbench/default.nix
+++ b/pkgs/tools/compression/lzbench/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation rec {
     description = "In-memory benchmark of open-source LZ77/LZSS/LZMA compressors";
     license = licenses.free;
     platforms = platforms.all;
+    mainProgram = "lzbench";
   };
 }
diff --git a/pkgs/tools/compression/lzfse/default.nix b/pkgs/tools/compression/lzfse/default.nix
index 13764971bb516..e5f104a9aef2d 100644
--- a/pkgs/tools/compression/lzfse/default.nix
+++ b/pkgs/tools/compression/lzfse/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.bsd3;
     maintainers = with maintainers; [ ];
+    mainProgram = "lzfse";
   };
 }
diff --git a/pkgs/tools/compression/lzip/default.nix b/pkgs/tools/compression/lzip/default.nix
index b41b3c843da6e..526e3f8c12fc3 100644
--- a/pkgs/tools/compression/lzip/default.nix
+++ b/pkgs/tools/compression/lzip/default.nix
@@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with maintainers; [ vlaci ];
     platforms = lib.platforms.all;
+    mainProgram = "lzip";
   };
 }
diff --git a/pkgs/tools/compression/lziprecover/default.nix b/pkgs/tools/compression/lziprecover/default.nix
index 38840a07092d2..38051d8efbad6 100644
--- a/pkgs/tools/compression/lziprecover/default.nix
+++ b/pkgs/tools/compression/lziprecover/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with maintainers; [ vlaci ];
     platforms = lib.platforms.all;
+    mainProgram = "lziprecover";
   };
 }
diff --git a/pkgs/tools/compression/lzop/default.nix b/pkgs/tools/compression/lzop/default.nix
index 8bf58d9cc3562..64061647667a4 100644
--- a/pkgs/tools/compression/lzop/default.nix
+++ b/pkgs/tools/compression/lzop/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ ];
     license = licenses.gpl2;
     platforms = platforms.unix;
+    mainProgram = "lzop";
   };
 }
diff --git a/pkgs/tools/compression/mozlz4a/default.nix b/pkgs/tools/compression/mozlz4a/default.nix
index 834b7698cf85f..a9ab74bc7a592 100644
--- a/pkgs/tools/compression/mozlz4a/default.nix
+++ b/pkgs/tools/compression/mozlz4a/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ kira-bruneau pshirshov raskin ];
     platforms = python3.meta.platforms;
     homepage = "https://gist.github.com/Tblue/62ff47bef7f894e92ed5";
+    mainProgram = "mozlz4a";
   };
 }
diff --git a/pkgs/tools/compression/nx2elf/default.nix b/pkgs/tools/compression/nx2elf/default.nix
index d4963487ada18..a068788dc1d8f 100644
--- a/pkgs/tools/compression/nx2elf/default.nix
+++ b/pkgs/tools/compression/nx2elf/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     license = licenses.unfree; # No license specified upstream
     platforms = [ "x86_64-linux" ]; # Should work on Darwin as well, but this is untested. aarch64-linux fails.
     maintainers = [ maintainers.ivar ];
+    mainProgram = "nx2elf";
   };
 }
diff --git a/pkgs/tools/compression/offzip/default.nix b/pkgs/tools/compression/offzip/default.nix
index cc79d29a91d95..e756d42572642 100644
--- a/pkgs/tools/compression/offzip/default.nix
+++ b/pkgs/tools/compression/offzip/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with maintainers; [ r-burns ];
     platforms = platforms.unix;
+    mainProgram = "offzip";
   };
 }
diff --git a/pkgs/tools/compression/orz/default.nix b/pkgs/tools/compression/orz/default.nix
index a0c9a4653ca52..b760b0132ef75 100644
--- a/pkgs/tools/compression/orz/default.nix
+++ b/pkgs/tools/compression/orz/default.nix
@@ -35,5 +35,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/richox/orz";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "orz";
   };
 }
diff --git a/pkgs/tools/compression/ouch/default.nix b/pkgs/tools/compression/ouch/default.nix
index 2c645bf56ebfb..b2e4bafc3af13 100644
--- a/pkgs/tools/compression/ouch/default.nix
+++ b/pkgs/tools/compression/ouch/default.nix
@@ -41,5 +41,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/ouch-org/ouch/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda psibi ];
+    mainProgram = "ouch";
   };
 }
diff --git a/pkgs/tools/compression/pbzx/default.nix b/pkgs/tools/compression/pbzx/default.nix
index 03b984bb6435c..44555cd6ddbc5 100644
--- a/pkgs/tools/compression/pbzx/default.nix
+++ b/pkgs/tools/compression/pbzx/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.gpl3;
     maintainers = [ maintainers.matthewbauer ];
+    mainProgram = "pbzx";
   };
 }
diff --git a/pkgs/tools/compression/pixz/default.nix b/pkgs/tools/compression/pixz/default.nix
index a8463f8abc4eb..9eb1d6539cdf9 100644
--- a/pkgs/tools/compression/pixz/default.nix
+++ b/pkgs/tools/compression/pixz/default.nix
@@ -47,5 +47,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = [ maintainers.raskin ];
     platforms = platforms.unix;
+    mainProgram = "pixz";
   };
 }
diff --git a/pkgs/tools/compression/plzip/default.nix b/pkgs/tools/compression/plzip/default.nix
index f8af3a26c8e1f..310ae20749737 100644
--- a/pkgs/tools/compression/plzip/default.nix
+++ b/pkgs/tools/compression/plzip/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.all;
     maintainers = with maintainers; [ _360ied ];
+    mainProgram = "plzip";
   };
 }
diff --git a/pkgs/tools/compression/rzip/default.nix b/pkgs/tools/compression/rzip/default.nix
index 5f878f8c494fd..24f59d25a91f5 100644
--- a/pkgs/tools/compression/rzip/default.nix
+++ b/pkgs/tools/compression/rzip/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ ];
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
+    mainProgram = "rzip";
   };
 }
diff --git a/pkgs/tools/compression/unzrip/default.nix b/pkgs/tools/compression/unzrip/default.nix
index 78b1278d84114..2e92fadd39a91 100644
--- a/pkgs/tools/compression/unzrip/default.nix
+++ b/pkgs/tools/compression/unzrip/default.nix
@@ -31,5 +31,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/quininer/unzrip";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "unzrip";
   };
 }
diff --git a/pkgs/tools/compression/upx/default.nix b/pkgs/tools/compression/upx/default.nix
index 09aab8258a814..9af509100e009 100644
--- a/pkgs/tools/compression/upx/default.nix
+++ b/pkgs/tools/compression/upx/default.nix
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
     description = "The Ultimate Packer for eXecutables";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
+    mainProgram = "upx";
   };
 }
diff --git a/pkgs/tools/compression/xar/default.nix b/pkgs/tools/compression/xar/default.nix
index d4baab17b91fb..fa680ebcf51c5 100644
--- a/pkgs/tools/compression/xar/default.nix
+++ b/pkgs/tools/compression/xar/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license     = lib.licenses.bsd3;
     maintainers = with lib.maintainers; [ copumpkin ];
     platforms   = lib.platforms.all;
+    mainProgram = "xar";
   };
 }
diff --git a/pkgs/tools/compression/zfp/default.nix b/pkgs/tools/compression/zfp/default.nix
index fdb005007f1e9..145f33a1cf8e4 100644
--- a/pkgs/tools/compression/zfp/default.nix
+++ b/pkgs/tools/compression/zfp/default.nix
@@ -52,5 +52,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.spease ];
     # 64-bit only
     platforms = platforms.aarch64 ++ platforms.x86_64;
+    mainProgram = "zfp";
   };
 }
diff --git a/pkgs/tools/graphics/aaphoto/default.nix b/pkgs/tools/graphics/aaphoto/default.nix
index 6df3ed9166131..57744eb6b8ec3 100644
--- a/pkgs/tools/graphics/aaphoto/default.nix
+++ b/pkgs/tools/graphics/aaphoto/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.unix;
+    mainProgram = "aaphoto";
   };
 }
diff --git a/pkgs/tools/graphics/adriconf/default.nix b/pkgs/tools/graphics/adriconf/default.nix
index 35de292a36c87..3d516f8ee113b 100644
--- a/pkgs/tools/graphics/adriconf/default.nix
+++ b/pkgs/tools/graphics/adriconf/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ muscaln ];
     platforms = platforms.linux;
+    mainProgram = "adriconf";
   };
 }
diff --git a/pkgs/tools/graphics/blockhash/default.nix b/pkgs/tools/graphics/blockhash/default.nix
index 0a08e0cd31ff9..a58fcc4e8ec61 100644
--- a/pkgs/tools/graphics/blockhash/default.nix
+++ b/pkgs/tools/graphics/blockhash/default.nix
@@ -26,5 +26,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = [ maintainers.infinisil ];
     platforms = platforms.unix;
+    mainProgram = "blockhash";
   };
 }
diff --git a/pkgs/tools/graphics/blur-effect/default.nix b/pkgs/tools/graphics/blur-effect/default.nix
index e393da508323c..cc88bb0889498 100644
--- a/pkgs/tools/graphics/blur-effect/default.nix
+++ b/pkgs/tools/graphics/blur-effect/default.nix
@@ -29,5 +29,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     broken = stdenv.hostPlatform.isDarwin; # packages 'libdrm' and 'gbm' not found
     maintainers = with maintainers; [ romildo ];
+    mainProgram = "blur_image";
   };
 }
diff --git a/pkgs/tools/graphics/briss/default.nix b/pkgs/tools/graphics/briss/default.nix
index f95c9b527c146..801b8f5a4862c 100644
--- a/pkgs/tools/graphics/briss/default.nix
+++ b/pkgs/tools/graphics/briss/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
     license = lib.licenses.gpl3;
     platforms = lib.platforms.unix;
+    mainProgram = "briss";
   };
 }
diff --git a/pkgs/tools/graphics/cfdg/default.nix b/pkgs/tools/graphics/cfdg/default.nix
index 2f8b506c65bd7..496255c57953b 100644
--- a/pkgs/tools/graphics/cfdg/default.nix
+++ b/pkgs/tools/graphics/cfdg/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     homepage = "https://contextfreeart.org/";
     license = licenses.gpl2Only;
+    mainProgram = "cfdg";
   };
 }
diff --git a/pkgs/tools/graphics/cuneiform/default.nix b/pkgs/tools/graphics/cuneiform/default.nix
index 1a1b52502f7d1..fa4cb75d174b3 100644
--- a/pkgs/tools/graphics/cuneiform/default.nix
+++ b/pkgs/tools/graphics/cuneiform/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation {
     license = licenses.bsd3;
     platforms = platforms.linux;
     maintainers = [ maintainers.raskin ];
+    mainProgram = "cuneiform";
   };
 }
diff --git a/pkgs/tools/graphics/didder/default.nix b/pkgs/tools/graphics/didder/default.nix
index e42a89c72d620..10e97e356daf4 100644
--- a/pkgs/tools/graphics/didder/default.nix
+++ b/pkgs/tools/graphics/didder/default.nix
@@ -29,5 +29,6 @@ buildGoModule rec {
       "An extensive, fast, and accurate command-line image dithering tool";
     license = lib.licenses.gpl3;
     maintainers = with lib.maintainers; [ ehmry ];
+    mainProgram = "didder";
   };
 }
diff --git a/pkgs/tools/graphics/ditaa/default.nix b/pkgs/tools/graphics/ditaa/default.nix
index ab1c6ff74ec31..c6823fbed3696 100644
--- a/pkgs/tools/graphics/ditaa/default.nix
+++ b/pkgs/tools/graphics/ditaa/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.lgpl3;
     platforms = platforms.unix;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "ditaa";
   };
 }
diff --git a/pkgs/tools/graphics/dnglab/default.nix b/pkgs/tools/graphics/dnglab/default.nix
index cb865e51a9c59..9088a1110b7bf 100644
--- a/pkgs/tools/graphics/dnglab/default.nix
+++ b/pkgs/tools/graphics/dnglab/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/dnglab/dnglab";
     license = licenses.lgpl21Only;
     maintainers = with maintainers; [ dit7ya ];
+    mainProgram = "dnglab";
   };
 }
diff --git a/pkgs/tools/graphics/dpic/default.nix b/pkgs/tools/graphics/dpic/default.nix
index 1a4161dd62062..fb3e0c19bf826 100644
--- a/pkgs/tools/graphics/dpic/default.nix
+++ b/pkgs/tools/graphics/dpic/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
     license = licenses.bsd2;
     maintainers = with maintainers; [ aespinosa ];
     platforms = platforms.all;
+    mainProgram = "dpic";
   };
 }
 
diff --git a/pkgs/tools/graphics/editres/default.nix b/pkgs/tools/graphics/editres/default.nix
index ca9be631942a4..ce8b2e0a4ff6a 100644
--- a/pkgs/tools/graphics/editres/default.nix
+++ b/pkgs/tools/graphics/editres/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     description = "A dynamic resource editor for X Toolkit applications";
     license = licenses.mit;
     platforms = platforms.linux;
+    mainProgram = "editres";
   };
 }
diff --git a/pkgs/tools/graphics/epstool/default.nix b/pkgs/tools/graphics/epstool/default.nix
index cdb1f75cb2c39..5952734e45822 100644
--- a/pkgs/tools/graphics/epstool/default.nix
+++ b/pkgs/tools/graphics/epstool/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.asppsa ];
     platforms = platforms.all;
+    mainProgram = "epstool";
   };
 }
diff --git a/pkgs/tools/graphics/escrotum/default.nix b/pkgs/tools/graphics/escrotum/default.nix
index 04c245dbd9a63..c2e5a7ec9a719 100644
--- a/pkgs/tools/graphics/escrotum/default.nix
+++ b/pkgs/tools/graphics/escrotum/default.nix
@@ -47,5 +47,6 @@ with python3Packages; buildPythonApplication {
     platforms = platforms.linux;
     maintainers = with maintainers; [ rasendubi ];
     license = licenses.gpl3;
+    mainProgram = "escrotum";
   };
 }
diff --git a/pkgs/tools/graphics/esshader/default.nix b/pkgs/tools/graphics/esshader/default.nix
index 2e2e9ddbd65e4..38bd4d1b7f0ad 100644
--- a/pkgs/tools/graphics/esshader/default.nix
+++ b/pkgs/tools/graphics/esshader/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation {
     platforms = lib.platforms.unix;
     # never built on aarch64-darwin, x86_64-darwin since first introduction in nixpkgs
     broken = stdenv.isDarwin;
+    mainProgram = "esshader";
   };
 }
diff --git a/pkgs/tools/graphics/exif/default.nix b/pkgs/tools/graphics/exif/default.nix
index f07f3d05541e9..437ae29a2f50b 100644
--- a/pkgs/tools/graphics/exif/default.nix
+++ b/pkgs/tools/graphics/exif/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     description = "A utility to read and manipulate EXIF data in digital photographs";
     platforms = platforms.unix;
     license = licenses.lgpl21Plus;
+    mainProgram = "exif";
   };
 }
diff --git a/pkgs/tools/graphics/facedetect/default.nix b/pkgs/tools/graphics/facedetect/default.nix
index d62f077e06d7d..d83501d26da6f 100644
--- a/pkgs/tools/graphics/facedetect/default.nix
+++ b/pkgs/tools/graphics/facedetect/default.nix
@@ -41,5 +41,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.rycee ];
+    mainProgram = "facedetect";
   };
 }
diff --git a/pkgs/tools/graphics/fbv/default.nix b/pkgs/tools/graphics/fbv/default.nix
index 5b46d5d2268dc..659a661fded8a 100644
--- a/pkgs/tools/graphics/fbv/default.nix
+++ b/pkgs/tools/graphics/fbv/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation rec {
     homepage = "http://s-tech.elsat.net.pl/fbv/";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ peterhoeg ];
+    mainProgram = "fbv";
   };
 }
diff --git a/pkgs/tools/graphics/feedgnuplot/default.nix b/pkgs/tools/graphics/feedgnuplot/default.nix
index 827481af497c1..6503a2887ab2f 100644
--- a/pkgs/tools/graphics/feedgnuplot/default.nix
+++ b/pkgs/tools/graphics/feedgnuplot/default.nix
@@ -62,5 +62,6 @@ perlPackages.buildPerlPackage rec {
     license = with licenses; [ artistic1 gpl1Plus ];
     platforms = platforms.unix;
     maintainers = with maintainers; [ mnacamura ];
+    mainProgram = "feedgnuplot";
   };
 }
diff --git a/pkgs/tools/graphics/fgallery/default.nix b/pkgs/tools/graphics/fgallery/default.nix
index 7af5c6129f252..be8bc4eb6eabe 100644
--- a/pkgs/tools/graphics/fgallery/default.nix
+++ b/pkgs/tools/graphics/fgallery/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     platforms = platforms.all;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "fgallery";
   };
 }
diff --git a/pkgs/tools/graphics/ggobi/default.nix b/pkgs/tools/graphics/ggobi/default.nix
index 4e1b851735f06..2bd5abf006663 100644
--- a/pkgs/tools/graphics/ggobi/default.nix
+++ b/pkgs/tools/graphics/ggobi/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.cpl10;
     platforms = platforms.linux;
     maintainers = [ maintainers.michelk ];
+    mainProgram = "ggobi";
   };
 }
diff --git a/pkgs/tools/graphics/gnuplot/default.nix b/pkgs/tools/graphics/gnuplot/default.nix
index f0fa45e59e4d9..1d07707b57e40 100644
--- a/pkgs/tools/graphics/gnuplot/default.nix
+++ b/pkgs/tools/graphics/gnuplot/default.nix
@@ -88,5 +88,6 @@ in
       url = "https://sourceforge.net/p/gnuplot/gnuplot-main/ci/master/tree/Copyright";
     };
     maintainers = with maintainers; [ lovek323 ];
+    mainProgram = "gnuplot";
   };
 }
diff --git a/pkgs/tools/graphics/goverlay/default.nix b/pkgs/tools/graphics/goverlay/default.nix
index d4f88a770a01d..b73216a7875c2 100644
--- a/pkgs/tools/graphics/goverlay/default.nix
+++ b/pkgs/tools/graphics/goverlay/default.nix
@@ -113,5 +113,6 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ kira-bruneau ];
     platforms = platforms.linux;
+    mainProgram = "goverlay";
   };
 }
diff --git a/pkgs/tools/graphics/graph-cli/default.nix b/pkgs/tools/graphics/graph-cli/default.nix
index c504d6b271562..be6769d85e9ad 100644
--- a/pkgs/tools/graphics/graph-cli/default.nix
+++ b/pkgs/tools/graphics/graph-cli/default.nix
@@ -28,5 +28,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/mcastorina/graph-cli/";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ leungbk ];
+    mainProgram = "graph";
   };
 }
diff --git a/pkgs/tools/graphics/graph-easy/default.nix b/pkgs/tools/graphics/graph-easy/default.nix
index 4f3b89eea9170..668c7527e9e4f 100644
--- a/pkgs/tools/graphics/graph-easy/default.nix
+++ b/pkgs/tools/graphics/graph-easy/default.nix
@@ -13,5 +13,6 @@ perlPackages.buildPerlPackage {
     license = licenses.gpl1Only;
     platforms = platforms.unix;
     maintainers = [ maintainers.jensbin ];
+    mainProgram = "graph-easy";
   };
 }
diff --git a/pkgs/tools/graphics/gromit-mpx/default.nix b/pkgs/tools/graphics/gromit-mpx/default.nix
index d98ee8733a04c..0a54626419b59 100644
--- a/pkgs/tools/graphics/gromit-mpx/default.nix
+++ b/pkgs/tools/graphics/gromit-mpx/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     maintainers = with maintainers; [ pjones ];
     platforms = platforms.linux;
     license = licenses.gpl2Plus;
+    mainProgram = "gromit-mpx";
   };
 }
diff --git a/pkgs/tools/graphics/guff/default.nix b/pkgs/tools/graphics/guff/default.nix
index daca6f4344eb7..2ca68376baa27 100644
--- a/pkgs/tools/graphics/guff/default.nix
+++ b/pkgs/tools/graphics/guff/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = [ maintainers.marsam ];
     platforms = platforms.all;
+    mainProgram = "guff";
   };
 }
diff --git a/pkgs/tools/graphics/ibniz/default.nix b/pkgs/tools/graphics/ibniz/default.nix
index a74267846c1d6..04aadf911e1e1 100644
--- a/pkgs/tools/graphics/ibniz/default.nix
+++ b/pkgs/tools/graphics/ibniz/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license = licenses.zlib;
     platforms = platforms.linux;
     maintainers = [ maintainers.dezgeg ];
+    mainProgram = "ibniz";
   };
 }
diff --git a/pkgs/tools/graphics/imgur-screenshot/default.nix b/pkgs/tools/graphics/imgur-screenshot/default.nix
index 885638c28b8ce..fe23866bda0bb 100644
--- a/pkgs/tools/graphics/imgur-screenshot/default.nix
+++ b/pkgs/tools/graphics/imgur-screenshot/default.nix
@@ -25,5 +25,6 @@ in stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.mit;
     maintainers = with maintainers; [ lw ];
+    mainProgram = "imgur-screenshot";
   };
 }
diff --git a/pkgs/tools/graphics/imgurbash2/default.nix b/pkgs/tools/graphics/imgurbash2/default.nix
index 6c0e827a84881..e577c8be5a3d2 100644
--- a/pkgs/tools/graphics/imgurbash2/default.nix
+++ b/pkgs/tools/graphics/imgurbash2/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     maintainers = with maintainers; [ abbradar ];
     homepage = "https://github.com/ram-on/imgurbash2";
+    mainProgram = "imgurbash2";
   };
 }
diff --git a/pkgs/tools/graphics/jhead/default.nix b/pkgs/tools/graphics/jhead/default.nix
index 35000088fea9b..391780a4df350 100644
--- a/pkgs/tools/graphics/jhead/default.nix
+++ b/pkgs/tools/graphics/jhead/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = licenses.publicDomain;
     maintainers = with maintainers; [ rycee ];
     platforms = platforms.all;
+    mainProgram = "jhead";
   };
 }
diff --git a/pkgs/tools/graphics/jpegexiforient/default.nix b/pkgs/tools/graphics/jpegexiforient/default.nix
index 09d096e7b687b..bdf2ce12e837b 100644
--- a/pkgs/tools/graphics/jpegexiforient/default.nix
+++ b/pkgs/tools/graphics/jpegexiforient/default.nix
@@ -23,5 +23,6 @@ stdenv.mkDerivation {
     license = licenses.free;
     platforms = platforms.all;
     maintainers = with maintainers; [ infinisil ];
+    mainProgram = "jpegexiforient";
   };
 }
diff --git a/pkgs/tools/graphics/leela/default.nix b/pkgs/tools/graphics/leela/default.nix
index 6676e47ad492e..7ddf02d163693 100644
--- a/pkgs/tools/graphics/leela/default.nix
+++ b/pkgs/tools/graphics/leela/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation {
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.puffnfresh ];
     platforms = lib.platforms.linux;
+    mainProgram = "leela";
   };
 }
diff --git a/pkgs/tools/graphics/logstalgia/default.nix b/pkgs/tools/graphics/logstalgia/default.nix
index 8edde6e3f428b..69084a8b53702 100644
--- a/pkgs/tools/graphics/logstalgia/default.nix
+++ b/pkgs/tools/graphics/logstalgia/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
 
     platforms = platforms.gnu ++ platforms.linux;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "logstalgia";
   };
 }
diff --git a/pkgs/tools/graphics/lsix/default.nix b/pkgs/tools/graphics/lsix/default.nix
index dcf078654b82d..7cbe2ee8626c4 100644
--- a/pkgs/tools/graphics/lsix/default.nix
+++ b/pkgs/tools/graphics/lsix/default.nix
@@ -32,5 +32,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.gpl3Only;
     platforms = platforms.all;
     maintainers = with maintainers; [ kidonng ];
+    mainProgram = "lsix";
   };
 }
diff --git a/pkgs/tools/graphics/mscgen/default.nix b/pkgs/tools/graphics/mscgen/default.nix
index 7eb1d6cce8184..a391a62ccb68b 100644
--- a/pkgs/tools/graphics/mscgen/default.nix
+++ b/pkgs/tools/graphics/mscgen/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     '';
 
     platforms = lib.platforms.unix;
+    mainProgram = "mscgen";
   };
 }
diff --git a/pkgs/tools/graphics/nifskope/default.nix b/pkgs/tools/graphics/nifskope/default.nix
index f74b720ea9ea3..056b3ad8d0651 100644
--- a/pkgs/tools/graphics/nifskope/default.nix
+++ b/pkgs/tools/graphics/nifskope/default.nix
@@ -63,5 +63,6 @@ stdenv.mkDerivation {
     maintainers = with maintainers; [ eelco ];
     platforms = platforms.linux;
     license = licenses.bsd3;
+    mainProgram = "NifSkope";
   };
 }
diff --git a/pkgs/tools/graphics/nip2/default.nix b/pkgs/tools/graphics/nip2/default.nix
index 08ec885aed143..651baf547a9e7 100644
--- a/pkgs/tools/graphics/nip2/default.nix
+++ b/pkgs/tools/graphics/nip2/default.nix
@@ -52,5 +52,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ kovirobi ];
     platforms = platforms.unix;
+    mainProgram = "nip2";
   };
 }
diff --git a/pkgs/tools/graphics/optipng/default.nix b/pkgs/tools/graphics/optipng/default.nix
index 2f70dec897c04..bbabcaf6b8000 100644
--- a/pkgs/tools/graphics/optipng/default.nix
+++ b/pkgs/tools/graphics/optipng/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     description = "A PNG optimizer";
     license = licenses.zlib;
     platforms = platforms.unix;
+    mainProgram = "optipng";
   };
 }
diff --git a/pkgs/tools/graphics/oxipng/default.nix b/pkgs/tools/graphics/oxipng/default.nix
index 8f4793edb45d8..23f9692597a3a 100644
--- a/pkgs/tools/graphics/oxipng/default.nix
+++ b/pkgs/tools/graphics/oxipng/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     description = "A multithreaded lossless PNG compression optimizer";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ dywedir ];
+    mainProgram = "oxipng";
   };
 }
diff --git a/pkgs/tools/graphics/pdf2svg/default.nix b/pkgs/tools/graphics/pdf2svg/default.nix
index c6d2eab45376d..b68ba12ebfe9b 100644
--- a/pkgs/tools/graphics/pdf2svg/default.nix
+++ b/pkgs/tools/graphics/pdf2svg/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.ianwookim ];
     platforms = platforms.unix;
+    mainProgram = "pdf2svg";
   };
 }
diff --git a/pkgs/tools/graphics/pdftag/default.nix b/pkgs/tools/graphics/pdftag/default.nix
index c10412c976cef..90b8dde05f37c 100644
--- a/pkgs/tools/graphics/pdftag/default.nix
+++ b/pkgs/tools/graphics/pdftag/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     maintainers = with maintainers; [ leenaars ];
     platforms = platforms.unix;
+    mainProgram = "pdftag";
   };
 }
diff --git a/pkgs/tools/graphics/pdftoipe/default.nix b/pkgs/tools/graphics/pdftoipe/default.nix
index d7e757e679bf5..e969d90f9e05b 100644
--- a/pkgs/tools/graphics/pdftoipe/default.nix
+++ b/pkgs/tools/graphics/pdftoipe/default.nix
@@ -50,5 +50,6 @@ stdenv.mkDerivation rec {
     changelog = "https://github.com/otfried/ipe-tools/releases";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ yrd ];
+    mainProgram = "pdftoipe";
   };
 }
diff --git a/pkgs/tools/graphics/perceptualdiff/default.nix b/pkgs/tools/graphics/perceptualdiff/default.nix
index 919b99327110a..aa88b33aa3819 100644
--- a/pkgs/tools/graphics/perceptualdiff/default.nix
+++ b/pkgs/tools/graphics/perceptualdiff/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ uri-canva ];
     platforms = platforms.unix;
+    mainProgram = "perceptualdiff";
   };
 }
diff --git a/pkgs/tools/graphics/piglit/default.nix b/pkgs/tools/graphics/piglit/default.nix
index 561268b3f4b3a..aa076d1b84e08 100644
--- a/pkgs/tools/graphics/piglit/default.nix
+++ b/pkgs/tools/graphics/piglit/default.nix
@@ -73,5 +73,6 @@ stdenv.mkDerivation rec {
     license = licenses.free; # custom license. See COPYING in the source repo.
     platforms = platforms.mesaPlatforms;
     maintainers = with maintainers; [ Flakebi ];
+    mainProgram = "piglit";
   };
 }
diff --git a/pkgs/tools/graphics/pixel2svg/default.nix b/pkgs/tools/graphics/pixel2svg/default.nix
index 8e5e866249003..1094cad56a331 100644
--- a/pkgs/tools/graphics/pixel2svg/default.nix
+++ b/pkgs/tools/graphics/pixel2svg/default.nix
@@ -16,5 +16,6 @@ python310Packages.buildPythonPackage rec {
     description = "Converts pixel art to SVG - pixel by pixel";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ annaaurora ];
+    mainProgram = "pixel2svg.py";
   };
 }
diff --git a/pkgs/tools/graphics/pngcheck/default.nix b/pkgs/tools/graphics/pngcheck/default.nix
index a90881dad224a..d6ed7a6960fc3 100644
--- a/pkgs/tools/graphics/pngcheck/default.nix
+++ b/pkgs/tools/graphics/pngcheck/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.free;
     platforms = platforms.unix;
     maintainers = with maintainers; [ starcraft66 ];
+    mainProgram = "pngcheck";
   };
 }
diff --git a/pkgs/tools/graphics/pngcrush/default.nix b/pkgs/tools/graphics/pngcrush/default.nix
index 16c710ceb79f6..8ce9965eae254 100644
--- a/pkgs/tools/graphics/pngcrush/default.nix
+++ b/pkgs/tools/graphics/pngcrush/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     description = "A PNG optimizer";
     license = lib.licenses.free;
     platforms = with lib.platforms; linux ++ darwin;
+    mainProgram = "pngcrush";
   };
 }
diff --git a/pkgs/tools/graphics/pngloss/default.nix b/pkgs/tools/graphics/pngloss/default.nix
index eafd77054e40b..7eca91f42d7dc 100644
--- a/pkgs/tools/graphics/pngloss/default.nix
+++ b/pkgs/tools/graphics/pngloss/default.nix
@@ -31,5 +31,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ _2gn ];
+    mainProgram = "pngloss";
   };
 }
diff --git a/pkgs/tools/graphics/pngout/default.nix b/pkgs/tools/graphics/pngout/default.nix
index 2b86f5e5e1365..c80d4a65adc96 100644
--- a/pkgs/tools/graphics/pngout/default.nix
+++ b/pkgs/tools/graphics/pngout/default.nix
@@ -46,5 +46,6 @@ stdenv.mkDerivation rec {
     homepage = "http://advsys.net/ken/utils.htm";
     platforms = lib.attrNames platforms;
     maintainers = [ lib.maintainers.sander ];
+    mainProgram = "pngout";
   };
 }
diff --git a/pkgs/tools/graphics/pngtoico/default.nix b/pkgs/tools/graphics/pngtoico/default.nix
index 7abf94f0a3e14..c480f99651dc2 100644
--- a/pkgs/tools/graphics/pngtoico/default.nix
+++ b/pkgs/tools/graphics/pngtoico/default.nix
@@ -20,5 +20,6 @@ stdenv.mkDerivation rec {
     description = "Small utility to convert a set of PNG images to Microsoft ICO format";
     license = lib.licenses.gpl2Plus;
     platforms = with lib.platforms; linux;
+    mainProgram = "pngtoico";
   };
 }
diff --git a/pkgs/tools/graphics/povray/default.nix b/pkgs/tools/graphics/povray/default.nix
index f9a08543fb956..5e432a0d13c4c 100644
--- a/pkgs/tools/graphics/povray/default.nix
+++ b/pkgs/tools/graphics/povray/default.nix
@@ -57,5 +57,6 @@ stdenv.mkDerivation rec {
     description = "Persistence of Vision Raytracer";
     license = licenses.free;
     platforms = platforms.linux;
+    mainProgram = "povray";
   };
 }
diff --git a/pkgs/tools/graphics/pstoedit/default.nix b/pkgs/tools/graphics/pstoedit/default.nix
index df3d1c6a69386..3bd4c1a86fbcf 100644
--- a/pkgs/tools/graphics/pstoedit/default.nix
+++ b/pkgs/tools/graphics/pstoedit/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2;
     maintainers = [ maintainers.marcweber ];
     platforms = platforms.unix;
+    mainProgram = "pstoedit";
   };
 }
diff --git a/pkgs/tools/graphics/qrcode/default.nix b/pkgs/tools/graphics/qrcode/default.nix
index 3f14044040055..ce623e25db0e2 100644
--- a/pkgs/tools/graphics/qrcode/default.nix
+++ b/pkgs/tools/graphics/qrcode/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ raskin ];
     platforms = with platforms; unix;
+    mainProgram = "qrcode";
   };
 }
diff --git a/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix b/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix
index 05cb130467a7a..107a09a0ff928 100644
--- a/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix
+++ b/pkgs/tools/graphics/realesrgan-ncnn-vulkan/default.nix
@@ -60,5 +60,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ tilcreator ];
     platforms = platforms.all;
+    mainProgram = "realesrgan-ncnn-vulkan";
   };
 }
diff --git a/pkgs/tools/graphics/s2png/default.nix b/pkgs/tools/graphics/s2png/default.nix
index d3f8b74512a80..940e9db05419b 100644
--- a/pkgs/tools/graphics/s2png/default.nix
+++ b/pkgs/tools/graphics/s2png/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2;
     maintainers = [ lib.maintainers.dbohdan ];
     platforms = lib.platforms.unix;
+    mainProgram = "s2png";
   };
 }
diff --git a/pkgs/tools/graphics/sanjuuni/default.nix b/pkgs/tools/graphics/sanjuuni/default.nix
index 71807b0db0195..6b96e6ad5a92b 100644
--- a/pkgs/tools/graphics/sanjuuni/default.nix
+++ b/pkgs/tools/graphics/sanjuuni/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     maintainers = [ maintainers.tomodachi94 ];
     license = licenses.gpl2Plus;
     broken = stdenv.isDarwin;
+    mainProgram = "sanjuuni";
   };
 }
diff --git a/pkgs/tools/graphics/shot-scraper/default.nix b/pkgs/tools/graphics/shot-scraper/default.nix
index e083014f8a983..60aee277b60f5 100644
--- a/pkgs/tools/graphics/shot-scraper/default.nix
+++ b/pkgs/tools/graphics/shot-scraper/default.nix
@@ -35,5 +35,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/simonw/shot-scraper/releases/tag/${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ techknowlogick ];
+    mainProgram = "shot-scraper";
   };
 }
diff --git a/pkgs/tools/graphics/shotgun/default.nix b/pkgs/tools/graphics/shotgun/default.nix
index 30d676d4b2efe..d2d3c92982f69 100644
--- a/pkgs/tools/graphics/shotgun/default.nix
+++ b/pkgs/tools/graphics/shotgun/default.nix
@@ -19,5 +19,6 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ mpl20 ];
     maintainers = with maintainers; [ figsoda lumi novenary ];
     platforms = platforms.linux;
+    mainProgram = "shotgun";
   };
 }
diff --git a/pkgs/tools/graphics/smartcrop/default.nix b/pkgs/tools/graphics/smartcrop/default.nix
index d08c11fd3ebf2..7660607a9a479 100644
--- a/pkgs/tools/graphics/smartcrop/default.nix
+++ b/pkgs/tools/graphics/smartcrop/default.nix
@@ -23,5 +23,6 @@ buildGoModule {
     homepage = "https://github.com/muesli/smartcrop";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "smartcrop";
   };
 }
diff --git a/pkgs/tools/graphics/sng/default.nix b/pkgs/tools/graphics/sng/default.nix
index 8ebfd967828be..a8db32128a5e4 100644
--- a/pkgs/tools/graphics/sng/default.nix
+++ b/pkgs/tools/graphics/sng/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.zlib;
     maintainers = [ maintainers.dezgeg ];
     platforms = platforms.unix;
+    mainProgram = "sng";
   };
 }
diff --git a/pkgs/tools/graphics/spirv-cross/default.nix b/pkgs/tools/graphics/spirv-cross/default.nix
index 642a49c39b843..cd7489be9aec7 100644
--- a/pkgs/tools/graphics/spirv-cross/default.nix
+++ b/pkgs/tools/graphics/spirv-cross/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation (finalAttrs: {
     platforms = platforms.all;
     license = licenses.asl20;
     maintainers = with maintainers; [ Flakebi ];
+    mainProgram = "spirv-cross";
   };
 })
diff --git a/pkgs/tools/graphics/steghide/default.nix b/pkgs/tools/graphics/steghide/default.nix
index 74011917d5fbf..c62761bb2a213 100644
--- a/pkgs/tools/graphics/steghide/default.nix
+++ b/pkgs/tools/graphics/steghide/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation (finalAttrs: {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = with platforms; unix;
+    mainProgram = "steghide";
   };
 })
diff --git a/pkgs/tools/graphics/stegsolve/default.nix b/pkgs/tools/graphics/stegsolve/default.nix
index 3f147ab0decab..a42b3c304b288 100644
--- a/pkgs/tools/graphics/stegsolve/default.nix
+++ b/pkgs/tools/graphics/stegsolve/default.nix
@@ -55,5 +55,6 @@ stdenvNoCC.mkDerivation (finalAttrs: {
     };
     maintainers = with maintainers; [ emilytrau ];
     platforms = platforms.all;
+    mainProgram = "stegsolve";
   };
 })
diff --git a/pkgs/tools/graphics/svg2pdf/default.nix b/pkgs/tools/graphics/svg2pdf/default.nix
index 27ef2edd0fa8a..d92fa5802d876 100644
--- a/pkgs/tools/graphics/svg2pdf/default.nix
+++ b/pkgs/tools/graphics/svg2pdf/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/typst/svg2pdf/releases/tag/${src.rev}";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ doronbehar figsoda ];
+    mainProgram = "svg2pdf";
   };
 }
diff --git a/pkgs/tools/graphics/svgbob/default.nix b/pkgs/tools/graphics/svgbob/default.nix
index e5974d04e1ae1..b09d8dee1ab0a 100644
--- a/pkgs/tools/graphics/svgbob/default.nix
+++ b/pkgs/tools/graphics/svgbob/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/ivanceras/svgbob/raw/${version}/Changelog.md";
     license = licenses.asl20;
     maintainers = [ maintainers.marsam ];
+    mainProgram = "svgbob";
   };
 }
diff --git a/pkgs/tools/graphics/svgcleaner/default.nix b/pkgs/tools/graphics/svgcleaner/default.nix
index c2938a69b57ac..1ec42817456a0 100644
--- a/pkgs/tools/graphics/svgcleaner/default.nix
+++ b/pkgs/tools/graphics/svgcleaner/default.nix
@@ -22,5 +22,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/RazrFalcon/svgcleaner/releases";
     license = licenses.gpl2;
     maintainers = with maintainers; [ yuu ];
+    mainProgram = "svgcleaner";
   };
 }
diff --git a/pkgs/tools/graphics/textplots/default.nix b/pkgs/tools/graphics/textplots/default.nix
index a423ca9f30e27..81d9b5de3e367 100644
--- a/pkgs/tools/graphics/textplots/default.nix
+++ b/pkgs/tools/graphics/textplots/default.nix
@@ -18,5 +18,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/loony-bean/textplots-rs";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "textplots";
   };
 }
diff --git a/pkgs/tools/graphics/texture-synthesis/default.nix b/pkgs/tools/graphics/texture-synthesis/default.nix
index d4f66357fadcf..7122450587a71 100644
--- a/pkgs/tools/graphics/texture-synthesis/default.nix
+++ b/pkgs/tools/graphics/texture-synthesis/default.nix
@@ -26,5 +26,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/embarkstudios/texture-synthesis";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "texture-synthesis";
   };
 }
diff --git a/pkgs/tools/graphics/twilight/default.nix b/pkgs/tools/graphics/twilight/default.nix
index 58d4d0df91338..52941f7b96d7f 100644
--- a/pkgs/tools/graphics/twilight/default.nix
+++ b/pkgs/tools/graphics/twilight/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ ];
+    mainProgram = "twilight";
   };
 }
diff --git a/pkgs/tools/graphics/viu/default.nix b/pkgs/tools/graphics/viu/default.nix
index ade2dd7331bff..83c97376676ac 100644
--- a/pkgs/tools/graphics/viu/default.nix
+++ b/pkgs/tools/graphics/viu/default.nix
@@ -29,5 +29,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/atanunq/viu";
     license = licenses.mit;
     maintainers = with maintainers; [ chuangzhu ];
+    mainProgram = "viu";
   };
 }
diff --git a/pkgs/tools/graphics/vkbasalt-cli/default.nix b/pkgs/tools/graphics/vkbasalt-cli/default.nix
index 0d54f695e9af6..efe704ace2935 100644
--- a/pkgs/tools/graphics/vkbasalt-cli/default.nix
+++ b/pkgs/tools/graphics/vkbasalt-cli/default.nix
@@ -27,5 +27,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://gitlab.com/TheEvilSkeleton/vkbasalt-cli";
     license = with licenses; [ lgpl3Only gpl3Only ];
     maintainers = with maintainers; [ martfont ];
+    mainProgram = "vkbasalt";
   };
 }
diff --git a/pkgs/tools/graphics/vkdisplayinfo/default.nix b/pkgs/tools/graphics/vkdisplayinfo/default.nix
index a48c4d1154fe6..3a88b2e21147e 100644
--- a/pkgs/tools/graphics/vkdisplayinfo/default.nix
+++ b/pkgs/tools/graphics/vkdisplayinfo/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.linux;
     license = licenses.boost;
     maintainers = [ maintainers.LunNova ];
+    mainProgram = "vkdisplayinfo";
   };
 }
diff --git a/pkgs/tools/graphics/vkmark/default.nix b/pkgs/tools/graphics/vkmark/default.nix
index 2923c786507ee..d9c4f8a2024f3 100644
--- a/pkgs/tools/graphics/vkmark/default.nix
+++ b/pkgs/tools/graphics/vkmark/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = with licenses; [ lgpl21Plus ];
     platforms = platforms.linux;
     maintainers = with maintainers; [ muscaln ];
+    mainProgram = "vkmark";
   };
 }
diff --git a/pkgs/tools/graphics/vulkan-helper/default.nix b/pkgs/tools/graphics/vulkan-helper/default.nix
index 8db735c662e84..404ce734b5b31 100644
--- a/pkgs/tools/graphics/vulkan-helper/default.nix
+++ b/pkgs/tools/graphics/vulkan-helper/default.nix
@@ -33,5 +33,6 @@ rustPlatform.buildRustPackage rec {
     license = licenses.mit;
     maintainers = with maintainers; [ aidalgol ];
     platforms = platforms.linux;
+    mainProgram = "vulkan-helper";
   };
 }
diff --git a/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix b/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix
index f936ab83fb560..dd2c15c8fda45 100644
--- a/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix
+++ b/pkgs/tools/graphics/waifu2x-converter-cpp/default.nix
@@ -42,5 +42,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.xzfc ];
     platforms = lib.platforms.linux ++ lib.platforms.darwin;
+    mainProgram = "waifu2x-converter-cpp";
   };
 }
diff --git a/pkgs/tools/graphics/xcolor/default.nix b/pkgs/tools/graphics/xcolor/default.nix
index dabe14d895fa7..50aa912522d99 100644
--- a/pkgs/tools/graphics/xcolor/default.nix
+++ b/pkgs/tools/graphics/xcolor/default.nix
@@ -43,5 +43,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/Soft/xcolor";
     maintainers = with lib.maintainers; [ moni ];
     license = licenses.mit;
+    mainProgram = "xcolor";
   };
 }
diff --git a/pkgs/tools/graphics/xcur2png/default.nix b/pkgs/tools/graphics/xcur2png/default.nix
index e8d761c6d8420..5d5396aea273f 100644
--- a/pkgs/tools/graphics/xcur2png/default.nix
+++ b/pkgs/tools/graphics/xcur2png/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3;
     platforms = platforms.unix;
     maintainers = with maintainers; [ romildo ];
+    mainProgram = "xcur2png";
   };
 }
diff --git a/pkgs/tools/graphics/yaxg/default.nix b/pkgs/tools/graphics/yaxg/default.nix
index 9d83ae71d3335..dd428ae0c427f 100644
--- a/pkgs/tools/graphics/yaxg/default.nix
+++ b/pkgs/tools/graphics/yaxg/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.all;
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ neonfuz ];
+    mainProgram = "yaxg";
   };
 }
diff --git a/pkgs/tools/llm/gorilla-cli/default.nix b/pkgs/tools/llm/gorilla-cli/default.nix
index ff5e3468ef918..276793c2c8bc9 100644
--- a/pkgs/tools/llm/gorilla-cli/default.nix
+++ b/pkgs/tools/llm/gorilla-cli/default.nix
@@ -34,5 +34,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/gorilla-llm/gorilla-cli";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
+    mainProgram = "gorilla";
   };
 }
diff --git a/pkgs/tools/security/agebox/default.nix b/pkgs/tools/security/agebox/default.nix
index ea50c8779b3da..b87cb2b8ca2af 100644
--- a/pkgs/tools/security/agebox/default.nix
+++ b/pkgs/tools/security/agebox/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     description = "Age based repository file encryption gitops tool";
     license = licenses.asl20;
     maintainers = with maintainers; [ lesuisse ];
+    mainProgram = "agebox";
   };
 }
diff --git a/pkgs/tools/security/apkleaks/default.nix b/pkgs/tools/security/apkleaks/default.nix
index 133601e4025f0..29a0b17ccb326 100644
--- a/pkgs/tools/security/apkleaks/default.nix
+++ b/pkgs/tools/security/apkleaks/default.nix
@@ -33,5 +33,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/dwisiswant0/apkleaks";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "apkleaks";
   };
 }
diff --git a/pkgs/tools/security/bao/default.nix b/pkgs/tools/security/bao/default.nix
index f948bccc5f43b..503896885c13f 100644
--- a/pkgs/tools/security/bao/default.nix
+++ b/pkgs/tools/security/bao/default.nix
@@ -20,5 +20,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/oconnor663/bao";
     maintainers = with lib.maintainers; [ amarshall ];
     license = with lib.licenses; [ cc0 asl20 ];
+    mainProgram = "bao";
   };
 }
diff --git a/pkgs/tools/security/bettercap/default.nix b/pkgs/tools/security/bettercap/default.nix
index 69736b4cc3081..2ece9ee6e4c40 100644
--- a/pkgs/tools/security/bettercap/default.nix
+++ b/pkgs/tools/security/bettercap/default.nix
@@ -37,5 +37,6 @@ buildGoModule rec {
     homepage = "https://www.bettercap.org/";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ y0no ];
+    mainProgram = "bettercap";
   };
 }
diff --git a/pkgs/tools/security/ctmg/default.nix b/pkgs/tools/security/ctmg/default.nix
index b08af06825e3c..81d57513aac37 100644
--- a/pkgs/tools/security/ctmg/default.nix
+++ b/pkgs/tools/security/ctmg/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ mrVanDalo ];
     platforms = platforms.linux;
+    mainProgram = "ctmg";
   };
 }
diff --git a/pkgs/tools/security/cyclonedx-gomod/default.nix b/pkgs/tools/security/cyclonedx-gomod/default.nix
index 1c404aa3f8369..d9e740fcf644c 100644
--- a/pkgs/tools/security/cyclonedx-gomod/default.nix
+++ b/pkgs/tools/security/cyclonedx-gomod/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     changelog = "https://github.com/CycloneDX/cyclonedx-gomod/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "cyclonedx-gomod";
   };
 }
diff --git a/pkgs/tools/security/dalfox/default.nix b/pkgs/tools/security/dalfox/default.nix
index 85fc3c55a3b04..b6d21b801efca 100644
--- a/pkgs/tools/security/dalfox/default.nix
+++ b/pkgs/tools/security/dalfox/default.nix
@@ -25,5 +25,6 @@ buildGoModule rec {
     changelog = "https://github.com/hahwul/dalfox/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "dalfox";
   };
 }
diff --git a/pkgs/tools/security/dismember/default.nix b/pkgs/tools/security/dismember/default.nix
index 2dffd8116b9cc..cb2dd99b45c57 100644
--- a/pkgs/tools/security/dismember/default.nix
+++ b/pkgs/tools/security/dismember/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/liamg/dismember";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "dismember";
   };
 }
diff --git a/pkgs/tools/security/erosmb/default.nix b/pkgs/tools/security/erosmb/default.nix
index b7984feac5136..f03e9a958de20 100644
--- a/pkgs/tools/security/erosmb/default.nix
+++ b/pkgs/tools/security/erosmb/default.nix
@@ -44,5 +44,6 @@ python3.pkgs.buildPythonApplication rec {
     changelog = "https://github.com/viktor02/EroSmb/releases/tag/v${version}";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "erosmb";
   };
 }
diff --git a/pkgs/tools/security/feroxbuster/default.nix b/pkgs/tools/security/feroxbuster/default.nix
index 7ff4c2e12458c..18af1a0f1c486 100644
--- a/pkgs/tools/security/feroxbuster/default.nix
+++ b/pkgs/tools/security/feroxbuster/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
     platforms = platforms.unix;
+    mainProgram = "feroxbuster";
   };
 }
 
diff --git a/pkgs/tools/security/fscan/default.nix b/pkgs/tools/security/fscan/default.nix
index f334555ad1ecd..cda7fb968d3dc 100644
--- a/pkgs/tools/security/fscan/default.nix
+++ b/pkgs/tools/security/fscan/default.nix
@@ -19,5 +19,6 @@ buildGoModule rec {
     license = licenses.mit;
     maintainers = with maintainers; [ Misaka13514 ];
     platforms = with platforms; unix ++ windows;
+    mainProgram = "fscan";
   };
 }
diff --git a/pkgs/tools/security/gen-oath-safe/default.nix b/pkgs/tools/security/gen-oath-safe/default.nix
index bb607c1fbd322..9ce87ac3bdd13 100644
--- a/pkgs/tools/security/gen-oath-safe/default.nix
+++ b/pkgs/tools/security/gen-oath-safe/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
     platforms =  platforms.unix;
     license = licenses.mit;
     maintainers = [ maintainers.makefu ];
+    mainProgram = "gen-oath-safe";
   };
 
 }
diff --git a/pkgs/tools/security/go-dork/default.nix b/pkgs/tools/security/go-dork/default.nix
index 5e6c21d2397ba..d5b999d96990f 100644
--- a/pkgs/tools/security/go-dork/default.nix
+++ b/pkgs/tools/security/go-dork/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     changelog = "https://github.com/dwisiswant0/go-dork/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "go-dork";
   };
 }
diff --git a/pkgs/tools/security/hash-identifier/default.nix b/pkgs/tools/security/hash-identifier/default.nix
index 5e9b49dd73db6..2f54d5e6904f5 100644
--- a/pkgs/tools/security/hash-identifier/default.nix
+++ b/pkgs/tools/security/hash-identifier/default.nix
@@ -23,5 +23,6 @@ python3Packages.buildPythonApplication rec {
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
     maintainers = with maintainers; [ ethancedwards8 ];
+    mainProgram = "hash-identifier";
   };
 }
diff --git a/pkgs/tools/security/hcxdumptool/default.nix b/pkgs/tools/security/hcxdumptool/default.nix
index 3e51d300e9a39..c718ec0b5a0f1 100644
--- a/pkgs/tools/security/hcxdumptool/default.nix
+++ b/pkgs/tools/security/hcxdumptool/default.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     platforms = platforms.linux;
     maintainers = with maintainers; [ danielfullmer ];
+    mainProgram = "hcxdumptool";
   };
 }
diff --git a/pkgs/tools/security/ic-keysmith/default.nix b/pkgs/tools/security/ic-keysmith/default.nix
index c3fd58933a3bb..30ca2a467576e 100644
--- a/pkgs/tools/security/ic-keysmith/default.nix
+++ b/pkgs/tools/security/ic-keysmith/default.nix
@@ -18,5 +18,6 @@ buildGoModule rec {
     homepage = "https://github.com/dfinity/keysmith";
     license = licenses.mit;
     maintainers = with maintainers; [ imalison ];
+    mainProgram = "keysmith";
   };
 }
diff --git a/pkgs/tools/security/jwt-hack/default.nix b/pkgs/tools/security/jwt-hack/default.nix
index 351414b25eeef..4922f67fe576a 100644
--- a/pkgs/tools/security/jwt-hack/default.nix
+++ b/pkgs/tools/security/jwt-hack/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/hahwul/jwt-hack";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "jwt-hack";
   };
 }
diff --git a/pkgs/tools/security/kepler/default.nix b/pkgs/tools/security/kepler/default.nix
index f4a229030f1dc..e4d2fc914cf94 100644
--- a/pkgs/tools/security/kepler/default.nix
+++ b/pkgs/tools/security/kepler/default.nix
@@ -43,5 +43,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/Exein-io/kepler";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "kepler";
   };
 }
diff --git a/pkgs/tools/security/kube-hunter/default.nix b/pkgs/tools/security/kube-hunter/default.nix
index 05ee083f4d77c..f80f5c70c98c9 100644
--- a/pkgs/tools/security/kube-hunter/default.nix
+++ b/pkgs/tools/security/kube-hunter/default.nix
@@ -59,5 +59,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/aquasecurity/kube-hunter";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "kube-hunter";
   };
 }
diff --git a/pkgs/tools/security/kubestroyer/default.nix b/pkgs/tools/security/kubestroyer/default.nix
index bbe0d9cad7a3f..8e0922e4dfb07 100644
--- a/pkgs/tools/security/kubestroyer/default.nix
+++ b/pkgs/tools/security/kubestroyer/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     changelog = "https://github.com/Rolix44/Kubestroyer/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "kubestroyer";
   };
 }
diff --git a/pkgs/tools/security/ldapnomnom/default.nix b/pkgs/tools/security/ldapnomnom/default.nix
index 132ecf70591a3..65e874d066918 100644
--- a/pkgs/tools/security/ldapnomnom/default.nix
+++ b/pkgs/tools/security/ldapnomnom/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     changelog = "https://github.com/lkarlslund/ldapnomnom/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "ldapnomnom";
   };
 }
diff --git a/pkgs/tools/security/lethe/default.nix b/pkgs/tools/security/lethe/default.nix
index 0e63b0db2a53e..eb34742938148 100644
--- a/pkgs/tools/security/lethe/default.nix
+++ b/pkgs/tools/security/lethe/default.nix
@@ -25,5 +25,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/kostassoid/lethe";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "lethe";
   };
 }
diff --git a/pkgs/tools/security/libmodsecurity/default.nix b/pkgs/tools/security/libmodsecurity/default.nix
index e1d78b79753eb..c44733034b5ad 100644
--- a/pkgs/tools/security/libmodsecurity/default.nix
+++ b/pkgs/tools/security/libmodsecurity/default.nix
@@ -76,5 +76,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     platforms = platforms.all;
     maintainers = with maintainers; [ izorkin ];
+    mainProgram = "modsec-rules-check";
   };
 }
diff --git a/pkgs/tools/security/lmp/default.nix b/pkgs/tools/security/lmp/default.nix
index 2b945478f3dae..021b9d33d35a1 100644
--- a/pkgs/tools/security/lmp/default.nix
+++ b/pkgs/tools/security/lmp/default.nix
@@ -21,5 +21,6 @@ buildGoModule rec {
     homepage = "https://github.com/0xInfection/LogMePwn";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "lmp";
   };
 }
diff --git a/pkgs/tools/security/log4jcheck/default.nix b/pkgs/tools/security/log4jcheck/default.nix
index 291bf1ff96b4b..1a7608fa73de6 100644
--- a/pkgs/tools/security/log4jcheck/default.nix
+++ b/pkgs/tools/security/log4jcheck/default.nix
@@ -30,5 +30,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/NorthwaveSecurity/log4jcheck";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "log4jcheck";
   };
 }
diff --git a/pkgs/tools/security/log4shell-detector/default.nix b/pkgs/tools/security/log4shell-detector/default.nix
index 76fc657284385..c29a32bea3969 100644
--- a/pkgs/tools/security/log4shell-detector/default.nix
+++ b/pkgs/tools/security/log4shell-detector/default.nix
@@ -36,5 +36,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/Neo23x0/log4shell-detector";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "log4shell-detector";
   };
 }
diff --git a/pkgs/tools/security/logmap/default.nix b/pkgs/tools/security/logmap/default.nix
index d6d4cb0f1a54e..50f14bc33affb 100644
--- a/pkgs/tools/security/logmap/default.nix
+++ b/pkgs/tools/security/logmap/default.nix
@@ -30,5 +30,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/zhzyker/logmap";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "logmap";
   };
 }
diff --git a/pkgs/tools/security/mantra/default.nix b/pkgs/tools/security/mantra/default.nix
index 7453926a8bd35..348c0afc32513 100644
--- a/pkgs/tools/security/mantra/default.nix
+++ b/pkgs/tools/security/mantra/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     changelog = "https://github.com/MrEmpy/Mantra/releases/tag/v.${version}";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "mantra";
   };
 }
diff --git a/pkgs/tools/security/minisign/default.nix b/pkgs/tools/security/minisign/default.nix
index 2ab1babcafc78..aaa280f40e90b 100644
--- a/pkgs/tools/security/minisign/default.nix
+++ b/pkgs/tools/security/minisign/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     license = licenses.isc;
     maintainers = with maintainers; [ joachifm ];
     platforms = platforms.unix;
+    mainProgram = "minisign";
   };
 }
diff --git a/pkgs/tools/security/mongoaudit/default.nix b/pkgs/tools/security/mongoaudit/default.nix
index 3ba19256ec34e..2f980be5163b0 100644
--- a/pkgs/tools/security/mongoaudit/default.nix
+++ b/pkgs/tools/security/mongoaudit/default.nix
@@ -35,5 +35,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/stampery/mongoaudit";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "mongoaudit";
   };
 }
diff --git a/pkgs/tools/security/nsjail/default.nix b/pkgs/tools/security/nsjail/default.nix
index 187674596e1f3..a92aa5f210413 100644
--- a/pkgs/tools/security/nsjail/default.nix
+++ b/pkgs/tools/security/nsjail/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation rec {
     license     = licenses.asl20;
     maintainers = with maintainers; [ arturcygan bosu c0bw3b ];
     platforms   = platforms.linux;
+    mainProgram = "nsjail";
   };
 }
diff --git a/pkgs/tools/security/oath-toolkit/default.nix b/pkgs/tools/security/oath-toolkit/default.nix
index fe8367ea57e46..eda2affaa2622 100644
--- a/pkgs/tools/security/oath-toolkit/default.nix
+++ b/pkgs/tools/security/oath-toolkit/default.nix
@@ -26,5 +26,6 @@ in stdenv.mkDerivation rec {
     homepage = "https://www.nongnu.org/oath-toolkit/";
     maintainers = with maintainers; [ schnusch ];
     platforms = with platforms; linux ++ darwin;
+    mainProgram = "oathtool";
   };
 }
diff --git a/pkgs/tools/security/onesixtyone/default.nix b/pkgs/tools/security/onesixtyone/default.nix
index 374d1322246bf..1ff1b0266eaf0 100644
--- a/pkgs/tools/security/onesixtyone/default.nix
+++ b/pkgs/tools/security/onesixtyone/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
     maintainers = [ maintainers.fishi0x01 ];
+    mainProgram = "onesixtyone";
   };
 }
 
diff --git a/pkgs/tools/security/parsero/default.nix b/pkgs/tools/security/parsero/default.nix
index a8cd9c39eb134..2c3323f25e525 100644
--- a/pkgs/tools/security/parsero/default.nix
+++ b/pkgs/tools/security/parsero/default.nix
@@ -24,5 +24,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/behindthefirewalls/Parsero";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ emilytrau fab ];
+    mainProgram = "parsero";
   };
 }
diff --git a/pkgs/tools/security/prs/default.nix b/pkgs/tools/security/prs/default.nix
index 33df7e7948ce9..cfab2229efeeb 100644
--- a/pkgs/tools/security/prs/default.nix
+++ b/pkgs/tools/security/prs/default.nix
@@ -59,5 +59,6 @@ rustPlatform.buildRustPackage rec {
       gpl3Only  # everything else
     ];
     maintainers = with maintainers; [ dotlambda ];
+    mainProgram = "prs";
   };
 }
diff --git a/pkgs/tools/security/routersploit/default.nix b/pkgs/tools/security/routersploit/default.nix
index e147e8feac0b4..3f656e8e45787 100644
--- a/pkgs/tools/security/routersploit/default.nix
+++ b/pkgs/tools/security/routersploit/default.nix
@@ -52,5 +52,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/threat9/routersploit";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "rsf";
   };
 }
diff --git a/pkgs/tools/security/rucredstash/default.nix b/pkgs/tools/security/rucredstash/default.nix
index 3a6fcfbf53257..972695ad565e1 100644
--- a/pkgs/tools/security/rucredstash/default.nix
+++ b/pkgs/tools/security/rucredstash/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/psibi/rucredstash";
     license = licenses.mit;
     maintainers = with maintainers; [ psibi ];
+    mainProgram = "rucredstash";
   };
 }
diff --git a/pkgs/tools/security/shellz/default.nix b/pkgs/tools/security/shellz/default.nix
index f1b226c32137c..e7d44bd21926f 100644
--- a/pkgs/tools/security/shellz/default.nix
+++ b/pkgs/tools/security/shellz/default.nix
@@ -26,5 +26,6 @@ buildGoModule rec {
     homepage = "https://github.com/evilsocket/shellz";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "shellz";
   };
 }
diff --git a/pkgs/tools/security/silenthound/default.nix b/pkgs/tools/security/silenthound/default.nix
index 92b651bc9a837..f2915c447675a 100644
--- a/pkgs/tools/security/silenthound/default.nix
+++ b/pkgs/tools/security/silenthound/default.nix
@@ -39,5 +39,6 @@ python3.pkgs.buildPythonApplication rec {
     # Unknown license, https://github.com/layer8secure/SilentHound/issues/1
     license = licenses.unfree;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "silenthound";
   };
 }
diff --git a/pkgs/tools/security/slowhttptest/default.nix b/pkgs/tools/security/slowhttptest/default.nix
index b4c2b0efeec3b..94e60a6a00845 100644
--- a/pkgs/tools/security/slowhttptest/default.nix
+++ b/pkgs/tools/security/slowhttptest/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/shekyan/slowhttptest";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "slowhttptest";
   };
 }
diff --git a/pkgs/tools/security/smbscan/default.nix b/pkgs/tools/security/smbscan/default.nix
index f807704005e14..ea2a99b64bb0d 100644
--- a/pkgs/tools/security/smbscan/default.nix
+++ b/pkgs/tools/security/smbscan/default.nix
@@ -37,5 +37,6 @@ python3.pkgs.buildPythonApplication rec {
     homepage = "https://github.com/jeffhacks/smbscan";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "smbscan";
   };
 }
diff --git a/pkgs/tools/security/stegseek/default.nix b/pkgs/tools/security/stegseek/default.nix
index f898b5eab0e6a..dd2c100457541 100644
--- a/pkgs/tools/security/stegseek/default.nix
+++ b/pkgs/tools/security/stegseek/default.nix
@@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/RickdeJager/stegseek";
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ fab ];
+    mainProgram = "stegseek";
   };
 }
diff --git a/pkgs/tools/security/stricat/default.nix b/pkgs/tools/security/stricat/default.nix
index bdd7d18923f17..b21498e009f1a 100644
--- a/pkgs/tools/security/stricat/default.nix
+++ b/pkgs/tools/security/stricat/default.nix
@@ -22,5 +22,6 @@ stdenv.mkDerivation rec {
     license     = lib.licenses.bsd3;
     platforms   = lib.platforms.unix;
     maintainers = [ lib.maintainers.thoughtpolice ];
+    mainProgram = "stricat";
   };
 }
diff --git a/pkgs/tools/security/sx-go/default.nix b/pkgs/tools/security/sx-go/default.nix
index 11a9b497fdf02..8c8ceee0fe747 100644
--- a/pkgs/tools/security/sx-go/default.nix
+++ b/pkgs/tools/security/sx-go/default.nix
@@ -41,5 +41,6 @@ buildGoModule rec {
     homepage = "https://github.com/v-byte-cpu/sx";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "sx-go";
   };
 }
diff --git a/pkgs/tools/security/tessen/default.nix b/pkgs/tools/security/tessen/default.nix
index 1113134a14514..e8517dda9b4e7 100644
--- a/pkgs/tools/security/tessen/default.nix
+++ b/pkgs/tools/security/tessen/default.nix
@@ -48,5 +48,6 @@ stdenvNoCC.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ monaaraj ];
+    mainProgram = "tessen";
   };
 }
diff --git a/pkgs/tools/security/vaultwarden/default.nix b/pkgs/tools/security/vaultwarden/default.nix
index cb1148fdc1af2..762c8312c1e63 100644
--- a/pkgs/tools/security/vaultwarden/default.nix
+++ b/pkgs/tools/security/vaultwarden/default.nix
@@ -39,5 +39,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/dani-garcia/vaultwarden";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ msteen ivan ];
+    mainProgram = "vaultwarden";
   };
 }
diff --git a/pkgs/tools/security/webanalyze/default.nix b/pkgs/tools/security/webanalyze/default.nix
index 3b49b496f62e2..7c043c0d0a187 100644
--- a/pkgs/tools/security/webanalyze/default.nix
+++ b/pkgs/tools/security/webanalyze/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     changelog = "https://github.com/rverton/webanalyze/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "webanalyze";
   };
 }
diff --git a/pkgs/tools/security/xcrawl3r/default.nix b/pkgs/tools/security/xcrawl3r/default.nix
index c7b63c238be10..b714d555bafb7 100644
--- a/pkgs/tools/security/xcrawl3r/default.nix
+++ b/pkgs/tools/security/xcrawl3r/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     changelog = "https://github.com/hueristiq/xcrawl3r/releases/tag/${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "xcrawl3r";
   };
 }
diff --git a/pkgs/tools/security/yatas/default.nix b/pkgs/tools/security/yatas/default.nix
index 057f0c7b18b4c..e351ea244f5de 100644
--- a/pkgs/tools/security/yatas/default.nix
+++ b/pkgs/tools/security/yatas/default.nix
@@ -22,5 +22,6 @@ buildGoModule rec {
     changelog = "https://github.com/padok-team/YATAS/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
+    mainProgram = "yatas";
   };
 }
diff --git a/pkgs/tools/security/yubihsm-connector/default.nix b/pkgs/tools/security/yubihsm-connector/default.nix
index 8e56cc6a227e1..ab2a298083804 100644
--- a/pkgs/tools/security/yubihsm-connector/default.nix
+++ b/pkgs/tools/security/yubihsm-connector/default.nix
@@ -32,5 +32,6 @@ buildGoModule rec {
     homepage = "https://developers.yubico.com/yubihsm-connector/";
     maintainers = with maintainers; [ matthewcroughan ];
     license = licenses.asl20;
+    mainProgram = "yubihsm-connector";
   };
 }
diff --git a/pkgs/tools/typesetting/asciidoctorj/default.nix b/pkgs/tools/typesetting/asciidoctorj/default.nix
index ac8683a36db31..91ce383f9a4da 100644
--- a/pkgs/tools/typesetting/asciidoctorj/default.nix
+++ b/pkgs/tools/typesetting/asciidoctorj/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation rec {
     license = licenses.asl20;
     platforms = platforms.all;
     maintainers = with maintainers; [ moaxcp ];
+    mainProgram = "asciidoctorj";
   };
 }
diff --git a/pkgs/tools/typesetting/biber-ms/default.nix b/pkgs/tools/typesetting/biber-ms/default.nix
index f5c161fe2cbc4..9cf2bbe014f1e 100644
--- a/pkgs/tools/typesetting/biber-ms/default.nix
+++ b/pkgs/tools/typesetting/biber-ms/default.nix
@@ -50,5 +50,6 @@ perlPackages.buildPerlModule {
     license = biberSource.meta.license;
     platforms = platforms.unix;
     maintainers = [ maintainers.xworld21 ];
+    mainProgram = "biber-ms";
   };
 }
diff --git a/pkgs/tools/typesetting/biber/default.nix b/pkgs/tools/typesetting/biber/default.nix
index b09a4b092f9b2..08038c41377f5 100644
--- a/pkgs/tools/typesetting/biber/default.nix
+++ b/pkgs/tools/typesetting/biber/default.nix
@@ -31,5 +31,6 @@ perlPackages.buildPerlModule {
     license = biberSource.meta.license;
     platforms = platforms.unix;
     maintainers = [ maintainers.ttuegel ];
+    mainProgram = "biber";
   };
 }
diff --git a/pkgs/tools/typesetting/biblatex-check/default.nix b/pkgs/tools/typesetting/biblatex-check/default.nix
index d3d3be0f430fd..beff041561909 100644
--- a/pkgs/tools/typesetting/biblatex-check/default.nix
+++ b/pkgs/tools/typesetting/biblatex-check/default.nix
@@ -24,5 +24,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/Pezmc/BibLatex-Check";
     license = licenses.mit;
     maintainers = with maintainers; [ dtzWill ];
+    mainProgram = "biblatex-check";
   };
 }
diff --git a/pkgs/tools/typesetting/coq2html/default.nix b/pkgs/tools/typesetting/coq2html/default.nix
index 267309e2e35be..69b3bc0ff2396 100644
--- a/pkgs/tools/typesetting/coq2html/default.nix
+++ b/pkgs/tools/typesetting/coq2html/default.nix
@@ -32,5 +32,6 @@ stdenv.mkDerivation  rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ jwiegley siraben ];
     platforms = platforms.unix;
+    mainProgram = "coq2html";
   };
 }
diff --git a/pkgs/tools/typesetting/djvu2pdf/default.nix b/pkgs/tools/typesetting/djvu2pdf/default.nix
index e6c8f80f9d252..9396d43b3962c 100644
--- a/pkgs/tools/typesetting/djvu2pdf/default.nix
+++ b/pkgs/tools/typesetting/djvu2pdf/default.nix
@@ -25,5 +25,6 @@ stdenv.mkDerivation rec {
     homepage = "https://0x2a.at/site/projects/djvu2pdf/";
     license = lib.licenses.gpl1Only;
     platforms = lib.platforms.all;
+    mainProgram = "djvu2pdf";
   };
 }
diff --git a/pkgs/tools/typesetting/docbook2odf/default.nix b/pkgs/tools/typesetting/docbook2odf/default.nix
index e17acac3dd96e..7608fb1228ed1 100644
--- a/pkgs/tools/typesetting/docbook2odf/default.nix
+++ b/pkgs/tools/typesetting/docbook2odf/default.nix
@@ -45,5 +45,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor ];
+    mainProgram = "docbook2odf";
   };
 }
diff --git a/pkgs/tools/typesetting/fop/default.nix b/pkgs/tools/typesetting/fop/default.nix
index 0855c442deb94..254f29d27a789 100644
--- a/pkgs/tools/typesetting/fop/default.nix
+++ b/pkgs/tools/typesetting/fop/default.nix
@@ -54,5 +54,6 @@ stdenv.mkDerivation rec {
     ];
     platforms = platforms.all;
     maintainers = with maintainers; [ bjornfor ];
+    mainProgram = "fop";
   };
 }
diff --git a/pkgs/tools/typesetting/git-latexdiff/default.nix b/pkgs/tools/typesetting/git-latexdiff/default.nix
index 154781d1ef18b..e7e4351a2088b 100644
--- a/pkgs/tools/typesetting/git-latexdiff/default.nix
+++ b/pkgs/tools/typesetting/git-latexdiff/default.nix
@@ -35,5 +35,6 @@ stdenv.mkDerivation rec {
     maintainers = [ ];
     license = licenses.bsd3; # https://gitlab.com/git-latexdiff/git-latexdiff/issues/9
     platforms = platforms.unix;
+    mainProgram = "git-latexdiff";
   };
 }
diff --git a/pkgs/tools/typesetting/halibut/default.nix b/pkgs/tools/typesetting/halibut/default.nix
index de76c4956d7a3..3429df706d2f4 100644
--- a/pkgs/tools/typesetting/halibut/default.nix
+++ b/pkgs/tools/typesetting/halibut/default.nix
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
     license = licenses.mit;
     maintainers = with maintainers; [ pSub ];
     platforms = with platforms; unix;
+    mainProgram = "halibut";
   };
 }
diff --git a/pkgs/tools/typesetting/hayagriva/default.nix b/pkgs/tools/typesetting/hayagriva/default.nix
index 6723e1acecdbf..0db1bf73c9cd6 100644
--- a/pkgs/tools/typesetting/hayagriva/default.nix
+++ b/pkgs/tools/typesetting/hayagriva/default.nix
@@ -30,5 +30,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/typst/hayagriva/releases/tag/v${version}";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ figsoda ];
+    mainProgram = "hayagriva";
   };
 }
diff --git a/pkgs/tools/typesetting/htmldoc/default.nix b/pkgs/tools/typesetting/htmldoc/default.nix
index 02a1a97010c59..da54f7c62970c 100644
--- a/pkgs/tools/typesetting/htmldoc/default.nix
+++ b/pkgs/tools/typesetting/htmldoc/default.nix
@@ -38,5 +38,6 @@ stdenv.mkDerivation rec {
       generates corresponding HTML, PostScript, or PDF files with an optional
       table of contents.
     '';
+    mainProgram = "htmldoc";
   };
 }
diff --git a/pkgs/tools/typesetting/kramdown-asciidoc/default.nix b/pkgs/tools/typesetting/kramdown-asciidoc/default.nix
index ebe57e3695f5e..f3058156848ed 100644
--- a/pkgs/tools/typesetting/kramdown-asciidoc/default.nix
+++ b/pkgs/tools/typesetting/kramdown-asciidoc/default.nix
@@ -30,6 +30,7 @@ let
       license = licenses.mit;
       maintainers = with maintainers; [ ];
       platforms = platforms.unix;
+      mainProgram = "kramdoc";
     };
   };
 in
diff --git a/pkgs/tools/typesetting/mmark/default.nix b/pkgs/tools/typesetting/mmark/default.nix
index 0cb100dde5e31..3e1c95ca02417 100644
--- a/pkgs/tools/typesetting/mmark/default.nix
+++ b/pkgs/tools/typesetting/mmark/default.nix
@@ -27,5 +27,6 @@ buildGoModule rec {
     homepage = "https://github.com/mmarkdown/mmark";
     license = with lib.licenses; bsd2;
     maintainers = with lib.maintainers; [ yrashk ];
+    mainProgram = "mmark";
   };
 }
diff --git a/pkgs/tools/typesetting/pdf2djvu/default.nix b/pkgs/tools/typesetting/pdf2djvu/default.nix
index 9cbf61304b9a9..09285cf2843b7 100644
--- a/pkgs/tools/typesetting/pdf2djvu/default.nix
+++ b/pkgs/tools/typesetting/pdf2djvu/default.nix
@@ -62,5 +62,6 @@ stdenv.mkDerivation rec {
     homepage = "https://jwilk.net/software/pdf2djvu";
     license = licenses.gpl2;
     maintainers = with maintainers; [ pSub ];
+    mainProgram = "pdf2djvu";
   };
 }
diff --git a/pkgs/tools/typesetting/pdfchain/default.nix b/pkgs/tools/typesetting/pdfchain/default.nix
index 256a8ebd6c53c..6d772a6fea20a 100644
--- a/pkgs/tools/typesetting/pdfchain/default.nix
+++ b/pkgs/tools/typesetting/pdfchain/default.nix
@@ -53,5 +53,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ hqurve ];
     platforms = platforms.unix;
+    mainProgram = "pdfchain";
   };
 }
diff --git a/pkgs/tools/typesetting/pdfgrep/default.nix b/pkgs/tools/typesetting/pdfgrep/default.nix
index 3b926a3a4fdc4..44854592348b1 100644
--- a/pkgs/tools/typesetting/pdfgrep/default.nix
+++ b/pkgs/tools/typesetting/pdfgrep/default.nix
@@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ qknight fpletz ];
     platforms = with lib.platforms; unix;
+    mainProgram = "pdfgrep";
   };
 }
diff --git a/pkgs/tools/typesetting/pdfsandwich/default.nix b/pkgs/tools/typesetting/pdfsandwich/default.nix
index 26037b05664d1..377a7f7bf4327 100644
--- a/pkgs/tools/typesetting/pdfsandwich/default.nix
+++ b/pkgs/tools/typesetting/pdfsandwich/default.nix
@@ -28,5 +28,6 @@ meta = with lib; {
     license = licenses.gpl2;
     maintainers = [ maintainers.rps ];
     platforms = platforms.linux;
+    mainProgram = "pdfsandwich";
   };
 }
diff --git a/pkgs/tools/typesetting/pdftk/default.nix b/pkgs/tools/typesetting/pdftk/default.nix
index b11975d83c7fe..27d95c00c01bd 100644
--- a/pkgs/tools/typesetting/pdftk/default.nix
+++ b/pkgs/tools/typesetting/pdftk/default.nix
@@ -95,5 +95,6 @@ in stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ raskin averelld ];
     platforms = platforms.unix;
+    mainProgram = "pdftk";
   };
 }
diff --git a/pkgs/tools/typesetting/pulldown-cmark/default.nix b/pkgs/tools/typesetting/pulldown-cmark/default.nix
index ee2b124b04abd..9a946eae732d3 100644
--- a/pkgs/tools/typesetting/pulldown-cmark/default.nix
+++ b/pkgs/tools/typesetting/pulldown-cmark/default.nix
@@ -21,5 +21,6 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/raphlinus/pulldown-cmark";
     license = with lib.licenses; [ mit ];
     maintainers = with lib.maintainers; [ CobaltCause ];
+    mainProgram = "pulldown-cmark";
   };
 }
diff --git a/pkgs/tools/typesetting/rfc-bibtex/default.nix b/pkgs/tools/typesetting/rfc-bibtex/default.nix
index a748983222efb..d9bed69466972 100644
--- a/pkgs/tools/typesetting/rfc-bibtex/default.nix
+++ b/pkgs/tools/typesetting/rfc-bibtex/default.nix
@@ -29,5 +29,6 @@ with python3.pkgs; buildPythonApplication rec {
     description = "Generate Bibtex entries for IETF RFCs and Internet-Drafts";
     license = licenses.mit;
     maintainers = with maintainers; [ teto ];
+    mainProgram = "rfcbibtex";
   };
 }
diff --git a/pkgs/tools/typesetting/satysfi/default.nix b/pkgs/tools/typesetting/satysfi/default.nix
index 6d77faac76a9f..7284e2cc2fdc6 100644
--- a/pkgs/tools/typesetting/satysfi/default.nix
+++ b/pkgs/tools/typesetting/satysfi/default.nix
@@ -80,5 +80,6 @@ in
       license = licenses.lgpl3Only;
       maintainers = [ maintainers.mt-caret maintainers.marsam ];
       platforms = platforms.all;
+      mainProgram = "satysfi";
     };
   }
diff --git a/pkgs/tools/typesetting/sile/default.nix b/pkgs/tools/typesetting/sile/default.nix
index 3c64e8872019b..f2005f491a17c 100644
--- a/pkgs/tools/typesetting/sile/default.nix
+++ b/pkgs/tools/typesetting/sile/default.nix
@@ -137,5 +137,6 @@ stdenv.mkDerivation (finalAttrs: {
     platforms = platforms.unix;
     maintainers = with maintainers; [ doronbehar alerque ];
     license = licenses.mit;
+    mainProgram = "sile";
   };
 })
diff --git a/pkgs/tools/typesetting/sshlatex/default.nix b/pkgs/tools/typesetting/sshlatex/default.nix
index 8a5b4811d7705..ed1252928bb3e 100644
--- a/pkgs/tools/typesetting/sshlatex/default.nix
+++ b/pkgs/tools/typesetting/sshlatex/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     license = lib.licenses.gpl3Plus;  # actually dual-licensed gpl3Plus | lppl13cplus
     platforms = lib.platforms.all;
     maintainers = [ maintainers.iblech ];
+    mainProgram = "sshlatex";
   };
 }
diff --git a/pkgs/tools/typesetting/tikzit/default.nix b/pkgs/tools/typesetting/tikzit/default.nix
index 2f6d169d0cb52..44c2fed0508ac 100644
--- a/pkgs/tools/typesetting/tikzit/default.nix
+++ b/pkgs/tools/typesetting/tikzit/default.nix
@@ -29,5 +29,6 @@ mkDerivation {
     license = licenses.gpl3Plus;
     platforms = platforms.all;
     maintainers = [ maintainers.iblech maintainers.mgttlinger ];
+    mainProgram = "tikzit";
   };
 }
diff --git a/pkgs/tools/typesetting/typstfmt/default.nix b/pkgs/tools/typesetting/typstfmt/default.nix
index c6c054888f82a..cec70394e4f97 100644
--- a/pkgs/tools/typesetting/typstfmt/default.nix
+++ b/pkgs/tools/typesetting/typstfmt/default.nix
@@ -24,5 +24,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/astrale-sharp/typstfmt/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda geri1701 ];
+    mainProgram = "typstfmt";
   };
 }
diff --git a/pkgs/tools/typesetting/xmlroff/default.nix b/pkgs/tools/typesetting/xmlroff/default.nix
index dd8adab9ee8a9..f1e7e2c3243fb 100644
--- a/pkgs/tools/typesetting/xmlroff/default.nix
+++ b/pkgs/tools/typesetting/xmlroff/default.nix
@@ -49,5 +49,6 @@ stdenv.mkDerivation rec {
     homepage = "http://xmlroff.org/";
     platforms = platforms.unix;
     license = licenses.bsd3;
+    mainProgram = "xmlroff";
   };
 }
diff --git a/pkgs/tools/video/dvgrab/default.nix b/pkgs/tools/video/dvgrab/default.nix
index c5bb05853bf95..de5c5e906bf58 100644
--- a/pkgs/tools/video/dvgrab/default.nix
+++ b/pkgs/tools/video/dvgrab/default.nix
@@ -36,5 +36,6 @@ stdenv.mkDerivation {
 
     license = licenses.gpl2Plus;
     platforms = platforms.gnu ++ platforms.linux;
+    mainProgram = "dvgrab";
   };
 }
diff --git a/pkgs/tools/video/go2rtc/default.nix b/pkgs/tools/video/go2rtc/default.nix
index 9b0f9bbe3f705..c6f8b66d1bcdc 100644
--- a/pkgs/tools/video/go2rtc/default.nix
+++ b/pkgs/tools/video/go2rtc/default.nix
@@ -35,5 +35,6 @@ buildGoModule rec {
     changelog = "https://github.com/AlexxIT/go2rtc/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
+    mainProgram = "go2rtc";
   };
 }
diff --git a/pkgs/tools/video/gopro/default.nix b/pkgs/tools/video/gopro/default.nix
index a1991772bf105..7f234ae5247ac 100644
--- a/pkgs/tools/video/gopro/default.nix
+++ b/pkgs/tools/video/gopro/default.nix
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
     platforms = platforms.unix;
     license = licenses.gpl3;
     maintainers = with maintainers; [ jonringer ];
+    mainProgram = "gopro";
   };
 }
diff --git a/pkgs/tools/video/harvid/default.nix b/pkgs/tools/video/harvid/default.nix
index 655d1ba3874ff..2860e5f22280d 100644
--- a/pkgs/tools/video/harvid/default.nix
+++ b/pkgs/tools/video/harvid/default.nix
@@ -48,5 +48,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ mitchmindtree ];
+    mainProgram = "harvid";
   };
 }
diff --git a/pkgs/tools/video/lux/default.nix b/pkgs/tools/video/lux/default.nix
index f6a4ea61f2dcc..6d1e92af4aca7 100644
--- a/pkgs/tools/video/lux/default.nix
+++ b/pkgs/tools/video/lux/default.nix
@@ -39,5 +39,6 @@ buildGoModule rec {
     changelog = "https://github.com/iawia002/lux/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ galaxy ];
+    mainProgram = "lux";
   };
 }
diff --git a/pkgs/tools/video/play-with-mpv/default.nix b/pkgs/tools/video/play-with-mpv/default.nix
index 9047f9062462e..16e645eb44550 100644
--- a/pkgs/tools/video/play-with-mpv/default.nix
+++ b/pkgs/tools/video/play-with-mpv/default.nix
@@ -57,5 +57,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/Thann/play-with-mpv";
     license = licenses.mit;
     maintainers = with maintainers; [ dawidsowa ];
+    mainProgram = "play-with-mpv";
   };
 }
diff --git a/pkgs/tools/video/rav1e/default.nix b/pkgs/tools/video/rav1e/default.nix
index 146ff6072544d..859e523dfa65d 100644
--- a/pkgs/tools/video/rav1e/default.nix
+++ b/pkgs/tools/video/rav1e/default.nix
@@ -63,5 +63,6 @@ rustPlatform.buildRustPackage rec {
     changelog = "https://github.com/xiph/rav1e/releases/tag/v${version}";
     license = licenses.bsd2;
     maintainers = [ ];
+    mainProgram = "rav1e";
   };
 }
diff --git a/pkgs/tools/video/replay-sorcery/default.nix b/pkgs/tools/video/replay-sorcery/default.nix
index 8f362c3beb96e..7323644cdefb8 100644
--- a/pkgs/tools/video/replay-sorcery/default.nix
+++ b/pkgs/tools/video/replay-sorcery/default.nix
@@ -58,5 +58,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ kira-bruneau ];
     platforms = platforms.linux;
+    mainProgram = "replay-sorcery";
   };
 }
diff --git a/pkgs/tools/video/swfmill/default.nix b/pkgs/tools/video/swfmill/default.nix
index 28d7e0039edd2..c93534bf1a20b 100644
--- a/pkgs/tools/video/swfmill/default.nix
+++ b/pkgs/tools/video/swfmill/default.nix
@@ -19,5 +19,6 @@ stdenv.mkDerivation rec {
     homepage = "http://swfmill.org";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.linux;
+    mainProgram = "swfmill";
   };
 }
diff --git a/pkgs/tools/video/vcsi/default.nix b/pkgs/tools/video/vcsi/default.nix
index bb3bc4c9856c9..7db0fdd6962e0 100644
--- a/pkgs/tools/video/vcsi/default.nix
+++ b/pkgs/tools/video/vcsi/default.nix
@@ -33,5 +33,6 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://github.com/amietn/vcsi";
     license = licenses.mit;
     maintainers = with maintainers; [ dandellion zopieux ];
+    mainProgram = "vcsi";
   };
 }
diff --git a/pkgs/tools/video/vncrec/default.nix b/pkgs/tools/video/vncrec/default.nix
index 02608ac16b206..3b3391284f07b 100644
--- a/pkgs/tools/video/vncrec/default.nix
+++ b/pkgs/tools/video/vncrec/default.nix
@@ -30,5 +30,6 @@ stdenv.mkDerivation {
     homepage = "http://ronja.twibright.com/utils/vncrec/";
     platforms = lib.platforms.linux;
     license = lib.licenses.gpl2;
+    mainProgram = "vncrec";
   };
 }
diff --git a/pkgs/tools/video/wtwitch/default.nix b/pkgs/tools/video/wtwitch/default.nix
index 9b2a9a7be0319..0035e184540c3 100644
--- a/pkgs/tools/video/wtwitch/default.nix
+++ b/pkgs/tools/video/wtwitch/default.nix
@@ -67,5 +67,6 @@ stdenv.mkDerivation rec {
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ urandom ];
     platforms = platforms.all;
+    mainProgram = "wtwitch";
   };
 }
diff --git a/pkgs/tools/video/yamdi/default.nix b/pkgs/tools/video/yamdi/default.nix
index 6665637e63712..1bcfffb929036 100644
--- a/pkgs/tools/video/yamdi/default.nix
+++ b/pkgs/tools/video/yamdi/default.nix
@@ -27,5 +27,6 @@ stdenv.mkDerivation rec {
     license = licenses.bsd3;
     platforms = platforms.all;
     maintainers = [ maintainers.ryanartecona ];
+    mainProgram = "yamdi";
   };
 }
diff --git a/pkgs/tools/video/yaydl/default.nix b/pkgs/tools/video/yaydl/default.nix
index ce7e4ef8eebfb..7dea97bf649e4 100644
--- a/pkgs/tools/video/yaydl/default.nix
+++ b/pkgs/tools/video/yaydl/default.nix
@@ -40,5 +40,6 @@ rustPlatform.buildRustPackage rec {
     description = "Yet another youtube down loader";
     license = licenses.cddl;
     maintainers = with maintainers; [];
+    mainProgram = "yaydl";
   };
 }