about summary refs log tree commit diff
path: root/pkgs/tools/security
diff options
context:
space:
mode:
authorstuebinm <stuebinm@disroot.org>2024-03-19 03:14:51 +0100
committerstuebinm <stuebinm@disroot.org>2024-03-19 03:14:51 +0100
commitff1a94e523ae9fb272e0581f068baee5d1068476 (patch)
treecbea47f2004a4fa8685163d630612cf748e72c1e /pkgs/tools/security
parentb06025f1533a1e07b6db3e75151caa155d1c7eb3 (diff)
treewide: add meta.mainProgram to packages with a single binary
The nixpkgs-unstable channel's programs.sqlite was used to identify
packages producing exactly one binary, and these automatically added
to their package definitions wherever possible.
Diffstat (limited to 'pkgs/tools/security')
-rw-r--r--pkgs/tools/security/2fa/default.nix1
-rw-r--r--pkgs/tools/security/acltoolkit/default.nix1
-rw-r--r--pkgs/tools/security/adenum/default.nix1
-rw-r--r--pkgs/tools/security/aesfix/default.nix1
-rw-r--r--pkgs/tools/security/aeskeyfind/default.nix1
-rw-r--r--pkgs/tools/security/afl/libdislocator.nix1
-rw-r--r--pkgs/tools/security/age-plugin-ledger/default.nix1
-rw-r--r--pkgs/tools/security/age-plugin-tpm/default.nix1
-rw-r--r--pkgs/tools/security/age-plugin-yubikey/default.nix1
-rw-r--r--pkgs/tools/security/aide/default.nix1
-rw-r--r--pkgs/tools/security/aiodnsbrute/default.nix1
-rw-r--r--pkgs/tools/security/alterx/default.nix1
-rw-r--r--pkgs/tools/security/amoco/default.nix1
-rw-r--r--pkgs/tools/security/apachetomcatscanner/default.nix1
-rw-r--r--pkgs/tools/security/argocd-vault-plugin/default.nix1
-rw-r--r--pkgs/tools/security/arti/default.nix1
-rw-r--r--pkgs/tools/security/arubaotp-seed-extractor/default.nix1
-rw-r--r--pkgs/tools/security/asc-key-to-qr-code-gif/default.nix1
-rw-r--r--pkgs/tools/security/asnmap/default.nix1
-rw-r--r--pkgs/tools/security/atomic-operator/default.nix1
-rw-r--r--pkgs/tools/security/authz0/default.nix1
-rw-r--r--pkgs/tools/security/aws-iam-authenticator/default.nix1
-rw-r--r--pkgs/tools/security/b2sum/default.nix1
-rw-r--r--pkgs/tools/security/b3sum/default.nix1
-rw-r--r--pkgs/tools/security/badchars/default.nix1
-rw-r--r--pkgs/tools/security/badrobot/default.nix1
-rw-r--r--pkgs/tools/security/binbloom/default.nix1
-rw-r--r--pkgs/tools/security/bmrsa/11.nix1
-rw-r--r--pkgs/tools/security/boofuzz/default.nix1
-rw-r--r--pkgs/tools/security/browserpass/default.nix1
-rw-r--r--pkgs/tools/security/bruteforce-luks/default.nix1
-rw-r--r--pkgs/tools/security/brutespray/default.nix1
-rw-r--r--pkgs/tools/security/buttercup-desktop/default.nix1
-rw-r--r--pkgs/tools/security/cariddi/default.nix1
-rw-r--r--pkgs/tools/security/certdump/default.nix1
-rw-r--r--pkgs/tools/security/certgraph/default.nix1
-rw-r--r--pkgs/tools/security/certinfo/default.nix1
-rw-r--r--pkgs/tools/security/certstrap/default.nix1
-rw-r--r--pkgs/tools/security/cewl/default.nix1
-rw-r--r--pkgs/tools/security/cfripper/default.nix1
-rw-r--r--pkgs/tools/security/chain-bench/default.nix1
-rw-r--r--pkgs/tools/security/chainsaw/default.nix1
-rw-r--r--pkgs/tools/security/cherrybomb/default.nix1
-rw-r--r--pkgs/tools/security/chrome-token-signing/default.nix1
-rw-r--r--pkgs/tools/security/cirrusgo/default.nix1
-rw-r--r--pkgs/tools/security/clairvoyance/default.nix1
-rw-r--r--pkgs/tools/security/cliam/default.nix1
-rw-r--r--pkgs/tools/security/cloudbrute/default.nix1
-rw-r--r--pkgs/tools/security/cloudfox/default.nix1
-rw-r--r--pkgs/tools/security/cloudhunter/default.nix1
-rw-r--r--pkgs/tools/security/cloudlist/default.nix1
-rw-r--r--pkgs/tools/security/cmospwd/default.nix1
-rw-r--r--pkgs/tools/security/coercer/default.nix1
-rw-r--r--pkgs/tools/security/commix/default.nix1
-rw-r--r--pkgs/tools/security/cosign/default.nix1
-rw-r--r--pkgs/tools/security/coze/default.nix1
-rw-r--r--pkgs/tools/security/crackql/default.nix1
-rw-r--r--pkgs/tools/security/crackxls/default.nix1
-rw-r--r--pkgs/tools/security/credential-detector/default.nix1
-rw-r--r--pkgs/tools/security/creds/default.nix1
-rw-r--r--pkgs/tools/security/credslayer/default.nix1
-rw-r--r--pkgs/tools/security/crlfsuite/default.nix1
-rw-r--r--pkgs/tools/security/crlfuzz/default.nix1
-rw-r--r--pkgs/tools/security/crowbar/default.nix1
-rw-r--r--pkgs/tools/security/crunch/default.nix1
-rw-r--r--pkgs/tools/security/cryptomator/default.nix1
-rw-r--r--pkgs/tools/security/decoder/default.nix1
-rw-r--r--pkgs/tools/security/deepsecrets/default.nix1
-rw-r--r--pkgs/tools/security/dieharder/default.nix1
-rw-r--r--pkgs/tools/security/dirstalk/default.nix1
-rw-r--r--pkgs/tools/security/dismap/default.nix1
-rw-r--r--pkgs/tools/security/dnsenum/default.nix1
-rw-r--r--pkgs/tools/security/dnspeep/default.nix1
-rw-r--r--pkgs/tools/security/dnsrecon/default.nix1
-rw-r--r--pkgs/tools/security/doas/default.nix1
-rw-r--r--pkgs/tools/security/dontgo403/default.nix1
-rw-r--r--pkgs/tools/security/doona/default.nix1
-rw-r--r--pkgs/tools/security/doppler/default.nix1
-rw-r--r--pkgs/tools/security/dorkscout/default.nix1
-rw-r--r--pkgs/tools/security/earlybird/default.nix1
-rw-r--r--pkgs/tools/security/ec2stepshell/default.nix1
-rw-r--r--pkgs/tools/security/ecdsatool/default.nix1
-rw-r--r--pkgs/tools/security/enc/default.nix1
-rw-r--r--pkgs/tools/security/enchive/default.nix1
-rw-r--r--pkgs/tools/security/enum4linux-ng/default.nix1
-rw-r--r--pkgs/tools/security/enum4linux/default.nix1
-rw-r--r--pkgs/tools/security/enumerepo/default.nix1
-rw-r--r--pkgs/tools/security/evil-winrm/default.nix1
-rw-r--r--pkgs/tools/security/evtx/default.nix1
-rw-r--r--pkgs/tools/security/expliot/default.nix1
-rw-r--r--pkgs/tools/security/extrude/default.nix1
-rw-r--r--pkgs/tools/security/faraday-agent-dispatcher/default.nix1
-rw-r--r--pkgs/tools/security/faraday-cli/default.nix1
-rw-r--r--pkgs/tools/security/ffuf/default.nix1
-rw-r--r--pkgs/tools/security/fierce/default.nix1
-rw-r--r--pkgs/tools/security/fingerprintx/default.nix1
-rw-r--r--pkgs/tools/security/firefox_decrypt/default.nix1
-rw-r--r--pkgs/tools/security/fpm2/default.nix1
-rw-r--r--pkgs/tools/security/freeze/default.nix1
-rw-r--r--pkgs/tools/security/fulcio/default.nix1
-rw-r--r--pkgs/tools/security/galer/default.nix1
-rw-r--r--pkgs/tools/security/gau/default.nix1
-rw-r--r--pkgs/tools/security/gencfsm/default.nix1
-rw-r--r--pkgs/tools/security/genpass/default.nix1
-rw-r--r--pkgs/tools/security/ggshield/default.nix1
-rw-r--r--pkgs/tools/security/ghauri/default.nix1
-rw-r--r--pkgs/tools/security/ghdorker/default.nix1
-rw-r--r--pkgs/tools/security/ghidra/build.nix1
-rw-r--r--pkgs/tools/security/ghidra/default.nix1
-rw-r--r--pkgs/tools/security/ghost/default.nix1
-rw-r--r--pkgs/tools/security/gitjacker/default.nix1
-rw-r--r--pkgs/tools/security/gnupg-pkcs11-scd/default.nix1
-rw-r--r--pkgs/tools/security/go-cve-search/default.nix1
-rw-r--r--pkgs/tools/security/go-exploitdb/default.nix1
-rw-r--r--pkgs/tools/security/goblob/default.nix1
-rw-r--r--pkgs/tools/security/gobuster/default.nix1
-rw-r--r--pkgs/tools/security/gomapenum/default.nix1
-rw-r--r--pkgs/tools/security/gorilla-bin/default.nix1
-rw-r--r--pkgs/tools/security/gospider/default.nix1
-rw-r--r--pkgs/tools/security/gotestwaf/default.nix1
-rw-r--r--pkgs/tools/security/gotrue/default.nix1
-rw-r--r--pkgs/tools/security/gotrue/supabase.nix1
-rw-r--r--pkgs/tools/security/goverview/default.nix1
-rw-r--r--pkgs/tools/security/govulncheck/default.nix1
-rw-r--r--pkgs/tools/security/gowitness/default.nix1
-rw-r--r--pkgs/tools/security/graphinder/default.nix1
-rw-r--r--pkgs/tools/security/graphqlmap/default.nix1
-rw-r--r--pkgs/tools/security/graphw00f/default.nix1
-rw-r--r--pkgs/tools/security/grype/default.nix1
-rw-r--r--pkgs/tools/security/hakrawler/default.nix1
-rw-r--r--pkgs/tools/security/hash_extender/default.nix1
-rw-r--r--pkgs/tools/security/hashcat/default.nix1
-rw-r--r--pkgs/tools/security/hashrat/default.nix1
-rw-r--r--pkgs/tools/security/haveged/default.nix1
-rw-r--r--pkgs/tools/security/hfinger/default.nix1
-rw-r--r--pkgs/tools/security/holehe/default.nix1
-rw-r--r--pkgs/tools/security/honeytrap/default.nix1
-rw-r--r--pkgs/tools/security/hstsparser/default.nix1
-rw-r--r--pkgs/tools/security/httpdump/default.nix1
-rw-r--r--pkgs/tools/security/httpx/default.nix1
-rw-r--r--pkgs/tools/security/iaito/default.nix1
-rw-r--r--pkgs/tools/security/ibm-sw-tpm2/default.nix1
-rw-r--r--pkgs/tools/security/ifdnfc/default.nix1
-rw-r--r--pkgs/tools/security/imdshift/default.nix1
-rw-r--r--pkgs/tools/security/inql/default.nix1
-rw-r--r--pkgs/tools/security/ioccheck/default.nix1
-rw-r--r--pkgs/tools/security/ipscan/default.nix1
-rw-r--r--pkgs/tools/security/isolate/default.nix1
-rw-r--r--pkgs/tools/security/jaeles/default.nix1
-rw-r--r--pkgs/tools/security/jd-gui/default.nix1
-rw-r--r--pkgs/tools/security/joincap/default.nix1
-rw-r--r--pkgs/tools/security/jsubfinder/default.nix1
-rw-r--r--pkgs/tools/security/jwx/default.nix1
-rw-r--r--pkgs/tools/security/katana/default.nix1
-rw-r--r--pkgs/tools/security/kbs2/default.nix1
-rw-r--r--pkgs/tools/security/kdigger/default.nix1
-rw-r--r--pkgs/tools/security/keepwn/default.nix1
-rw-r--r--pkgs/tools/security/kerbrute/default.nix1
-rw-r--r--pkgs/tools/security/kestrel/default.nix1
-rw-r--r--pkgs/tools/security/keybase/gui.nix1
-rw-r--r--pkgs/tools/security/keycard-cli/default.nix1
-rw-r--r--pkgs/tools/security/keyscope/default.nix1
-rw-r--r--pkgs/tools/security/kiterunner/default.nix1
-rw-r--r--pkgs/tools/security/knockpy/default.nix1
-rw-r--r--pkgs/tools/security/knowsmore/default.nix1
-rw-r--r--pkgs/tools/security/kpcli/default.nix1
-rw-r--r--pkgs/tools/security/kube-bench/default.nix1
-rw-r--r--pkgs/tools/security/kubeaudit/default.nix1
-rw-r--r--pkgs/tools/security/kubeclarity/default.nix1
-rw-r--r--pkgs/tools/security/kubernetes-polaris/default.nix1
-rw-r--r--pkgs/tools/security/kubescape/default.nix1
-rw-r--r--pkgs/tools/security/kubesec/default.nix1
-rw-r--r--pkgs/tools/security/ldapmonitor/default.nix1
-rw-r--r--pkgs/tools/security/ldeep/default.nix1
-rw-r--r--pkgs/tools/security/lesspass-cli/default.nix1
-rw-r--r--pkgs/tools/security/lil-pwny/default.nix1
-rw-r--r--pkgs/tools/security/linux-exploit-suggester/default.nix1
-rw-r--r--pkgs/tools/security/log4j-scan/default.nix1
-rw-r--r--pkgs/tools/security/log4j-sniffer/default.nix1
-rw-r--r--pkgs/tools/security/lynis/default.nix1
-rw-r--r--pkgs/tools/security/masscan/default.nix1
-rw-r--r--pkgs/tools/security/medusa/default.nix1
-rw-r--r--pkgs/tools/security/melt/default.nix1
-rw-r--r--pkgs/tools/security/mfcuk/default.nix1
-rw-r--r--pkgs/tools/security/mfoc/default.nix1
-rw-r--r--pkgs/tools/security/minica/default.nix1
-rw-r--r--pkgs/tools/security/mitm6/default.nix1
-rw-r--r--pkgs/tools/security/mitmproxy2swagger/default.nix1
-rw-r--r--pkgs/tools/security/mkpasswd/default.nix1
-rw-r--r--pkgs/tools/security/mkrand/default.nix1
-rw-r--r--pkgs/tools/security/mktemp/default.nix1
-rw-r--r--pkgs/tools/security/mokutil/default.nix1
-rw-r--r--pkgs/tools/security/monsoon/default.nix1
-rw-r--r--pkgs/tools/security/mpw/default.nix1
-rw-r--r--pkgs/tools/security/msfpc/default.nix1
-rw-r--r--pkgs/tools/security/mx-takeover/default.nix1
-rw-r--r--pkgs/tools/security/naabu/default.nix1
-rw-r--r--pkgs/tools/security/nasty/default.nix1
-rw-r--r--pkgs/tools/security/nbtscanner/default.nix1
-rw-r--r--pkgs/tools/security/ncrack/default.nix1
-rw-r--r--pkgs/tools/security/nitrokey-app/default.nix1
-rw-r--r--pkgs/tools/security/nmap-formatter/default.nix1
-rw-r--r--pkgs/tools/security/nmap/qt.nix1
-rw-r--r--pkgs/tools/security/noseyparker/default.nix1
-rw-r--r--pkgs/tools/security/nosqli/default.nix1
-rw-r--r--pkgs/tools/security/notary/default.nix1
-rw-r--r--pkgs/tools/security/ntlmrecon/default.nix1
-rw-r--r--pkgs/tools/security/nwipe/default.nix1
-rw-r--r--pkgs/tools/security/oauth2c/default.nix1
-rw-r--r--pkgs/tools/security/octosuite/default.nix1
-rw-r--r--pkgs/tools/security/onioncircuits/default.nix1
-rw-r--r--pkgs/tools/security/onlykey-cli/default.nix1
-rw-r--r--pkgs/tools/security/open-ecard/default.nix1
-rw-r--r--pkgs/tools/security/openrisk/default.nix1
-rw-r--r--pkgs/tools/security/orjail/default.nix1
-rw-r--r--pkgs/tools/security/osv-detector/default.nix1
-rw-r--r--pkgs/tools/security/osv-scanner/default.nix1
-rw-r--r--pkgs/tools/security/otpauth/default.nix1
-rw-r--r--pkgs/tools/security/ots/default.nix1
-rw-r--r--pkgs/tools/security/pamtester/default.nix1
-rw-r--r--pkgs/tools/security/paperkey/default.nix1
-rw-r--r--pkgs/tools/security/pass/extensions/import.nix1
-rw-r--r--pkgs/tools/security/pass/rofi-pass.nix1
-rw-r--r--pkgs/tools/security/pass2csv/default.nix1
-rw-r--r--pkgs/tools/security/passphrase2pgp/default.nix1
-rw-r--r--pkgs/tools/security/pcsc-cyberjack/default.nix1
-rw-r--r--pkgs/tools/security/pdfcrack/default.nix1
-rw-r--r--pkgs/tools/security/pgpdump/default.nix1
-rw-r--r--pkgs/tools/security/plecost/default.nix1
-rw-r--r--pkgs/tools/security/pomerium-cli/default.nix1
-rw-r--r--pkgs/tools/security/posteid-seed-extractor/default.nix1
-rw-r--r--pkgs/tools/security/pretender/default.nix1
-rw-r--r--pkgs/tools/security/pwdsafety/default.nix1
-rw-r--r--pkgs/tools/security/pwncat/default.nix1
-rw-r--r--pkgs/tools/security/qdigidoc/default.nix1
-rw-r--r--pkgs/tools/security/quill-qr/default.nix1
-rw-r--r--pkgs/tools/security/quill/default.nix1
-rw-r--r--pkgs/tools/security/radamsa/default.nix1
-rw-r--r--pkgs/tools/security/redwax-tool/default.nix1
-rw-r--r--pkgs/tools/security/regpg/default.nix1
-rw-r--r--pkgs/tools/security/responder/default.nix1
-rw-r--r--pkgs/tools/security/ripasso/cursive.nix1
-rw-r--r--pkgs/tools/security/rustscan/default.nix1
-rw-r--r--pkgs/tools/security/s5/default.nix1
-rw-r--r--pkgs/tools/security/safe/default.nix1
-rw-r--r--pkgs/tools/security/saml2aws/default.nix1
-rw-r--r--pkgs/tools/security/sammler/default.nix1
-rw-r--r--pkgs/tools/security/sbctl/default.nix1
-rw-r--r--pkgs/tools/security/scilla/default.nix1
-rw-r--r--pkgs/tools/security/scorecard/default.nix1
-rw-r--r--pkgs/tools/security/scrypt/default.nix1
-rw-r--r--pkgs/tools/security/sdlookup/default.nix1
-rw-r--r--pkgs/tools/security/secretscanner/default.nix1
-rw-r--r--pkgs/tools/security/semgrep/semgrep-core.nix1
-rw-r--r--pkgs/tools/security/shc/default.nix1
-rw-r--r--pkgs/tools/security/shisho/default.nix1
-rw-r--r--pkgs/tools/security/signify/default.nix1
-rw-r--r--pkgs/tools/security/slsa-verifier/default.nix1
-rw-r--r--pkgs/tools/security/smbmap/default.nix1
-rw-r--r--pkgs/tools/security/snallygaster/default.nix1
-rw-r--r--pkgs/tools/security/snow/default.nix1
-rw-r--r--pkgs/tools/security/snowcat/default.nix1
-rw-r--r--pkgs/tools/security/spectre-meltdown-checker/default.nix1
-rw-r--r--pkgs/tools/security/spyre/default.nix1
-rw-r--r--pkgs/tools/security/ssdeep/default.nix1
-rw-r--r--pkgs/tools/security/ssh-audit/default.nix1
-rw-r--r--pkgs/tools/security/ssh-to-pgp/default.nix1
-rw-r--r--pkgs/tools/security/sshchecker/default.nix1
-rw-r--r--pkgs/tools/security/sshguard/default.nix1
-rw-r--r--pkgs/tools/security/sshocker/default.nix1
-rw-r--r--pkgs/tools/security/sshuttle/default.nix1
-rw-r--r--pkgs/tools/security/sslscan/default.nix1
-rw-r--r--pkgs/tools/security/stacs/default.nix1
-rw-r--r--pkgs/tools/security/su-exec/default.nix1
-rw-r--r--pkgs/tools/security/subjs/default.nix1
-rw-r--r--pkgs/tools/security/swaggerhole/default.nix1
-rw-r--r--pkgs/tools/security/teler/default.nix1
-rw-r--r--pkgs/tools/security/tell-me-your-secrets/default.nix1
-rw-r--r--pkgs/tools/security/terrascan/default.nix1
-rw-r--r--pkgs/tools/security/threatest/default.nix1
-rw-r--r--pkgs/tools/security/tor/torsocks.nix1
-rw-r--r--pkgs/tools/security/tpm2-abrmd/default.nix1
-rw-r--r--pkgs/tools/security/tracee/default.nix1
-rw-r--r--pkgs/tools/security/trousers/default.nix1
-rw-r--r--pkgs/tools/security/truecrack/default.nix1
-rw-r--r--pkgs/tools/security/trueseeing/default.nix1
-rw-r--r--pkgs/tools/security/trustymail/default.nix1
-rw-r--r--pkgs/tools/security/uddup/default.nix1
-rw-r--r--pkgs/tools/security/udpx/default.nix1
-rw-r--r--pkgs/tools/security/urlhunter/default.nix1
-rw-r--r--pkgs/tools/security/usbrip/default.nix1
-rw-r--r--pkgs/tools/security/vals/default.nix1
-rw-r--r--pkgs/tools/security/vault-medusa/default.nix1
-rw-r--r--pkgs/tools/security/vault-ssh-plus/default.nix1
-rw-r--r--pkgs/tools/security/verifpal/default.nix1
-rw-r--r--pkgs/tools/security/vexctl/default.nix1
-rw-r--r--pkgs/tools/security/vulnix/default.nix1
-rw-r--r--pkgs/tools/security/wad/default.nix1
-rw-r--r--pkgs/tools/security/waf-tester/default.nix1
-rw-r--r--pkgs/tools/security/wafw00f/default.nix1
-rw-r--r--pkgs/tools/security/web-eid-app/default.nix1
-rw-r--r--pkgs/tools/security/whatweb/default.nix1
-rw-r--r--pkgs/tools/security/wipe/default.nix1
-rw-r--r--pkgs/tools/security/xcat/default.nix1
-rw-r--r--pkgs/tools/security/xorex/default.nix1
-rw-r--r--pkgs/tools/security/xsser/default.nix1
-rw-r--r--pkgs/tools/security/xsubfind3r/default.nix1
-rw-r--r--pkgs/tools/security/yarGen/default.nix1
-rw-r--r--pkgs/tools/security/yersinia/default.nix1
-rw-r--r--pkgs/tools/security/yubikey-agent/default.nix1
-rw-r--r--pkgs/tools/security/zdns/default.nix1
-rw-r--r--pkgs/tools/security/zgrab2/default.nix1
312 files changed, 312 insertions, 0 deletions
diff --git a/pkgs/tools/security/2fa/default.nix b/pkgs/tools/security/2fa/default.nix
index d1d4cc42a1ffc..7261eb605c088 100644
--- a/pkgs/tools/security/2fa/default.nix
+++ b/pkgs/tools/security/2fa/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://rsc.io/2fa";
     description = "Two-factor authentication on the command line";
+    mainProgram = "2fa";
     license = licenses.bsd3;
     maintainers = with maintainers; [ rvolosatovs ];
   };
diff --git a/pkgs/tools/security/acltoolkit/default.nix b/pkgs/tools/security/acltoolkit/default.nix
index 14b19e3cd7b87..b7c42c2a2574a 100644
--- a/pkgs/tools/security/acltoolkit/default.nix
+++ b/pkgs/tools/security/acltoolkit/default.nix
@@ -38,6 +38,7 @@ python3.pkgs.buildPythonPackage rec {
 
   meta = with lib; {
     description = "ACL abuse swiss-knife";
+    mainProgram = "acltoolkit";
     homepage = "https://github.com/zblurx/acltoolkit";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/adenum/default.nix b/pkgs/tools/security/adenum/default.nix
index 018fd0e263fcb..d547bd5c9ebcf 100644
--- a/pkgs/tools/security/adenum/default.nix
+++ b/pkgs/tools/security/adenum/default.nix
@@ -40,6 +40,7 @@ python3.pkgs.buildPythonApplication {
 
   meta = with lib; {
     description = "Tool to find misconfiguration through LDAP";
+    mainProgram = "adenum";
     homepage = "https://github.com/SecuProject/ADenum";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/aesfix/default.nix b/pkgs/tools/security/aesfix/default.nix
index b2eb2e0e96ca6..fed9ace264c46 100644
--- a/pkgs/tools/security/aesfix/default.nix
+++ b/pkgs/tools/security/aesfix/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Correct bit errors in an AES key schedules";
+    mainProgram = "aesfix";
     homepage = "https://citp.princeton.edu/our-work/memory/";
     maintainers = with maintainers; [ fedx-sudo ];
   };
diff --git a/pkgs/tools/security/aeskeyfind/default.nix b/pkgs/tools/security/aeskeyfind/default.nix
index 08b2481ff00da..4ce27f5eca660 100644
--- a/pkgs/tools/security/aeskeyfind/default.nix
+++ b/pkgs/tools/security/aeskeyfind/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Locates 128-bit and 256-bit AES keys in a captured memory image";
+    mainProgram = "aeskeyfind";
     homepage = "https://citp.princeton.edu/our-work/memory/";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fedx-sudo ];
diff --git a/pkgs/tools/security/afl/libdislocator.nix b/pkgs/tools/security/afl/libdislocator.nix
index 400464c005673..1030ffaf9eb85 100644
--- a/pkgs/tools/security/afl/libdislocator.nix
+++ b/pkgs/tools/security/afl/libdislocator.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation {
       the odds of bumping into heap-related security bugs in
       several ways.
     '';
+    mainProgram = "get-libdislocator-so";
     license = lib.licenses.asl20;
     maintainers = with maintainers; [ ris ];
   };
diff --git a/pkgs/tools/security/age-plugin-ledger/default.nix b/pkgs/tools/security/age-plugin-ledger/default.nix
index 6ed6b526b65da..d3e1e49904ef1 100644
--- a/pkgs/tools/security/age-plugin-ledger/default.nix
+++ b/pkgs/tools/security/age-plugin-ledger/default.nix
@@ -37,6 +37,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Ledger Nano plugin for age";
+    mainProgram = "age-plugin-ledger";
     homepage = "https://github.com/Ledger-Donjon/age-plugin-ledger";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ erdnaxe ];
diff --git a/pkgs/tools/security/age-plugin-tpm/default.nix b/pkgs/tools/security/age-plugin-tpm/default.nix
index 4885aa326ddae..3eef366f8ea89 100644
--- a/pkgs/tools/security/age-plugin-tpm/default.nix
+++ b/pkgs/tools/security/age-plugin-tpm/default.nix
@@ -35,6 +35,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "TPM 2.0 plugin for age (This software is experimental, use it at your own risk)";
+    mainProgram = "age-plugin-tpm";
     homepage = "https://github.com/Foxboron/age-plugin-tpm";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/age-plugin-yubikey/default.nix b/pkgs/tools/security/age-plugin-yubikey/default.nix
index 7a3364c8420b6..0942848e02e5c 100644
--- a/pkgs/tools/security/age-plugin-yubikey/default.nix
+++ b/pkgs/tools/security/age-plugin-yubikey/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "YubiKey plugin for age";
+    mainProgram = "age-plugin-yubikey";
     homepage = "https://github.com/str4d/age-plugin-yubikey";
     changelog = "https://github.com/str4d/age-plugin-yubikey/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ mit asl20 ];
diff --git a/pkgs/tools/security/aide/default.nix b/pkgs/tools/security/aide/default.nix
index 0168ddc4cc902..104b5d11217ad 100644
--- a/pkgs/tools/security/aide/default.nix
+++ b/pkgs/tools/security/aide/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://aide.github.io/";
     description = "A file and directory integrity checker";
+    mainProgram = "aide";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ happysalada ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/aiodnsbrute/default.nix b/pkgs/tools/security/aiodnsbrute/default.nix
index c11255e6ab802..0c2f6512d878f 100644
--- a/pkgs/tools/security/aiodnsbrute/default.nix
+++ b/pkgs/tools/security/aiodnsbrute/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "DNS brute force utility";
+    mainProgram = "aiodnsbrute";
     homepage = "https://github.com/blark/aiodnsbrute";
     changelog = "https://github.com/blark/aiodnsbrute/releases/tag/v${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/alterx/default.nix b/pkgs/tools/security/alterx/default.nix
index 9fcdb7378b706..a81d83d2ae312 100644
--- a/pkgs/tools/security/alterx/default.nix
+++ b/pkgs/tools/security/alterx/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast and customizable subdomain wordlist generator using DSL";
+    mainProgram = "alterx";
     homepage = "https://github.com/projectdiscovery/alterx";
     changelog = "https://github.com/projectdiscovery/alterx/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/amoco/default.nix b/pkgs/tools/security/amoco/default.nix
index fe16ad9596dd5..c78cc8a605763 100644
--- a/pkgs/tools/security/amoco/default.nix
+++ b/pkgs/tools/security/amoco/default.nix
@@ -65,6 +65,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for analysing binaries";
+    mainProgram = "amoco";
     homepage = "https://github.com/bdcht/amoco";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/apachetomcatscanner/default.nix b/pkgs/tools/security/apachetomcatscanner/default.nix
index 41c68aa797928..2249247216203 100644
--- a/pkgs/tools/security/apachetomcatscanner/default.nix
+++ b/pkgs/tools/security/apachetomcatscanner/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to scan for Apache Tomcat server vulnerabilities";
+    mainProgram = "ApacheTomcatScanner";
     homepage = "https://github.com/p0dalirius/ApacheTomcatScanner";
     changelog = "https://github.com/p0dalirius/ApacheTomcatScanner/releases/tag/${version}";
     license = with licenses; [ gpl2Only ];
diff --git a/pkgs/tools/security/argocd-vault-plugin/default.nix b/pkgs/tools/security/argocd-vault-plugin/default.nix
index 934be7d099428..b80a67792e5be 100644
--- a/pkgs/tools/security/argocd-vault-plugin/default.nix
+++ b/pkgs/tools/security/argocd-vault-plugin/default.nix
@@ -39,6 +39,7 @@ buildGoModule rec {
     homepage = "https://argocd-vault-plugin.readthedocs.io";
     changelog = "https://github.com/argoproj-labs/argocd-vault-plugin/releases/tag/v${version}";
     description = "An Argo CD plugin to retrieve secrets from Secret Management tools and inject them into Kubernetes secrets";
+    mainProgram = "argocd-vault-plugin";
     license = licenses.asl20;
     maintainers = with maintainers; [ urandom ];
   };
diff --git a/pkgs/tools/security/arti/default.nix b/pkgs/tools/security/arti/default.nix
index ef202fb69eb14..c1e1ae120f971 100644
--- a/pkgs/tools/security/arti/default.nix
+++ b/pkgs/tools/security/arti/default.nix
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An implementation of Tor in Rust";
+    mainProgram = "arti";
     homepage = "https://arti.torproject.org/";
     changelog = "https://gitlab.torproject.org/tpo/core/arti/-/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/tools/security/arubaotp-seed-extractor/default.nix b/pkgs/tools/security/arubaotp-seed-extractor/default.nix
index c2ffef83635de..cd13f891cecc7 100644
--- a/pkgs/tools/security/arubaotp-seed-extractor/default.nix
+++ b/pkgs/tools/security/arubaotp-seed-extractor/default.nix
@@ -40,6 +40,7 @@ python3Packages.buildPythonApplication {
   meta = with lib; {
     homepage = "https://github.com/andry08/ArubaOTP-seed-extractor";
     description = "Extract TOTP seed instead of using ArubaOTP app";
+    mainProgram = "arubaotp-seed-extractor";
     license = licenses.mit;
     maintainers = with maintainers; [ fgaz ];
   };
diff --git a/pkgs/tools/security/asc-key-to-qr-code-gif/default.nix b/pkgs/tools/security/asc-key-to-qr-code-gif/default.nix
index 28913c685778b..3091a8c915545 100644
--- a/pkgs/tools/security/asc-key-to-qr-code-gif/default.nix
+++ b/pkgs/tools/security/asc-key-to-qr-code-gif/default.nix
@@ -39,6 +39,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://github.com/yishilin14/asc-key-to-qr-code-gif";
     description = "Convert ASCII-armored PGP keys to animated QR code";
+    mainProgram = "asc-to-gif.sh";
     platforms = platforms.unix;
     maintainers = with maintainers; [ asymmetric ];
   };
diff --git a/pkgs/tools/security/asnmap/default.nix b/pkgs/tools/security/asnmap/default.nix
index 984f5340eeebe..1c2c52fd00984 100644
--- a/pkgs/tools/security/asnmap/default.nix
+++ b/pkgs/tools/security/asnmap/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to gather network ranges using ASN information";
+    mainProgram = "asnmap";
     homepage = "https://github.com/projectdiscovery/asnmap";
     changelog = "https://github.com/projectdiscovery/asnmap/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/atomic-operator/default.nix b/pkgs/tools/security/atomic-operator/default.nix
index 6db7f0ecdd088..b93b2f809ccdc 100644
--- a/pkgs/tools/security/atomic-operator/default.nix
+++ b/pkgs/tools/security/atomic-operator/default.nix
@@ -52,6 +52,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to execute Atomic Red Team tests (Atomics)";
+    mainProgram = "atomic-operator";
     homepage = "https://www.atomic-operator.com/";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/authz0/default.nix b/pkgs/tools/security/authz0/default.nix
index 04d2598fd5219..2230fe2e518d9 100644
--- a/pkgs/tools/security/authz0/default.nix
+++ b/pkgs/tools/security/authz0/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Automated authorization test tool";
+    mainProgram = "authz0";
     homepage = "https://github.com/hahwul/authz0";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/aws-iam-authenticator/default.nix b/pkgs/tools/security/aws-iam-authenticator/default.nix
index 73750ce03e084..3019a2593640e 100644
--- a/pkgs/tools/security/aws-iam-authenticator/default.nix
+++ b/pkgs/tools/security/aws-iam-authenticator/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/kubernetes-sigs/aws-iam-authenticator";
     description = "AWS IAM credentials for Kubernetes authentication";
+    mainProgram = "aws-iam-authenticator";
     changelog = "https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = with maintainers; [ srhb ];
diff --git a/pkgs/tools/security/b2sum/default.nix b/pkgs/tools/security/b2sum/default.nix
index 581feb28ce087..1ce14a55b079e 100644
--- a/pkgs/tools/security/b2sum/default.nix
+++ b/pkgs/tools/security/b2sum/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "The b2sum utility is similar to the md5sum or shasum utilities but for BLAKE2";
+    mainProgram = "b2sum";
     homepage = "https://blake2.net";
     license = with licenses; [ asl20 cc0 openssl ];
     maintainers = with maintainers; [ kirelagin ];
diff --git a/pkgs/tools/security/b3sum/default.nix b/pkgs/tools/security/b3sum/default.nix
index 94e83b5db39e8..20136f377c504 100644
--- a/pkgs/tools/security/b3sum/default.nix
+++ b/pkgs/tools/security/b3sum/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = {
     description = "BLAKE3 cryptographic hash function";
+    mainProgram = "b3sum";
     homepage = "https://github.com/BLAKE3-team/BLAKE3/";
     maintainers = with lib.maintainers; [ fpletz ivan ];
     license = with lib.licenses; [ cc0 asl20 ];
diff --git a/pkgs/tools/security/badchars/default.nix b/pkgs/tools/security/badchars/default.nix
index 3125ff0c28c94..a6e5666c189f8 100644
--- a/pkgs/tools/security/badchars/default.nix
+++ b/pkgs/tools/security/badchars/default.nix
@@ -21,6 +21,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "HEX badchar generator for different programming languages";
+    mainProgram = "badchars";
     longDescription = ''
       A HEX bad char generator to instruct encoders such as shikata-ga-nai to
       transform those to other chars.
diff --git a/pkgs/tools/security/badrobot/default.nix b/pkgs/tools/security/badrobot/default.nix
index e25e18b5ead23..ad2a0bd29750f 100644
--- a/pkgs/tools/security/badrobot/default.nix
+++ b/pkgs/tools/security/badrobot/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
     homepage = "https://github.com/controlplaneio/badrobot";
     changelog = "https://github.com/controlplaneio/badrobot/blob/v${version}/CHANGELOG.md";
     description = "Operator Security Audit Tool";
+    mainProgram = "badrobot";
     longDescription = ''
       Badrobot is a Kubernetes Operator audit tool. It statically analyses
       manifests for high risk configurations such as lack of security
diff --git a/pkgs/tools/security/binbloom/default.nix b/pkgs/tools/security/binbloom/default.nix
index 0805e7b988d4f..ce99de997cc0b 100644
--- a/pkgs/tools/security/binbloom/default.nix
+++ b/pkgs/tools/security/binbloom/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Raw binary firmware analysis software";
+    mainProgram = "binbloom";
     homepage = "https://github.com/quarkslab/binbloom";
     license = licenses.asl20;
     maintainers = with maintainers; [ erdnaxe ];
diff --git a/pkgs/tools/security/bmrsa/11.nix b/pkgs/tools/security/bmrsa/11.nix
index 932566c650604..3ac41d2da482f 100644
--- a/pkgs/tools/security/bmrsa/11.nix
+++ b/pkgs/tools/security/bmrsa/11.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "RSA utility";
+    mainProgram = "bmrsa";
     homepage = "http://bmrsa.sourceforge.net/";
     license = licenses.gpl2Only;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/boofuzz/default.nix b/pkgs/tools/security/boofuzz/default.nix
index 39b35d6944ded..5c2418cad6655 100644
--- a/pkgs/tools/security/boofuzz/default.nix
+++ b/pkgs/tools/security/boofuzz/default.nix
@@ -56,6 +56,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Network protocol fuzzing tool";
+    mainProgram = "boo";
     homepage = "https://github.com/jtpereyda/boofuzz";
     changelog = "https://github.com/jtpereyda/boofuzz/blob/v${version}/CHANGELOG.rst";
     license = with licenses; [ gpl2Plus ];
diff --git a/pkgs/tools/security/browserpass/default.nix b/pkgs/tools/security/browserpass/default.nix
index 1dd2a27f1ec31..b80b513b3d4be 100644
--- a/pkgs/tools/security/browserpass/default.nix
+++ b/pkgs/tools/security/browserpass/default.nix
@@ -66,6 +66,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Browserpass native client app";
+    mainProgram = "browserpass";
     homepage = "https://github.com/browserpass/browserpass-native";
     license = licenses.isc;
     maintainers = with maintainers; [ rvolosatovs infinisil ];
diff --git a/pkgs/tools/security/bruteforce-luks/default.nix b/pkgs/tools/security/bruteforce-luks/default.nix
index a6e0f3cc104b6..56f827a09a4a5 100644
--- a/pkgs/tools/security/bruteforce-luks/default.nix
+++ b/pkgs/tools/security/bruteforce-luks/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     inherit (src.meta) homepage;
     description = "Cracks passwords of LUKS encrypted volumes";
+    mainProgram = "bruteforce-luks";
     longDescription = ''
       The program tries to decrypt at least one of the key slots by trying
       all the possible passwords. It is especially useful if you know
diff --git a/pkgs/tools/security/brutespray/default.nix b/pkgs/tools/security/brutespray/default.nix
index 9b7ad8c1a666b..74f49fbab41e7 100644
--- a/pkgs/tools/security/brutespray/default.nix
+++ b/pkgs/tools/security/brutespray/default.nix
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/x90skysn3k/brutespray";
     description = "Tool to do brute-forcing from Nmap output";
+    mainProgram = "brutespray";
     longDescription = ''
       This tool automatically attempts default credentials on found services
       directly from Nmap output.
diff --git a/pkgs/tools/security/buttercup-desktop/default.nix b/pkgs/tools/security/buttercup-desktop/default.nix
index bd83baa6db535..e38aaea42a4b2 100644
--- a/pkgs/tools/security/buttercup-desktop/default.nix
+++ b/pkgs/tools/security/buttercup-desktop/default.nix
@@ -24,6 +24,7 @@ in appimageTools.wrapType2 {
 
   meta = with lib; {
     description = "Cross-Platform Passwords & Secrets Vault";
+    mainProgram = "buttercup-desktop";
     homepage = "https://buttercup.pw";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ wolfangaukang ];
diff --git a/pkgs/tools/security/cariddi/default.nix b/pkgs/tools/security/cariddi/default.nix
index 6a41ce214d1d7..76a81a85431e7 100644
--- a/pkgs/tools/security/cariddi/default.nix
+++ b/pkgs/tools/security/cariddi/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Crawler for URLs and endpoints";
+    mainProgram = "cariddi";
     homepage = "https://github.com/edoardottt/cariddi";
     changelog = "https://github.com/edoardottt/cariddi/releases/tag/v${version}";
     license = with licenses; [ gpl3Plus ];
diff --git a/pkgs/tools/security/certdump/default.nix b/pkgs/tools/security/certdump/default.nix
index 7b5b6744b345a..789f4fd573706 100644
--- a/pkgs/tools/security/certdump/default.nix
+++ b/pkgs/tools/security/certdump/default.nix
@@ -33,6 +33,7 @@ buildDotnetModule rec {
 
   meta = with lib; {
     description = "Dump certificates from PE files in different formats";
+    mainProgram = "CertDump";
     homepage = "https://github.com/secana/CertDump";
     longDescription = ''
       Cross-Platform tool to dump the signing certificate from a Portable Executable (PE) file.
diff --git a/pkgs/tools/security/certgraph/default.nix b/pkgs/tools/security/certgraph/default.nix
index da8f8358d7996..3af3078d6b8b1 100644
--- a/pkgs/tools/security/certgraph/default.nix
+++ b/pkgs/tools/security/certgraph/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Intelligence tool to crawl the graph of certificate alternate names";
+    mainProgram = "certgraph";
     homepage = "https://github.com/lanrat/certgraph";
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/certinfo/default.nix b/pkgs/tools/security/certinfo/default.nix
index e0d2a3998a25c..ea94ff3762b77 100644
--- a/pkgs/tools/security/certinfo/default.nix
+++ b/pkgs/tools/security/certinfo/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Print x509 certificate info";
+    mainProgram = "certinfo";
     homepage = "https://github.com/pete911/certinfo";
     license = licenses.mit;
     maintainers = with maintainers; [ jakuzure ];
diff --git a/pkgs/tools/security/certstrap/default.nix b/pkgs/tools/security/certstrap/default.nix
index 8808b98985f85..5761763553927 100644
--- a/pkgs/tools/security/certstrap/default.nix
+++ b/pkgs/tools/security/certstrap/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tools to bootstrap CAs, certificate requests, and signed certificates";
+    mainProgram = "certstrap";
     longDescription = ''
       A simple certificate manager written in Go, to bootstrap your own
       certificate authority and public key infrastructure. Adapted from etcd-ca.
diff --git a/pkgs/tools/security/cewl/default.nix b/pkgs/tools/security/cewl/default.nix
index 06d983c14e36f..dc1ad37513daa 100644
--- a/pkgs/tools/security/cewl/default.nix
+++ b/pkgs/tools/security/cewl/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Custom wordlist generator";
+    mainProgram = "cewl";
     homepage = "https://digi.ninja/projects/cewl.php/";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ elohmeier ];
diff --git a/pkgs/tools/security/cfripper/default.nix b/pkgs/tools/security/cfripper/default.nix
index 51fa61067425c..edacd10e8b050 100644
--- a/pkgs/tools/security/cfripper/default.nix
+++ b/pkgs/tools/security/cfripper/default.nix
@@ -65,6 +65,7 @@ in python.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for analysing CloudFormation templates";
+    mainProgram = "cfripper";
     homepage = "https://github.com/Skyscanner/cfripper";
     changelog = "https://github.com/Skyscanner/cfripper/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/tools/security/chain-bench/default.nix b/pkgs/tools/security/chain-bench/default.nix
index 9705440dfdf87..883674951b14f 100644
--- a/pkgs/tools/security/chain-bench/default.nix
+++ b/pkgs/tools/security/chain-bench/default.nix
@@ -43,6 +43,7 @@ buildGoModule rec {
     homepage = "https://github.com/aquasecurity/chain-bench";
     changelog = "https://github.com/aquasecurity/chain-bench/releases/tag/v${version}";
     description = "An open-source tool for auditing your software supply chain stack for security compliance based on a new CIS Software Supply Chain benchmark";
+    mainProgram = "chain-bench";
     longDescription = ''
       Chain-bench is an open-source tool for auditing your software supply chain
       stack for security compliance based on a new CIS Software Supply Chain
diff --git a/pkgs/tools/security/chainsaw/default.nix b/pkgs/tools/security/chainsaw/default.nix
index b939e15263da9..2bc06428e7815 100644
--- a/pkgs/tools/security/chainsaw/default.nix
+++ b/pkgs/tools/security/chainsaw/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Rapidly Search and Hunt through Windows Forensic Artefacts";
+    mainProgram = "chainsaw";
     homepage = "https://github.com/WithSecureLabs/chainsaw";
     changelog = "https://github.com/WithSecureLabs/chainsaw/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/cherrybomb/default.nix b/pkgs/tools/security/cherrybomb/default.nix
index 4bb975d3394c5..6f8fc1d2a8e34 100644
--- a/pkgs/tools/security/cherrybomb/default.nix
+++ b/pkgs/tools/security/cherrybomb/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A CLI tool that helps you avoid undefined user behavior by validating your API specifications";
+    mainProgram = "cherrybomb";
     homepage = "https://github.com/blst-security/cherrybomb";
     changelog = "https://github.com/blst-security/cherrybomb/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/chrome-token-signing/default.nix b/pkgs/tools/security/chrome-token-signing/default.nix
index 8081c7ef6eb50..5f9618d0f177a 100644
--- a/pkgs/tools/security/chrome-token-signing/default.nix
+++ b/pkgs/tools/security/chrome-token-signing/default.nix
@@ -31,6 +31,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Chrome and Firefox extension for signing with your eID on the web";
+    mainProgram = "chrome-token-signing";
     homepage = "https://github.com/open-eid/chrome-token-signing/wiki";
     license = licenses.lgpl21;
     maintainers = [ maintainers.mmahut ];
diff --git a/pkgs/tools/security/cirrusgo/default.nix b/pkgs/tools/security/cirrusgo/default.nix
index 61c8e6b8b28f9..d7301dd604bda 100644
--- a/pkgs/tools/security/cirrusgo/default.nix
+++ b/pkgs/tools/security/cirrusgo/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to scan SAAS and PAAS applications";
+    mainProgram = "cirrusgo";
     homepage = "https://github.com/Ph33rr/cirrusgo";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/clairvoyance/default.nix b/pkgs/tools/security/clairvoyance/default.nix
index ba88338347fca..ca30860474943 100644
--- a/pkgs/tools/security/clairvoyance/default.nix
+++ b/pkgs/tools/security/clairvoyance/default.nix
@@ -45,6 +45,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to obtain GraphQL API schemas";
+    mainProgram = "clairvoyance";
     homepage = "https://github.com/nikitastupin/clairvoyance";
     changelog = "https://github.com/nikitastupin/clairvoyance/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/tools/security/cliam/default.nix b/pkgs/tools/security/cliam/default.nix
index 400cf8b7e7c52..1089a352d54cb 100644
--- a/pkgs/tools/security/cliam/default.nix
+++ b/pkgs/tools/security/cliam/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Cloud agnostic IAM permissions enumerator";
+    mainProgram = "cliam";
     homepage = "https://github.com/securisec/cliam";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/cloudbrute/default.nix b/pkgs/tools/security/cloudbrute/default.nix
index 677c14021509f..cae471ce9aec8 100644
--- a/pkgs/tools/security/cloudbrute/default.nix
+++ b/pkgs/tools/security/cloudbrute/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Cloud enumeration tool";
+    mainProgram = "cloudbrute";
     longDescription = ''
       A tool to find a company (target) infrastructure, files, and apps on
       the top cloud providers (Amazon, Google, Microsoft, DigitalOcean,
diff --git a/pkgs/tools/security/cloudfox/default.nix b/pkgs/tools/security/cloudfox/default.nix
index 85777c91be09a..995ee7a326a99 100644
--- a/pkgs/tools/security/cloudfox/default.nix
+++ b/pkgs/tools/security/cloudfox/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for situational awareness of cloud penetration tests";
+    mainProgram = "cloudfox";
     homepage = "https://github.com/BishopFox/cloudfox";
     changelog = "https://github.com/BishopFox/cloudfox/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/cloudhunter/default.nix b/pkgs/tools/security/cloudhunter/default.nix
index 206879d537592..7fdfa44031d1b 100644
--- a/pkgs/tools/security/cloudhunter/default.nix
+++ b/pkgs/tools/security/cloudhunter/default.nix
@@ -43,6 +43,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Cloud bucket scanner";
+    mainProgram = "cloudhunter";
     homepage = "https://github.com/belane/CloudHunter";
     changelog = "https://github.com/belane/CloudHunter/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/cloudlist/default.nix b/pkgs/tools/security/cloudlist/default.nix
index fa41327a8cf58..ab849a688a297 100644
--- a/pkgs/tools/security/cloudlist/default.nix
+++ b/pkgs/tools/security/cloudlist/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for listing assets from multiple cloud providers";
+    mainProgram = "cloudlist";
     homepage = "https://github.com/projectdiscovery/cloudlist";
     changelog = "https://github.com/projectdiscovery/cloudlist/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/cmospwd/default.nix b/pkgs/tools/security/cmospwd/default.nix
index e80b7256e50c9..9243afa1aad75 100644
--- a/pkgs/tools/security/cmospwd/default.nix
+++ b/pkgs/tools/security/cmospwd/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Decrypt password stored in cmos used to access BIOS SETUP";
+    mainProgram = "cmospwd";
     homepage = "https://www.cgsecurity.org/wiki/CmosPwd";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ t4ccer ];
diff --git a/pkgs/tools/security/coercer/default.nix b/pkgs/tools/security/coercer/default.nix
index f380d130bb07f..e0d921e62e2d7 100644
--- a/pkgs/tools/security/coercer/default.nix
+++ b/pkgs/tools/security/coercer/default.nix
@@ -41,6 +41,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to automatically coerce a Windows server";
+    mainProgram = "coercer";
     homepage = "https://github.com/p0dalirius/Coercer";
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/commix/default.nix b/pkgs/tools/security/commix/default.nix
index b4c16376d8dad..6197b59172ca1 100644
--- a/pkgs/tools/security/commix/default.nix
+++ b/pkgs/tools/security/commix/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Automated Command Injection Exploitation Tool";
+    mainProgram = "commix";
     homepage = "https://github.com/commixproject/commix";
     changelog = "https://github.com/commixproject/commix/releases/tag/v${version}";
     license = with licenses; [ gpl3Plus ];
diff --git a/pkgs/tools/security/cosign/default.nix b/pkgs/tools/security/cosign/default.nix
index 072b8e4ffb529..f2b9a5ed254d2 100644
--- a/pkgs/tools/security/cosign/default.nix
+++ b/pkgs/tools/security/cosign/default.nix
@@ -72,6 +72,7 @@ buildGoModule rec {
     homepage = "https://github.com/sigstore/cosign";
     changelog = "https://github.com/sigstore/cosign/releases/tag/v${version}";
     description = "Container Signing CLI with support for ephemeral keys and Sigstore signing";
+    mainProgram = "cosign";
     license = licenses.asl20;
     maintainers = with maintainers; [ lesuisse jk developer-guy ];
   };
diff --git a/pkgs/tools/security/coze/default.nix b/pkgs/tools/security/coze/default.nix
index 5fbd906fd87ef..ca7b8f3d1d7e4 100644
--- a/pkgs/tools/security/coze/default.nix
+++ b/pkgs/tools/security/coze/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI client for Coze, a cryptographic JSON messaging specification";
+    mainProgram = "coze";
     homepage = "https://github.com/Cyphrme/coze_cli";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ qbit ];
diff --git a/pkgs/tools/security/crackql/default.nix b/pkgs/tools/security/crackql/default.nix
index 6a8e95ec57f2d..cb3ecc1cb0a74 100644
--- a/pkgs/tools/security/crackql/default.nix
+++ b/pkgs/tools/security/crackql/default.nix
@@ -35,6 +35,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "GraphQL password brute-force and fuzzing utility";
+    mainProgram = "crackql";
     homepage = "https://github.com/nicholasaleks/CrackQL";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/crackxls/default.nix b/pkgs/tools/security/crackxls/default.nix
index f3c1745321eb6..7ff6de5deff0c 100644
--- a/pkgs/tools/security/crackxls/default.nix
+++ b/pkgs/tools/security/crackxls/default.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/GavinSmith0123/crackxls2003/";
     description = "Used to break the encryption on old Microsoft Excel and Microsoft Word files";
+    mainProgram = "crackxls2003";
     platforms = platforms.linux;
     license = licenses.gpl3;
   };
diff --git a/pkgs/tools/security/credential-detector/default.nix b/pkgs/tools/security/credential-detector/default.nix
index fd3e40b6536cc..1297d158efe58 100644
--- a/pkgs/tools/security/credential-detector/default.nix
+++ b/pkgs/tools/security/credential-detector/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to detect potentially hard-coded credentials";
+    mainProgram = "credential-detector";
     homepage = "https://github.com/ynori7/credential-detector";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/creds/default.nix b/pkgs/tools/security/creds/default.nix
index 2f2962616d7c1..ed34ad0df7c2e 100644
--- a/pkgs/tools/security/creds/default.nix
+++ b/pkgs/tools/security/creds/default.nix
@@ -35,6 +35,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to search a collection of default credentials";
+    mainProgram = "creds";
     homepage = "https://github.com/ihebski/DefaultCreds-cheat-sheet";
     changelog = "https://github.com/ihebski/DefaultCreds-cheat-sheet/releases/tag/creds-${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/credslayer/default.nix b/pkgs/tools/security/credslayer/default.nix
index 7d9d675779301..f09a86bc613a2 100644
--- a/pkgs/tools/security/credslayer/default.nix
+++ b/pkgs/tools/security/credslayer/default.nix
@@ -51,6 +51,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Extract credentials and other useful info from network captures";
+    mainProgram = "credslayer";
     homepage = "https://github.com/ShellCode33/CredSLayer";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/crlfsuite/default.nix b/pkgs/tools/security/crlfsuite/default.nix
index bc375f03c0c4f..dfd1c7098c2f9 100644
--- a/pkgs/tools/security/crlfsuite/default.nix
+++ b/pkgs/tools/security/crlfsuite/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "CRLF injection (HTTP Response Splitting) scanner";
+    mainProgram = "crlfsuite";
     homepage = "https://github.com/Nefcore/CRLFsuite";
     license = licenses.mit;
     maintainers = with maintainers; [ c0bw3b fab ];
diff --git a/pkgs/tools/security/crlfuzz/default.nix b/pkgs/tools/security/crlfuzz/default.nix
index f28f96e5f4cdc..ab2ee1e7a46ef 100644
--- a/pkgs/tools/security/crlfuzz/default.nix
+++ b/pkgs/tools/security/crlfuzz/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to scan for CRLF vulnerability";
+    mainProgram = "crlfuzz";
     homepage = "https://github.com/dwisiswant0/crlfuzz";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/crowbar/default.nix b/pkgs/tools/security/crowbar/default.nix
index e58f77457de28..095004ab76df1 100644
--- a/pkgs/tools/security/crowbar/default.nix
+++ b/pkgs/tools/security/crowbar/default.nix
@@ -36,6 +36,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/galkan/crowbar";
     description = "A brute forcing tool that can be used during penetration tests";
+    mainProgram = "crowbar";
     license = licenses.mit;
     maintainers = with maintainers; [ pamplemousse ];
   };
diff --git a/pkgs/tools/security/crunch/default.nix b/pkgs/tools/security/crunch/default.nix
index d287fb32fb670..146a67605847f 100644
--- a/pkgs/tools/security/crunch/default.nix
+++ b/pkgs/tools/security/crunch/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Wordlist generator";
+    mainProgram = "crunch";
     homepage = "https://sourceforge.net/projects/crunch-wordlist/";
     platforms = platforms.unix;
     license = with licenses; [ gpl2Only ];
diff --git a/pkgs/tools/security/cryptomator/default.nix b/pkgs/tools/security/cryptomator/default.nix
index 85ce0c8797924..39654ae0ceafe 100644
--- a/pkgs/tools/security/cryptomator/default.nix
+++ b/pkgs/tools/security/cryptomator/default.nix
@@ -85,6 +85,7 @@ mavenJdk.buildMavenPackage rec {
 
   meta = with lib; {
     description = "Free client-side encryption for your cloud files";
+    mainProgram = "cryptomator";
     homepage = "https://cryptomator.org";
     sourceProvenance = with sourceTypes; [
       fromSource
diff --git a/pkgs/tools/security/decoder/default.nix b/pkgs/tools/security/decoder/default.nix
index 76dd3003d5001..1463e132bb728 100644
--- a/pkgs/tools/security/decoder/default.nix
+++ b/pkgs/tools/security/decoder/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/PeterPawn/decoder";
     description = ''"secrets" decoding for FRITZ!OS devices'';
+    mainProgram = "decoder";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = with maintainers; [ Luflosi ];
diff --git a/pkgs/tools/security/deepsecrets/default.nix b/pkgs/tools/security/deepsecrets/default.nix
index c509311f3a6de..4fa86da7f9131 100644
--- a/pkgs/tools/security/deepsecrets/default.nix
+++ b/pkgs/tools/security/deepsecrets/default.nix
@@ -42,6 +42,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Secrets scanner that understands code";
+    mainProgram = "deepsecrets";
     homepage = "https://github.com/avito-tech/deepsecrets";
     changelog = "https://github.com/avito-tech/deepsecrets/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/dieharder/default.nix b/pkgs/tools/security/dieharder/default.nix
index 51370ad8dcc2d..716b3266faee1 100644
--- a/pkgs/tools/security/dieharder/default.nix
+++ b/pkgs/tools/security/dieharder/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A Random Number Generator test suite";
+    mainProgram = "dieharder";
     homepage = "https://webhome.phy.duke.edu/~rgb/General/dieharder.php";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ zhaofengli ];
diff --git a/pkgs/tools/security/dirstalk/default.nix b/pkgs/tools/security/dirstalk/default.nix
index 1397a0b8aa9e3..d0cdc4b481349 100644
--- a/pkgs/tools/security/dirstalk/default.nix
+++ b/pkgs/tools/security/dirstalk/default.nix
@@ -38,6 +38,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to brute force paths on web servers";
+    mainProgram = "dirstalk";
     homepage = "https://github.com/stefanoj3/dirstalk";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/dismap/default.nix b/pkgs/tools/security/dismap/default.nix
index 52e046aa80c10..d80e853dae62d 100644
--- a/pkgs/tools/security/dismap/default.nix
+++ b/pkgs/tools/security/dismap/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Asset discovery and identification tools";
+    mainProgram = "dismap";
     homepage = "https://github.com/zhzyker/dismap";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/dnsenum/default.nix b/pkgs/tools/security/dnsenum/default.nix
index a24fc96621f12..826ebec015e4e 100644
--- a/pkgs/tools/security/dnsenum/default.nix
+++ b/pkgs/tools/security/dnsenum/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/fwaeytens/dnsenum";
     description = "A tool to enumerate DNS information";
+    mainProgram = "dnsenum";
     maintainers = with maintainers; [ c0bw3b ];
     license = licenses.gpl2Plus;
     platforms = platforms.all;
diff --git a/pkgs/tools/security/dnspeep/default.nix b/pkgs/tools/security/dnspeep/default.nix
index 978ec5ed2f8b2..73edd9724a0a6 100644
--- a/pkgs/tools/security/dnspeep/default.nix
+++ b/pkgs/tools/security/dnspeep/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Spy on the DNS queries your computer is making";
+    mainProgram = "dnspeep";
     homepage = "https://github.com/jvns/dnspeep";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/security/dnsrecon/default.nix b/pkgs/tools/security/dnsrecon/default.nix
index 65fae4928c6fb..4fdbad950ab0f 100644
--- a/pkgs/tools/security/dnsrecon/default.nix
+++ b/pkgs/tools/security/dnsrecon/default.nix
@@ -42,6 +42,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "DNS Enumeration script";
+    mainProgram = "dnsrecon";
     homepage = "https://github.com/darkoperator/dnsrecon";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ c0bw3b fab ];
diff --git a/pkgs/tools/security/doas/default.nix b/pkgs/tools/security/doas/default.nix
index 03268bc98479c..2864a1edcf4d8 100644
--- a/pkgs/tools/security/doas/default.nix
+++ b/pkgs/tools/security/doas/default.nix
@@ -50,6 +50,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Executes the given command as another user";
+    mainProgram = "doas";
     homepage = "https://github.com/Duncaen/OpenDoas";
     license = licenses.isc;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/dontgo403/default.nix b/pkgs/tools/security/dontgo403/default.nix
index 84e7667377b79..19bc78f2206c8 100644
--- a/pkgs/tools/security/dontgo403/default.nix
+++ b/pkgs/tools/security/dontgo403/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to bypass 40X response codes";
+    mainProgram = "nomore403";
     homepage = "https://github.com/devploit/dontgo403";
     changelog = "https://github.com/devploit/dontgo403/releases/tag/${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/doona/default.nix b/pkgs/tools/security/doona/default.nix
index e0f459ad7453d..2598f2ecbb968 100644
--- a/pkgs/tools/security/doona/default.nix
+++ b/pkgs/tools/security/doona/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/wireghoul/doona";
     description = "A fork of the Bruteforce Exploit Detector Tool (BED)";
+    mainProgram = "doona";
     longDescription = ''
       A fork of the Bruteforce Exploit Detector Tool (BED).
       BED is a program which is designed to check daemons for potential buffer overflows, format string bugs etc.
diff --git a/pkgs/tools/security/doppler/default.nix b/pkgs/tools/security/doppler/default.nix
index 4707240857fce..1e860abc57cd7 100644
--- a/pkgs/tools/security/doppler/default.nix
+++ b/pkgs/tools/security/doppler/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "The official CLI for interacting with your Doppler Enclave secrets and configuration";
+    mainProgram = "doppler";
     homepage = "https://doppler.com";
     license = licenses.asl20;
     maintainers = with maintainers; [ lucperkins ];
diff --git a/pkgs/tools/security/dorkscout/default.nix b/pkgs/tools/security/dorkscout/default.nix
index e5b5057c6089c..57ba965033bb4 100644
--- a/pkgs/tools/security/dorkscout/default.nix
+++ b/pkgs/tools/security/dorkscout/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to automate the work with Google dorks";
+    mainProgram = "dorkscout";
     homepage = "https://github.com/R4yGM/dorkscout";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/earlybird/default.nix b/pkgs/tools/security/earlybird/default.nix
index c7cb35fe335c7..d5f001fc995aa 100644
--- a/pkgs/tools/security/earlybird/default.nix
+++ b/pkgs/tools/security/earlybird/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A sensitive data detection tool capable of scanning source code repositories for passwords, key files, and more";
+    mainProgram = "earlybird";
     homepage = "https://github.com/americanexpress/earlybird";
     changelog = "https://github.com/americanexpress/earlybird/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/ec2stepshell/default.nix b/pkgs/tools/security/ec2stepshell/default.nix
index ff6ee22b08eb6..6b5031ffebe2e 100644
--- a/pkgs/tools/security/ec2stepshell/default.nix
+++ b/pkgs/tools/security/ec2stepshell/default.nix
@@ -38,6 +38,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "AWS post-exploitation tool";
+    mainProgram = "ec2stepshell";
     homepage = "https://github.com/saw-your-packet/EC2StepShell";
     changelog = "https://github.com/saw-your-packet/EC2StepShell/blob/${version}/CHANGELOG.txt";
     license = licenses.mit;
diff --git a/pkgs/tools/security/ecdsatool/default.nix b/pkgs/tools/security/ecdsatool/default.nix
index 0498b758c1d32..aa55facfd8e04 100644
--- a/pkgs/tools/security/ecdsatool/default.nix
+++ b/pkgs/tools/security/ecdsatool/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Create and manipulate ECC NISTP256 keypairs";
+    mainProgram = "ecdsatool";
     homepage = "https://github.com/kaniini/ecdsatool/";
     license = with licenses; [free];
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/enc/default.nix b/pkgs/tools/security/enc/default.nix
index ffacccf6a311a..c5f4d62586c5b 100644
--- a/pkgs/tools/security/enc/default.nix
+++ b/pkgs/tools/security/enc/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
     homepage = "https://github.com/life4/enc";
     changelog = "https://github.com/life4/enc/releases/tag/v${version}";
     description = "A modern and friendly alternative to GnuPG";
+    mainProgram = "enc";
     longDescription = ''
       Enc is a CLI tool for encryption, a modern and friendly alternative to GnuPG.
       It is easy to use, secure by default and can encrypt and decrypt files using password or encryption keys,
diff --git a/pkgs/tools/security/enchive/default.nix b/pkgs/tools/security/enchive/default.nix
index 960ef251b1cdf..8db8f466f9aea 100644
--- a/pkgs/tools/security/enchive/default.nix
+++ b/pkgs/tools/security/enchive/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Encrypted personal archives";
+    mainProgram = "enchive";
     homepage = "https://github.com/skeeto/enchive";
     license = lib.licenses.unlicense;
     platforms = lib.platforms.unix;
diff --git a/pkgs/tools/security/enum4linux-ng/default.nix b/pkgs/tools/security/enum4linux-ng/default.nix
index d30bcbf665d47..ee3ed2e8154d5 100644
--- a/pkgs/tools/security/enum4linux-ng/default.nix
+++ b/pkgs/tools/security/enum4linux-ng/default.nix
@@ -30,6 +30,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Windows/Samba enumeration tool";
+    mainProgram = "enum4linux-ng";
     longDescription = ''
       enum4linux-ng.py is a rewrite of Mark Lowe's enum4linux.pl, a tool for
       enumerating information from Windows and Samba systems.
diff --git a/pkgs/tools/security/enum4linux/default.nix b/pkgs/tools/security/enum4linux/default.nix
index b6da742dc6fad..dd054b58caa59 100644
--- a/pkgs/tools/security/enum4linux/default.nix
+++ b/pkgs/tools/security/enum4linux/default.nix
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A tool for enumerating information from Windows and Samba systems";
+    mainProgram = "enum4linux";
     homepage = "https://labs.portcullis.co.uk/tools/enum4linux/";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ fishi0x01 ];
diff --git a/pkgs/tools/security/enumerepo/default.nix b/pkgs/tools/security/enumerepo/default.nix
index 31ff035950bd1..3c6849af44ff0 100644
--- a/pkgs/tools/security/enumerepo/default.nix
+++ b/pkgs/tools/security/enumerepo/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to list all public repositories for (valid) GitHub usernames";
+    mainProgram = "enumerepo";
     homepage = "https://github.com/trickest/enumerepo";
     changelog = "https://github.com/trickest/enumerepo/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/evil-winrm/default.nix b/pkgs/tools/security/evil-winrm/default.nix
index 30420c7aad685..ab406caafb65c 100644
--- a/pkgs/tools/security/evil-winrm/default.nix
+++ b/pkgs/tools/security/evil-winrm/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "WinRM shell for hacking/pentesting";
+    mainProgram = "evil-winrm";
     homepage = "https://github.com/Hackplayers/evil-winrm";
     changelog = "https://github.com/Hackplayers/evil-winrm/blob/v${version}/CHANGELOG.md";
     license = licenses.lgpl3Plus;
diff --git a/pkgs/tools/security/evtx/default.nix b/pkgs/tools/security/evtx/default.nix
index e12408d227524..92f8a29cf8200 100644
--- a/pkgs/tools/security/evtx/default.nix
+++ b/pkgs/tools/security/evtx/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Parser for the Windows XML Event Log (EVTX) format";
+    mainProgram = "evtx_dump";
     homepage = "https://github.com/omerbenamram/evtx";
     changelog = "https://github.com/omerbenamram/evtx/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/tools/security/expliot/default.nix b/pkgs/tools/security/expliot/default.nix
index 1414d7c36afd5..88fd1cf84b617 100644
--- a/pkgs/tools/security/expliot/default.nix
+++ b/pkgs/tools/security/expliot/default.nix
@@ -71,6 +71,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "IoT security testing and exploitation framework";
+    mainProgram = "expliot";
     longDescription = ''
       EXPLIoT is a Framework for security testing and exploiting IoT
       products and IoT infrastructure. It provides a set of plugins
diff --git a/pkgs/tools/security/extrude/default.nix b/pkgs/tools/security/extrude/default.nix
index 7145314fbd413..8a9710582913d 100644
--- a/pkgs/tools/security/extrude/default.nix
+++ b/pkgs/tools/security/extrude/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to analyse binaries for missing security features";
+    mainProgram = "extrude";
     homepage = "https://github.com/liamg/extrude";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/faraday-agent-dispatcher/default.nix b/pkgs/tools/security/faraday-agent-dispatcher/default.nix
index a7920f1e1cbdf..8c390f2b6f7aa 100644
--- a/pkgs/tools/security/faraday-agent-dispatcher/default.nix
+++ b/pkgs/tools/security/faraday-agent-dispatcher/default.nix
@@ -71,6 +71,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to send result from tools to the Faraday Platform";
+    mainProgram = "faraday-dispatcher";
     homepage = "https://github.com/infobyte/faraday_agent_dispatcher";
     changelog = "https://github.com/infobyte/faraday_agent_dispatcher/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/faraday-cli/default.nix b/pkgs/tools/security/faraday-cli/default.nix
index c6f1c3333a710..7e6ac5315e7db 100644
--- a/pkgs/tools/security/faraday-cli/default.nix
+++ b/pkgs/tools/security/faraday-cli/default.nix
@@ -47,6 +47,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command Line Interface for Faraday";
+    mainProgram = "faraday-cli";
     homepage = "https://github.com/infobyte/faraday-cli";
     changelog = "https://github.com/infobyte/faraday-cli/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/ffuf/default.nix b/pkgs/tools/security/ffuf/default.nix
index e0e5976c75101..ae0a19bff0226 100644
--- a/pkgs/tools/security/ffuf/default.nix
+++ b/pkgs/tools/security/ffuf/default.nix
@@ -33,6 +33,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for web fuzzing";
+    mainProgram = "ffuf";
     longDescription = ''
       FFUF, or “Fuzz Faster you Fool” is an open source web fuzzing tool,
       intended for discovering elements and content within web applications
diff --git a/pkgs/tools/security/fierce/default.nix b/pkgs/tools/security/fierce/default.nix
index 9b8d8735b0798..07ab18e36a661 100644
--- a/pkgs/tools/security/fierce/default.nix
+++ b/pkgs/tools/security/fierce/default.nix
@@ -33,6 +33,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "DNS reconnaissance tool for locating non-contiguous IP space";
+    mainProgram = "fierce";
     homepage = "https://github.com/mschwager/fierce";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ c0bw3b ];
diff --git a/pkgs/tools/security/fingerprintx/default.nix b/pkgs/tools/security/fingerprintx/default.nix
index 940195b4e2b51..1d04116c5724a 100644
--- a/pkgs/tools/security/fingerprintx/default.nix
+++ b/pkgs/tools/security/fingerprintx/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Standalone utility for service discovery on open ports";
+    mainProgram = "fingerprintx";
     homepage = "https://github.com/praetorian-inc/fingerprintx";
     changelog = "https://github.com/praetorian-inc/fingerprintx/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/firefox_decrypt/default.nix b/pkgs/tools/security/firefox_decrypt/default.nix
index ce41f07569fb9..9ade5976e8d81 100644
--- a/pkgs/tools/security/firefox_decrypt/default.nix
+++ b/pkgs/tools/security/firefox_decrypt/default.nix
@@ -39,6 +39,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/unode/firefox_decrypt";
     description = "A tool to extract passwords from profiles of Mozilla Firefox and derivates";
+    mainProgram = "firefox_decrypt";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ schnusch ];
   };
diff --git a/pkgs/tools/security/fpm2/default.nix b/pkgs/tools/security/fpm2/default.nix
index 69e6c7f02817f..68781d05dc689 100644
--- a/pkgs/tools/security/fpm2/default.nix
+++ b/pkgs/tools/security/fpm2/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "GTK2 port from Figaro's Password Manager originally developed by John Conneely, with some new enhancements";
+    mainProgram = "fpm2";
     homepage    = "https://als.regnet.cz/fpm2/";
     license     = licenses.gpl2;
     platforms   = platforms.linux;
diff --git a/pkgs/tools/security/freeze/default.nix b/pkgs/tools/security/freeze/default.nix
index a8a8dbb593460..28ef21657009c 100644
--- a/pkgs/tools/security/freeze/default.nix
+++ b/pkgs/tools/security/freeze/default.nix
@@ -28,6 +28,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Payload toolkit for bypassing EDRs";
+    mainProgram = "freeze";
     homepage = "https://github.com/optiv/Freeze";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/fulcio/default.nix b/pkgs/tools/security/fulcio/default.nix
index 17bd273c0a304..46b533e4e68a7 100644
--- a/pkgs/tools/security/fulcio/default.nix
+++ b/pkgs/tools/security/fulcio/default.nix
@@ -67,6 +67,7 @@ buildGoModule rec {
     homepage = "https://github.com/sigstore/fulcio";
     changelog = "https://github.com/sigstore/fulcio/releases/tag/v${version}";
     description = "A Root-CA for code signing certs - issuing certificates based on an OIDC email address";
+    mainProgram = "fulcio";
     longDescription = ''
       Fulcio is a free code signing Certificate Authority, built to make
       short-lived certificates available to anyone. Based on an Open ID Connect
diff --git a/pkgs/tools/security/galer/default.nix b/pkgs/tools/security/galer/default.nix
index bfe7cb18d1eb7..852a91a8fc988 100644
--- a/pkgs/tools/security/galer/default.nix
+++ b/pkgs/tools/security/galer/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to fetch URLs from HTML attributes";
+    mainProgram = "galer";
     homepage = "https://github.com/dwisiswant0/galer";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/gau/default.nix b/pkgs/tools/security/gau/default.nix
index eea5df85162c9..dc4676a1c987f 100644
--- a/pkgs/tools/security/gau/default.nix
+++ b/pkgs/tools/security/gau/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to fetch known URLs";
+    mainProgram = "gau";
     longDescription = ''
       getallurls (gau) fetches known URLs from various sources for any
       given domain.
diff --git a/pkgs/tools/security/gencfsm/default.nix b/pkgs/tools/security/gencfsm/default.nix
index 33f6297905ea9..537b2caf45b39 100644
--- a/pkgs/tools/security/gencfsm/default.nix
+++ b/pkgs/tools/security/gencfsm/default.nix
@@ -50,6 +50,7 @@ stdenv.mkDerivation rec {
     homepage = "http://www.libertyzero.com/GEncfsM/";
     downloadPage = "https://launchpad.net/gencfsm/";
     description = "EncFS manager and mounter with GNOME3 integration";
+    mainProgram = "gnome-encfs-manager";
     license = licenses.gpl2Plus;
     platforms = platforms.linux;
     maintainers = [ maintainers.spacefrogg ];
diff --git a/pkgs/tools/security/genpass/default.nix b/pkgs/tools/security/genpass/default.nix
index 9565bf80c9505..243132bb263dd 100644
--- a/pkgs/tools/security/genpass/default.nix
+++ b/pkgs/tools/security/genpass/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple yet robust commandline random password generator";
+    mainProgram = "genpass";
     homepage = "https://sr.ht/~cyplo/genpass/";
     license = licenses.agpl3Only;
     maintainers = with maintainers; [ cyplo ];
diff --git a/pkgs/tools/security/ggshield/default.nix b/pkgs/tools/security/ggshield/default.nix
index 3bf136683333a..eb0c5c9d2a95e 100644
--- a/pkgs/tools/security/ggshield/default.nix
+++ b/pkgs/tools/security/ggshield/default.nix
@@ -77,6 +77,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to find and fix various types of hardcoded secrets and infrastructure-as-code misconfigurations";
+    mainProgram = "ggshield";
     homepage = "https://github.com/GitGuardian/ggshield";
     changelog = "https://github.com/GitGuardian/ggshield/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/security/ghauri/default.nix b/pkgs/tools/security/ghauri/default.nix
index 6e7ddeb3cd968..fd4a0fa9903f8 100644
--- a/pkgs/tools/security/ghauri/default.nix
+++ b/pkgs/tools/security/ghauri/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for detecting and exploiting SQL injection security flaws";
+    mainProgram = "ghauri";
     homepage = "https://github.com/r0oth3x49/ghauri";
     changelog = "https://github.com/r0oth3x49/ghauri/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/ghdorker/default.nix b/pkgs/tools/security/ghdorker/default.nix
index 28336c30ea151..f00e9a60df81f 100644
--- a/pkgs/tools/security/ghdorker/default.nix
+++ b/pkgs/tools/security/ghdorker/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Extensible GitHub dorking tool";
+    mainProgram = "ghdorker";
     homepage = "https://github.com/dtaivpp/ghdorker";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/ghidra/build.nix b/pkgs/tools/security/ghidra/build.nix
index da164c94b0b5b..8b9f2aaca0077 100644
--- a/pkgs/tools/security/ghidra/build.nix
+++ b/pkgs/tools/security/ghidra/build.nix
@@ -159,6 +159,7 @@ in stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A software reverse engineering (SRE) suite of tools developed by NSA's Research Directorate in support of the Cybersecurity mission";
+    mainProgram = "ghidra";
     homepage = "https://ghidra-sre.org/";
     platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
     sourceProvenance = with sourceTypes; [
diff --git a/pkgs/tools/security/ghidra/default.nix b/pkgs/tools/security/ghidra/default.nix
index 5f9346937b36c..2337b36eb7c8e 100644
--- a/pkgs/tools/security/ghidra/default.nix
+++ b/pkgs/tools/security/ghidra/default.nix
@@ -70,6 +70,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A software reverse engineering (SRE) suite of tools developed by NSA's Research Directorate in support of the Cybersecurity mission";
+    mainProgram = "ghidra";
     homepage = "https://github.com/NationalSecurityAgency/ghidra";
     platforms = [ "x86_64-linux" "x86_64-darwin" ];
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
diff --git a/pkgs/tools/security/ghost/default.nix b/pkgs/tools/security/ghost/default.nix
index 124caef45c209..d645556c87be0 100644
--- a/pkgs/tools/security/ghost/default.nix
+++ b/pkgs/tools/security/ghost/default.nix
@@ -27,6 +27,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Android post-exploitation framework";
+    mainProgram = "ghost";
     homepage = "https://github.com/EntySec/ghost";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/gitjacker/default.nix b/pkgs/tools/security/gitjacker/default.nix
index c233032d9359d..5303e169e8dd7 100644
--- a/pkgs/tools/security/gitjacker/default.nix
+++ b/pkgs/tools/security/gitjacker/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Leak git repositories from misconfigured websites";
+    mainProgram = "gitjacker";
     longDescription = ''
       Gitjacker downloads git repositories and extracts their contents
       from sites where the .git directory has been mistakenly uploaded.
diff --git a/pkgs/tools/security/gnupg-pkcs11-scd/default.nix b/pkgs/tools/security/gnupg-pkcs11-scd/default.nix
index f7c22cddb5cbf..76cc2639bf90e 100644
--- a/pkgs/tools/security/gnupg-pkcs11-scd/default.nix
+++ b/pkgs/tools/security/gnupg-pkcs11-scd/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A smart-card daemon to enable the use of PKCS#11 tokens with GnuPG";
+    mainProgram = "gnupg-pkcs11-scd";
     longDescription = ''
     gnupg-pkcs11 is a project to implement a BSD-licensed smart-card
     daemon to enable the use of PKCS#11 tokens with GnuPG.
diff --git a/pkgs/tools/security/go-cve-search/default.nix b/pkgs/tools/security/go-cve-search/default.nix
index d4b231c63a185..2e521de96ed35 100644
--- a/pkgs/tools/security/go-cve-search/default.nix
+++ b/pkgs/tools/security/go-cve-search/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A lightweight CVE search tool";
+    mainProgram = "go-cve-search";
     longDescription = ''
       go-cve-search is a lightweight tool to search CVE (Common Vulnerabilities
       and Exposures).
diff --git a/pkgs/tools/security/go-exploitdb/default.nix b/pkgs/tools/security/go-exploitdb/default.nix
index d400cd22a6f05..2ca0c1b1e299c 100644
--- a/pkgs/tools/security/go-exploitdb/default.nix
+++ b/pkgs/tools/security/go-exploitdb/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for searching Exploits from Exploit Databases, etc";
+    mainProgram = "go-exploitdb";
     homepage = "https://github.com/vulsio/go-exploitdb";
     changelog = "https://github.com/vulsio/go-exploitdb/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/goblob/default.nix b/pkgs/tools/security/goblob/default.nix
index 401a655d65ab0..a1ffe5b4a9c81 100644
--- a/pkgs/tools/security/goblob/default.nix
+++ b/pkgs/tools/security/goblob/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Enumeration tool for publicly exposed Azure Storage blobs";
+    mainProgram = "goblob";
     homepage = "https://github.com/Macmod/goblob";
     changelog = "https://github.com/Macmod/goblob/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/gobuster/default.nix b/pkgs/tools/security/gobuster/default.nix
index 878fa576b4cd7..bbc4b02c2b168 100644
--- a/pkgs/tools/security/gobuster/default.nix
+++ b/pkgs/tools/security/gobuster/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool used to brute-force URIs, DNS subdomains, Virtual Host names on target web servers";
+    mainProgram = "gobuster";
     homepage = "https://github.com/OJ/gobuster";
     changelog = "https://github.com/OJ/gobuster/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/gomapenum/default.nix b/pkgs/tools/security/gomapenum/default.nix
index 6e1da08d14f0a..8171d5ef57e83 100644
--- a/pkgs/tools/security/gomapenum/default.nix
+++ b/pkgs/tools/security/gomapenum/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tools for user enumeration and password bruteforce";
+    mainProgram = "gomapenum";
     homepage = "https://github.com/nodauf/GoMapEnum";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/gorilla-bin/default.nix b/pkgs/tools/security/gorilla-bin/default.nix
index 388996c62fb51..898abbbd25a44 100644
--- a/pkgs/tools/security/gorilla-bin/default.nix
+++ b/pkgs/tools/security/gorilla-bin/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Password Gorilla is a Tk based password manager";
+    mainProgram = "gorilla";
     homepage = "https://github.com/zdia/gorilla/wiki";
     maintainers = [ lib.maintainers.namore ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/tools/security/gospider/default.nix b/pkgs/tools/security/gospider/default.nix
index 91e940ec87eb0..d78089f6072ec 100644
--- a/pkgs/tools/security/gospider/default.nix
+++ b/pkgs/tools/security/gospider/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast web spider written in Go";
+    mainProgram = "gospider";
     longDescription = ''
       GoSpider is a fast web crawler that parses sitemap.xml and robots.txt file.
       It can generate and verify link from JavaScript files, extract URLs from
diff --git a/pkgs/tools/security/gotestwaf/default.nix b/pkgs/tools/security/gotestwaf/default.nix
index c9fbe9f699ebe..5a807b0a08c70 100644
--- a/pkgs/tools/security/gotestwaf/default.nix
+++ b/pkgs/tools/security/gotestwaf/default.nix
@@ -40,6 +40,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for API and OWASP attack simulation";
+    mainProgram = "gotestwaf";
     homepage = "https://github.com/wallarm/gotestwaf";
     changelog = "https://github.com/wallarm/gotestwaf/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/gotrue/default.nix b/pkgs/tools/security/gotrue/default.nix
index 112e0c4ddc6d1..06b3560dec564 100644
--- a/pkgs/tools/security/gotrue/default.nix
+++ b/pkgs/tools/security/gotrue/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/netlify/gotrue";
     description = "An SWT based API for managing users and issuing SWT tokens";
+    mainProgram = "gotrue";
     changelog = "https://github.com/netlify/gotrue/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ urandom ];
diff --git a/pkgs/tools/security/gotrue/supabase.nix b/pkgs/tools/security/gotrue/supabase.nix
index 36ce6d72ceb80..9020a0c8c9ba2 100644
--- a/pkgs/tools/security/gotrue/supabase.nix
+++ b/pkgs/tools/security/gotrue/supabase.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/supabase/gotrue";
     description = "A JWT based API for managing users and issuing JWT tokens";
+    mainProgram = "gotrue";
     changelog = "https://github.com/supabase/gotrue/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ urandom ];
diff --git a/pkgs/tools/security/goverview/default.nix b/pkgs/tools/security/goverview/default.nix
index 02038bf27b99a..6c55f069d2589 100644
--- a/pkgs/tools/security/goverview/default.nix
+++ b/pkgs/tools/security/goverview/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to get an overview of the list of URLs";
+    mainProgram = "goverview";
     homepage = "https://github.com/j3ssie/goverview";
     changelog = "https://github.com/j3ssie/goverview/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/govulncheck/default.nix b/pkgs/tools/security/govulncheck/default.nix
index dd45d054aeeb8..84aeaf51b947a 100644
--- a/pkgs/tools/security/govulncheck/default.nix
+++ b/pkgs/tools/security/govulncheck/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
     homepage = "https://pkg.go.dev/golang.org/x/vuln/cmd/govulncheck";
     downloadPage = "https://github.com/golang/vuln";
     description = "The database client and tools for the Go vulnerability database, also known as vuln";
+    mainProgram = "govulncheck";
     longDescription = ''
       Govulncheck reports known vulnerabilities that affect Go code. It uses
       static analysis of source code or a binary's symbol table to narrow down
diff --git a/pkgs/tools/security/gowitness/default.nix b/pkgs/tools/security/gowitness/default.nix
index bd9ab97a0f384..ab31281bbd283 100644
--- a/pkgs/tools/security/gowitness/default.nix
+++ b/pkgs/tools/security/gowitness/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Web screenshot utility";
+    mainProgram = "gowitness";
     homepage = "https://github.com/sensepost/gowitness";
     changelog = "https://github.com/sensepost/gowitness/releases/tag/${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/graphinder/default.nix b/pkgs/tools/security/graphinder/default.nix
index f0256dff7cbe3..541e7ab3189d7 100644
--- a/pkgs/tools/security/graphinder/default.nix
+++ b/pkgs/tools/security/graphinder/default.nix
@@ -48,6 +48,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to find GraphQL endpoints using subdomain enumeration";
+    mainProgram = "graphinder";
     homepage = "https://github.com/Escape-Technologies/graphinder";
     changelog = "https://github.com/Escape-Technologies/graphinder/releases/tag/v${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/graphqlmap/default.nix b/pkgs/tools/security/graphqlmap/default.nix
index 84b72d3b6a16c..a2c0904b4a983 100644
--- a/pkgs/tools/security/graphqlmap/default.nix
+++ b/pkgs/tools/security/graphqlmap/default.nix
@@ -28,6 +28,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to interact with a GraphQL endpoint";
+    mainProgram = "graphqlmap";
     homepage = "https://github.com/swisskyrepo/GraphQLmap";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/graphw00f/default.nix b/pkgs/tools/security/graphw00f/default.nix
index 7f1d5ede3e718..9edcf7c1f939f 100644
--- a/pkgs/tools/security/graphw00f/default.nix
+++ b/pkgs/tools/security/graphw00f/default.nix
@@ -30,6 +30,7 @@ python3.pkgs.buildPythonApplication rec {
   '';
   meta = with lib; {
     description = "GraphQL Server Engine Fingerprinting utility";
+    mainProgram = "graphw00f";
     homepage = "https://github.com/dolevf/graphw00f";
     license = licenses.bsd3;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/grype/default.nix b/pkgs/tools/security/grype/default.nix
index d602d1fc6e733..db9a24ecc4293 100644
--- a/pkgs/tools/security/grype/default.nix
+++ b/pkgs/tools/security/grype/default.nix
@@ -109,6 +109,7 @@ buildGoModule rec {
     homepage = "https://github.com/anchore/grype";
     changelog = "https://github.com/anchore/grype/releases/tag/v${version}";
     description = "Vulnerability scanner for container images and filesystems";
+    mainProgram = "grype";
     longDescription = ''
       As a vulnerability scanner grype is able to scan the contents of a
       container image or filesystem to find known vulnerabilities.
diff --git a/pkgs/tools/security/hakrawler/default.nix b/pkgs/tools/security/hakrawler/default.nix
index 0577ceb8c103c..58481390f2cc8 100644
--- a/pkgs/tools/security/hakrawler/default.nix
+++ b/pkgs/tools/security/hakrawler/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Web crawler for the discovery of endpoints and assets";
+    mainProgram = "hakrawler";
     homepage = "https://github.com/hakluke/hakrawler";
     longDescription =  ''
       Simple, fast web crawler designed for easy, quick discovery of endpoints
diff --git a/pkgs/tools/security/hash_extender/default.nix b/pkgs/tools/security/hash_extender/default.nix
index b90dff6cd17cb..10f82ca77e71b 100644
--- a/pkgs/tools/security/hash_extender/default.nix
+++ b/pkgs/tools/security/hash_extender/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Tool to automate hash length extension attacks";
+    mainProgram = "hash_extender";
     homepage = "https://github.com/iagox86/hash_extender";
     license = licenses.bsd3;
     maintainers = with maintainers; [ oxzi ];
diff --git a/pkgs/tools/security/hashcat/default.nix b/pkgs/tools/security/hashcat/default.nix
index 2e8370be85fe2..627709d123a1c 100644
--- a/pkgs/tools/security/hashcat/default.nix
+++ b/pkgs/tools/security/hashcat/default.nix
@@ -81,6 +81,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fast password cracker";
+    mainProgram = "hashcat";
     homepage    = "https://hashcat.net/hashcat/";
     license     = licenses.mit;
     platforms   = platforms.unix;
diff --git a/pkgs/tools/security/hashrat/default.nix b/pkgs/tools/security/hashrat/default.nix
index 7923021f83555..38014988dd670 100644
--- a/pkgs/tools/security/hashrat/default.nix
+++ b/pkgs/tools/security/hashrat/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Command-line hash-generation utility";
+    mainProgram = "hashrat";
     longDescription = ''
       Hashing tool supporting md5,sha1,sha256,sha512,whirlpool,jh and hmac versions of these.
       Includes recursive file hashing and other features.
diff --git a/pkgs/tools/security/haveged/default.nix b/pkgs/tools/security/haveged/default.nix
index c28ae465e0eb6..c30469c3a3d93 100644
--- a/pkgs/tools/security/haveged/default.nix
+++ b/pkgs/tools/security/haveged/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A simple entropy daemon";
+    mainProgram = "haveged";
     longDescription = ''
       The haveged project is an attempt to provide an easy-to-use, unpredictable
       random number generator based upon an adaptation of the HAVEGE algorithm.
diff --git a/pkgs/tools/security/hfinger/default.nix b/pkgs/tools/security/hfinger/default.nix
index 900f7402451d2..baca9ed5ddd27 100644
--- a/pkgs/tools/security/hfinger/default.nix
+++ b/pkgs/tools/security/hfinger/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Fingerprinting tool for HTTP requests";
+    mainProgram = "hfinger";
     homepage = "https://github.com/CERT-Polska/hfinger";
     changelog = "https://github.com/CERT-Polska/hfinger/releases/tag/v${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/holehe/default.nix b/pkgs/tools/security/holehe/default.nix
index ed8146fec6883..872cde1f8f875 100644
--- a/pkgs/tools/security/holehe/default.nix
+++ b/pkgs/tools/security/holehe/default.nix
@@ -39,6 +39,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "CLI to check if the mail is used on different sites";
+    mainProgram = "holehe";
     homepage = "https://github.com/megadose/holehe";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/honeytrap/default.nix b/pkgs/tools/security/honeytrap/default.nix
index e0252d06f1540..3e311c5768640 100644
--- a/pkgs/tools/security/honeytrap/default.nix
+++ b/pkgs/tools/security/honeytrap/default.nix
@@ -21,6 +21,7 @@ buildGoModule {
 
   meta = with lib; {
     description = "Advanced Honeypot framework";
+    mainProgram = "honeytrap";
     homepage = "https://github.com/honeytrap/honeytrap";
     license = licenses.asl20;
     maintainers = [ ];
diff --git a/pkgs/tools/security/hstsparser/default.nix b/pkgs/tools/security/hstsparser/default.nix
index 8b4e4882f556c..6c30190507199 100644
--- a/pkgs/tools/security/hstsparser/default.nix
+++ b/pkgs/tools/security/hstsparser/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to parse Firefox and Chrome HSTS databases into forensic artifacts";
+    mainProgram = "hstsparser";
     homepage = "https://github.com/thebeanogamer/hstsparser";
     changelog = "https://github.com/thebeanogamer/hstsparser/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/httpdump/default.nix b/pkgs/tools/security/httpdump/default.nix
index d745adc50d5d8..2a8e754977824 100644
--- a/pkgs/tools/security/httpdump/default.nix
+++ b/pkgs/tools/security/httpdump/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Parse and display HTTP traffic from network device or pcap file";
+    mainProgram = "httpdump";
     homepage = "https://github.com/hsiafan/httpdump";
     license = with licenses; [ bsd2 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/httpx/default.nix b/pkgs/tools/security/httpx/default.nix
index 3fb5371429586..80a7404be0026 100644
--- a/pkgs/tools/security/httpx/default.nix
+++ b/pkgs/tools/security/httpx/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast and multi-purpose HTTP toolkit";
+    mainProgram = "httpx";
     longDescription = ''
       httpx is a fast and multi-purpose HTTP toolkit allow to run multiple
       probers using retryablehttp library, it is designed to maintain the
diff --git a/pkgs/tools/security/iaito/default.nix b/pkgs/tools/security/iaito/default.nix
index 5812b1e6cfeab..2fc43ad670551 100644
--- a/pkgs/tools/security/iaito/default.nix
+++ b/pkgs/tools/security/iaito/default.nix
@@ -87,6 +87,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "An official graphical interface of radare2";
+    mainProgram = "iaito";
     longDescription = ''
       iaito is the official graphical interface of radare2. It's the
       continuation of Cutter for radare2 after the Rizin fork.
diff --git a/pkgs/tools/security/ibm-sw-tpm2/default.nix b/pkgs/tools/security/ibm-sw-tpm2/default.nix
index 9a13c21030169..969a758d18d4e 100644
--- a/pkgs/tools/security/ibm-sw-tpm2/default.nix
+++ b/pkgs/tools/security/ibm-sw-tpm2/default.nix
@@ -55,6 +55,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "IBM's Software TPM 2.0, an implementation of the TCG TPM 2.0 specification";
+    mainProgram = "tpm_server";
     homepage = "https://sourceforge.net/projects/ibmswtpm2/";
     platforms = platforms.linux ++ platforms.darwin;
     maintainers = with maintainers; [ delroth ];
diff --git a/pkgs/tools/security/ifdnfc/default.nix b/pkgs/tools/security/ifdnfc/default.nix
index 34c140023ac25..ddc48085860b0 100644
--- a/pkgs/tools/security/ifdnfc/default.nix
+++ b/pkgs/tools/security/ifdnfc/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "PC/SC IFD Handler based on libnfc";
+    mainProgram = "ifdnfc-activate";
     longDescription =
     '' libnfc Interface Plugin to be used in <code>services.pcscd.plugins</code>.
        It provides support for all readers which are not supported by ccid but by libnfc.
diff --git a/pkgs/tools/security/imdshift/default.nix b/pkgs/tools/security/imdshift/default.nix
index c33e0878cd4dc..a4d7e46e7c280 100644
--- a/pkgs/tools/security/imdshift/default.nix
+++ b/pkgs/tools/security/imdshift/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to migrate workloads to IMDSv2";
+    mainProgram = "imdshift";
     homepage = "https://github.com/ayushpriya10/IMDShift";
     changelog = "https://github.com/ayushpriya10/IMDShift/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/inql/default.nix b/pkgs/tools/security/inql/default.nix
index 272e28292ac89..6f9a6e29f2e0e 100644
--- a/pkgs/tools/security/inql/default.nix
+++ b/pkgs/tools/security/inql/default.nix
@@ -33,6 +33,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Security testing tool for GraphQL";
+    mainProgram = "inql";
     homepage = "https://github.com/doyensec/inql";
     changelog = "https://github.com/doyensec/inql/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/tools/security/ioccheck/default.nix b/pkgs/tools/security/ioccheck/default.nix
index 2f25aa4ea8978..3f899c33b5577 100644
--- a/pkgs/tools/security/ioccheck/default.nix
+++ b/pkgs/tools/security/ioccheck/default.nix
@@ -88,6 +88,7 @@ in py.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for researching IOCs";
+    mainProgram = "ioccheck";
     homepage = "https://github.com/ranguli/ioccheck";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/ipscan/default.nix b/pkgs/tools/security/ipscan/default.nix
index 72a44a4ab8a15..f61944fe63ead 100644
--- a/pkgs/tools/security/ipscan/default.nix
+++ b/pkgs/tools/security/ipscan/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Angry IP Scanner - fast and friendly network scanner";
+    mainProgram = "ipscan";
     homepage = "https://angryip.org";
     downloadPage = "https://github.com/angryip/ipscan/releases/tag/${version}";
     changelog = "https://github.com/angryip/ipscan/blob/${version}/CHANGELOG";
diff --git a/pkgs/tools/security/isolate/default.nix b/pkgs/tools/security/isolate/default.nix
index abc491d95c700..b745af75d8b7f 100644
--- a/pkgs/tools/security/isolate/default.nix
+++ b/pkgs/tools/security/isolate/default.nix
@@ -42,6 +42,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Sandbox for securely executing untrusted programs";
+    mainProgram = "isolate";
     homepage = "https://github.com/ioi/isolate";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ virchau13 ];
diff --git a/pkgs/tools/security/jaeles/default.nix b/pkgs/tools/security/jaeles/default.nix
index 5ab635b35ac28..7c652995f6ff6 100644
--- a/pkgs/tools/security/jaeles/default.nix
+++ b/pkgs/tools/security/jaeles/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for automated Web application testing";
+    mainProgram = "jaeles";
     homepage = "https://github.com/jaeles-project/jaeles";
     changelog = "https://github.com/jaeles-project/jaeles/releases/tag/beta-v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/jd-gui/default.nix b/pkgs/tools/security/jd-gui/default.nix
index 2663af4ed6200..7cc714d967737 100644
--- a/pkgs/tools/security/jd-gui/default.nix
+++ b/pkgs/tools/security/jd-gui/default.nix
@@ -122,6 +122,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fast Java Decompiler with powerful GUI";
+    mainProgram = "jd-gui";
     homepage    = "https://java-decompiler.github.io/";
     sourceProvenance = with sourceTypes; [
       fromSource
diff --git a/pkgs/tools/security/joincap/default.nix b/pkgs/tools/security/joincap/default.nix
index 1589602ac0628..c37226a6f3271 100644
--- a/pkgs/tools/security/joincap/default.nix
+++ b/pkgs/tools/security/joincap/default.nix
@@ -28,6 +28,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Merge multiple pcap files together, gracefully";
+    mainProgram = "joincap";
     homepage = "https://github.com/assafmo/joincap";
     changelog = "https://github.com/assafmo/joincap/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/security/jsubfinder/default.nix b/pkgs/tools/security/jsubfinder/default.nix
index 328c81143d1c4..c989c352ea053 100644
--- a/pkgs/tools/security/jsubfinder/default.nix
+++ b/pkgs/tools/security/jsubfinder/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to search for in Javascript hidden subdomains and secrets";
+    mainProgram = "jsubfinder";
     homepage = "https://github.com/ThreatUnkown/jsubfinder";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/jwx/default.nix b/pkgs/tools/security/jwx/default.nix
index 224962825888f..ea8e69fad109b 100644
--- a/pkgs/tools/security/jwx/default.nix
+++ b/pkgs/tools/security/jwx/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = " Implementation of various JWx (Javascript Object Signing and Encryption/JOSE) technologies";
+    mainProgram = "jwx";
     homepage = "https://github.com/lestrrat-go/jwx";
     license = licenses.mit;
     maintainers = with maintainers; [ arianvp flokli ];
diff --git a/pkgs/tools/security/katana/default.nix b/pkgs/tools/security/katana/default.nix
index 1f4a7300e228c..fef276e414c95 100644
--- a/pkgs/tools/security/katana/default.nix
+++ b/pkgs/tools/security/katana/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A next-generation crawling and spidering framework";
+    mainProgram = "katana";
     homepage = "https://github.com/projectdiscovery/katana";
     changelog = "https://github.com/projectdiscovery/katana/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/kbs2/default.nix b/pkgs/tools/security/kbs2/default.nix
index 3e9a726651a6a..2592fe444d8df 100644
--- a/pkgs/tools/security/kbs2/default.nix
+++ b/pkgs/tools/security/kbs2/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A secret manager backed by age";
+    mainProgram = "kbs2";
     homepage = "https://github.com/woodruffw/kbs2";
     changelog = "https://github.com/woodruffw/kbs2/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/security/kdigger/default.nix b/pkgs/tools/security/kdigger/default.nix
index 82070c89447ae..dc700bc8e84a9 100644
--- a/pkgs/tools/security/kdigger/default.nix
+++ b/pkgs/tools/security/kdigger/default.nix
@@ -61,6 +61,7 @@ buildGoModule rec {
     homepage = "https://github.com/quarkslab/kdigger";
     changelog = "https://github.com/quarkslab/kdigger/releases/tag/v${version}";
     description = "An in-pod context discovery tool for Kubernetes penetration testing";
+    mainProgram = "kdigger";
     longDescription = ''
       kdigger, short for "Kubernetes digger", is a context discovery tool for
       Kubernetes penetration testing. This tool is a compilation of various
diff --git a/pkgs/tools/security/keepwn/default.nix b/pkgs/tools/security/keepwn/default.nix
index bb856c80710b8..1d9c740960f32 100644
--- a/pkgs/tools/security/keepwn/default.nix
+++ b/pkgs/tools/security/keepwn/default.nix
@@ -43,6 +43,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to automate KeePass discovery and secret extraction";
+    mainProgram = "keepwn";
     homepage = "https://github.com/Orange-Cyberdefense/KeePwn";
     changelog = "https://github.com/Orange-Cyberdefense/KeePwn/releases/tag/${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/kerbrute/default.nix b/pkgs/tools/security/kerbrute/default.nix
index dbadde6129d84..c020e0e5c4bc2 100644
--- a/pkgs/tools/security/kerbrute/default.nix
+++ b/pkgs/tools/security/kerbrute/default.nix
@@ -23,6 +23,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = {
     homepage = "https://github.com/TarlogicSecurity/kerbrute";
     description = "Kerberos bruteforce utility";
+    mainProgram = "kerbrute";
     license = lib.licenses.gpl3Only;
     maintainers = with lib.maintainers; [ applePrincess ];
   };
diff --git a/pkgs/tools/security/kestrel/default.nix b/pkgs/tools/security/kestrel/default.nix
index f3d40b5ade0cc..a94b412e67ee9 100644
--- a/pkgs/tools/security/kestrel/default.nix
+++ b/pkgs/tools/security/kestrel/default.nix
@@ -28,6 +28,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "File encryption done right";
+    mainProgram = "kestrel";
     longDescription = "
       Kestrel is a data-at-rest file encryption program
       that lets you encrypt files to anyone with a public key.
diff --git a/pkgs/tools/security/keybase/gui.nix b/pkgs/tools/security/keybase/gui.nix
index 8541b02d583ef..577e91c24e59d 100644
--- a/pkgs/tools/security/keybase/gui.nix
+++ b/pkgs/tools/security/keybase/gui.nix
@@ -109,6 +109,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.keybase.io/";
     description = "The Keybase official GUI";
+    mainProgram = "keybase-gui";
     platforms = [ "x86_64-linux" ];
     maintainers = with maintainers; [ avaq rvolosatovs puffnfresh np Br1ght0ne shofius ];
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
diff --git a/pkgs/tools/security/keycard-cli/default.nix b/pkgs/tools/security/keycard-cli/default.nix
index 851a0dac9031c..26c1d7934fbb5 100644
--- a/pkgs/tools/security/keycard-cli/default.nix
+++ b/pkgs/tools/security/keycard-cli/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A command line tool and shell to manage keycards";
+    mainProgram = "keycard-cli";
     homepage = "https://keycard.status.im";
     license = licenses.mpl20;
     maintainers = [ maintainers.zimbatm ];
diff --git a/pkgs/tools/security/keyscope/default.nix b/pkgs/tools/security/keyscope/default.nix
index 31d97256f0e7f..928daf4b23034 100644
--- a/pkgs/tools/security/keyscope/default.nix
+++ b/pkgs/tools/security/keyscope/default.nix
@@ -41,6 +41,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A key and secret workflow (validation, invalidation, etc.) tool";
+    mainProgram = "keyscope";
     homepage = "https://github.com/spectralops/keyscope";
     changelog = "https://github.com/spectralops/keyscope/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/kiterunner/default.nix b/pkgs/tools/security/kiterunner/default.nix
index 5f73ba055902c..f059eeb411539 100644
--- a/pkgs/tools/security/kiterunner/default.nix
+++ b/pkgs/tools/security/kiterunner/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Contextual content discovery tool";
+    mainProgram = "kiterunner";
     longDescription = ''
       Kiterunner is a tool that is capable of not only performing traditional
       content discovery at lightning fast speeds, but also bruteforcing routes
diff --git a/pkgs/tools/security/knockpy/default.nix b/pkgs/tools/security/knockpy/default.nix
index 3bd90b799e21a..6d4e80ec98c23 100644
--- a/pkgs/tools/security/knockpy/default.nix
+++ b/pkgs/tools/security/knockpy/default.nix
@@ -43,6 +43,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to scan subdomains";
+    mainProgram = "knockpy";
     homepage = "https://github.com/guelfoweb/knock";
     changelog = "https://github.com/guelfoweb/knock/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/knowsmore/default.nix b/pkgs/tools/security/knowsmore/default.nix
index d9a806ef2a58f..f73ae1032efaa 100644
--- a/pkgs/tools/security/knowsmore/default.nix
+++ b/pkgs/tools/security/knowsmore/default.nix
@@ -47,6 +47,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for pentesting Microsoft Active Directory";
+    mainProgram = "knowsmore";
     homepage = "https://github.com/helviojunior/knowsmore";
     changelog = "https://github.com/helviojunior/knowsmore/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/kpcli/default.nix b/pkgs/tools/security/kpcli/default.nix
index 3ca03ee3ca105..0509663af1aab 100644
--- a/pkgs/tools/security/kpcli/default.nix
+++ b/pkgs/tools/security/kpcli/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "KeePass Command Line Interface";
+    mainProgram = "kpcli";
     longDescription = ''
       KeePass Command Line Interface (CLI) / interactive shell.
       Use this program to access and manage your KeePass 1.x or 2.x databases from a Unix-like command line.
diff --git a/pkgs/tools/security/kube-bench/default.nix b/pkgs/tools/security/kube-bench/default.nix
index 673dde4a58a19..4e539fa96dd5b 100644
--- a/pkgs/tools/security/kube-bench/default.nix
+++ b/pkgs/tools/security/kube-bench/default.nix
@@ -43,6 +43,7 @@ buildGoModule rec {
     homepage = "https://github.com/aquasecurity/kube-bench";
     changelog = "https://github.com/aquasecurity/kube-bench/releases/tag/v${version}";
     description = "Checks whether Kubernetes is deployed according to security best practices as defined in the CIS Kubernetes Benchmark";
+    mainProgram = "kube-bench";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk ];
   };
diff --git a/pkgs/tools/security/kubeaudit/default.nix b/pkgs/tools/security/kubeaudit/default.nix
index 135d29c272232..f1b673d2de709 100644
--- a/pkgs/tools/security/kubeaudit/default.nix
+++ b/pkgs/tools/security/kubeaudit/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Audit tool for Kubernetes";
+    mainProgram = "kubeaudit";
     homepage = "https://github.com/Shopify/kubeaudit";
     changelog = "https://github.com/Shopify/kubeaudit/releases/tag/v${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/kubeclarity/default.nix b/pkgs/tools/security/kubeclarity/default.nix
index 4aed36bbeaa23..38de010dd9319 100644
--- a/pkgs/tools/security/kubeclarity/default.nix
+++ b/pkgs/tools/security/kubeclarity/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Kubernetes runtime scanner";
+    mainProgram = "kubeclarity";
     longDescription = ''
       KubeClarity is a vulnerabilities scanning and CIS Docker benchmark tool that
       allows users to get an accurate and immediate risk assessment of their
diff --git a/pkgs/tools/security/kubernetes-polaris/default.nix b/pkgs/tools/security/kubernetes-polaris/default.nix
index b053640d8da96..737c901e570b4 100644
--- a/pkgs/tools/security/kubernetes-polaris/default.nix
+++ b/pkgs/tools/security/kubernetes-polaris/default.nix
@@ -45,6 +45,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Validate and remediate Kubernetes resources to ensure configuration best practices are followed";
+    mainProgram = "polaris";
     homepage = "https://www.fairwinds.com/polaris";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ longer ];
diff --git a/pkgs/tools/security/kubescape/default.nix b/pkgs/tools/security/kubescape/default.nix
index b5661ccbcd3cd..c6fb92044cdcc 100644
--- a/pkgs/tools/security/kubescape/default.nix
+++ b/pkgs/tools/security/kubescape/default.nix
@@ -71,6 +71,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for testing if Kubernetes is deployed securely";
+    mainProgram = "kubescape";
     homepage = "https://github.com/kubescape/kubescape";
     changelog = "https://github.com/kubescape/kubescape/releases/tag/v${version}";
     longDescription = ''
diff --git a/pkgs/tools/security/kubesec/default.nix b/pkgs/tools/security/kubesec/default.nix
index 4fa9337e1cb5e..ed562124da903 100644
--- a/pkgs/tools/security/kubesec/default.nix
+++ b/pkgs/tools/security/kubesec/default.nix
@@ -46,6 +46,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Security risk analysis tool for Kubernetes resources";
+    mainProgram = "kubesec";
     homepage = "https://github.com/controlplaneio/kubesec";
     changelog = "https://github.com/controlplaneio/kubesec/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/tools/security/ldapmonitor/default.nix b/pkgs/tools/security/ldapmonitor/default.nix
index 51295d2841a9f..989e1bebc1530 100644
--- a/pkgs/tools/security/ldapmonitor/default.nix
+++ b/pkgs/tools/security/ldapmonitor/default.nix
@@ -33,6 +33,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to monitor creation, deletion and changes to LDAP objects";
+    mainProgram = "ldapmonitor";
     homepage = "https://github.com/p0dalirius/LDAPmonitor";
     changelog = "https://github.com/p0dalirius/LDAPmonitor/releases/tag/${version}";
     license = with licenses; [ gpl3Only ];
diff --git a/pkgs/tools/security/ldeep/default.nix b/pkgs/tools/security/ldeep/default.nix
index ddbff23572717..92d5ff106b6cd 100644
--- a/pkgs/tools/security/ldeep/default.nix
+++ b/pkgs/tools/security/ldeep/default.nix
@@ -48,6 +48,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "In-depth LDAP enumeration utility";
+    mainProgram = "ldeep";
     homepage = "https://github.com/franc-pentest/ldeep";
     changelog = "https://github.com/franc-pentest/ldeep/releases/tag/${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/lesspass-cli/default.nix b/pkgs/tools/security/lesspass-cli/default.nix
index 34d36f93b5fbb..c568be5ebbd85 100644
--- a/pkgs/tools/security/lesspass-cli/default.nix
+++ b/pkgs/tools/security/lesspass-cli/default.nix
@@ -32,6 +32,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Stateless password manager";
+    mainProgram = "lesspass";
     homepage = "https://lesspass.com";
     maintainers = with maintainers; [ jasoncarr ];
     license = licenses.gpl3;
diff --git a/pkgs/tools/security/lil-pwny/default.nix b/pkgs/tools/security/lil-pwny/default.nix
index c8251dfaa2495..42ee72d2c204d 100644
--- a/pkgs/tools/security/lil-pwny/default.nix
+++ b/pkgs/tools/security/lil-pwny/default.nix
@@ -24,6 +24,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Offline auditing of Active Directory passwords";
+    mainProgram = "lil-pwny";
     homepage = "https://github.com/PaperMtn/lil-pwny";
     changelog = "https://github.com/PaperMtn/lil-pwny/blob/${version}/CHANGELOG.md";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/linux-exploit-suggester/default.nix b/pkgs/tools/security/linux-exploit-suggester/default.nix
index 9744c416bb747..ed68e8e7c7a33 100644
--- a/pkgs/tools/security/linux-exploit-suggester/default.nix
+++ b/pkgs/tools/security/linux-exploit-suggester/default.nix
@@ -21,6 +21,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "Tool designed to assist in detecting security deficiencies for given Linux kernel/Linux-based machine";
+    mainProgram = "linux-exploit-suggester";
     homepage = "https://github.com/mzet-/linux-exploit-suggester";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/tools/security/log4j-scan/default.nix b/pkgs/tools/security/log4j-scan/default.nix
index bd2772efb416b..e3de824b223c4 100644
--- a/pkgs/tools/security/log4j-scan/default.nix
+++ b/pkgs/tools/security/log4j-scan/default.nix
@@ -37,6 +37,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Scanner for finding hosts which are vulnerable for log4j";
+    mainProgram = "log4j-scan";
     homepage = "https://github.com/fullhunt/log4j-scan";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/log4j-sniffer/default.nix b/pkgs/tools/security/log4j-sniffer/default.nix
index dec7ce35866a4..d13180d4e4032 100644
--- a/pkgs/tools/security/log4j-sniffer/default.nix
+++ b/pkgs/tools/security/log4j-sniffer/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool that scans archives to check for vulnerable log4j versions";
+    mainProgram = "log4j-sniffer";
     homepage = "https://github.com/palantir/log4j-sniffer";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/lynis/default.nix b/pkgs/tools/security/lynis/default.nix
index a40cbc7117d51..d207e3d6e3e02 100644
--- a/pkgs/tools/security/lynis/default.nix
+++ b/pkgs/tools/security/lynis/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Security auditing tool for Linux, macOS, and UNIX-based systems";
+    mainProgram = "lynis";
     homepage = "https://cisofy.com/lynis/";
     license = licenses.gpl3Only;
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/masscan/default.nix b/pkgs/tools/security/masscan/default.nix
index 107ffe92b2cc9..a6aa990c1d82c 100644
--- a/pkgs/tools/security/masscan/default.nix
+++ b/pkgs/tools/security/masscan/default.nix
@@ -61,6 +61,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fast scan of the Internet";
+    mainProgram = "masscan";
     homepage = "https://github.com/robertdavidgraham/masscan";
     changelog = "https://github.com/robertdavidgraham/masscan/releases/tag/${version}";
     license = licenses.agpl3Only;
diff --git a/pkgs/tools/security/medusa/default.nix b/pkgs/tools/security/medusa/default.nix
index a5ac8f06d16dc..3a29f2a6e283e 100644
--- a/pkgs/tools/security/medusa/default.nix
+++ b/pkgs/tools/security/medusa/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/jmk-foofus/medusa";
     description = "A speedy, parallel, and modular, login brute-forcer";
+    mainProgram = "medusa";
     license = licenses.gpl2;
     maintainers = with maintainers; [ ];
   };
diff --git a/pkgs/tools/security/melt/default.nix b/pkgs/tools/security/melt/default.nix
index 43ecd5566fa9f..8721e34b566f8 100644
--- a/pkgs/tools/security/melt/default.nix
+++ b/pkgs/tools/security/melt/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Backup and restore Ed25519 SSH keys with seed words";
+    mainProgram = "melt";
     homepage = "https://github.com/charmbracelet/melt";
     changelog = "https://github.com/charmbracelet/melt/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/mfcuk/default.nix b/pkgs/tools/security/mfcuk/default.nix
index 3128a787807ae..d6736b5b097ae 100644
--- a/pkgs/tools/security/mfcuk/default.nix
+++ b/pkgs/tools/security/mfcuk/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "MiFare Classic Universal toolKit";
+    mainProgram = "mfcuk";
     license = licenses.gpl2;
     homepage = "https://github.com/nfc-tools/mfcuk";
     maintainers = with maintainers; [ offline ];
diff --git a/pkgs/tools/security/mfoc/default.nix b/pkgs/tools/security/mfoc/default.nix
index ca1f4a5e4f255..9ede0ffc61577 100644
--- a/pkgs/tools/security/mfoc/default.nix
+++ b/pkgs/tools/security/mfoc/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Mifare Classic Offline Cracker";
+    mainProgram = "mfoc";
     license = licenses.gpl2;
     homepage = "https://github.com/nfc-tools/mfoc";
     maintainers = with maintainers; [ offline ];
diff --git a/pkgs/tools/security/minica/default.nix b/pkgs/tools/security/minica/default.nix
index 6dd6d1fd5ce03..e7a05412303ee 100644
--- a/pkgs/tools/security/minica/default.nix
+++ b/pkgs/tools/security/minica/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A simple tool for generating self signed certificates";
+    mainProgram = "minica";
     longDescription = ''
       Minica is a simple CA intended for use in situations where the CA operator
       also operates each host where a certificate will be used. It automatically
diff --git a/pkgs/tools/security/mitm6/default.nix b/pkgs/tools/security/mitm6/default.nix
index a7587330e7b99..f3626355fbb1c 100644
--- a/pkgs/tools/security/mitm6/default.nix
+++ b/pkgs/tools/security/mitm6/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = {
     description = "DHCPv6 network spoofing application";
+    mainProgram = "mitm6";
     homepage = "https://github.com/dirkjanm/mitm6";
     license = lib.licenses.gpl2Only;
     maintainers = with lib.maintainers; [ arcayr ];
diff --git a/pkgs/tools/security/mitmproxy2swagger/default.nix b/pkgs/tools/security/mitmproxy2swagger/default.nix
index 56d47973b7e3a..0c940692f9e82 100644
--- a/pkgs/tools/security/mitmproxy2swagger/default.nix
+++ b/pkgs/tools/security/mitmproxy2swagger/default.nix
@@ -39,6 +39,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to automagically reverse-engineer REST APIs";
+    mainProgram = "mitmproxy2swagger";
     homepage = "https://github.com/alufers/mitmproxy2swagger";
     changelog = "https://github.com/alufers/mitmproxy2swagger/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/mkpasswd/default.nix b/pkgs/tools/security/mkpasswd/default.nix
index 2ee71b8227eb1..00b1e8a01501d 100644
--- a/pkgs/tools/security/mkpasswd/default.nix
+++ b/pkgs/tools/security/mkpasswd/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://packages.qa.debian.org/w/whois.html";
     description = "Overfeatured front-end to crypt, from the Debian whois package";
+    mainProgram = "mkpasswd";
     license = licenses.gpl2;
     maintainers = with maintainers; [ fpletz ];
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/mkrand/default.nix b/pkgs/tools/security/mkrand/default.nix
index 21c9586cd6c35..b0ebe7e521fa7 100644
--- a/pkgs/tools/security/mkrand/default.nix
+++ b/pkgs/tools/security/mkrand/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A Digital Random Bit Generator";
+    mainProgram = "mkrand";
     longDescription = "MKRAND is a utility for generating random information.";
     homepage = "https://github.com/mknight-tag/MKRAND/";
     license = lib.licenses.mit;
diff --git a/pkgs/tools/security/mktemp/default.nix b/pkgs/tools/security/mktemp/default.nix
index 5010780800dea..ca16611332f76 100644
--- a/pkgs/tools/security/mktemp/default.nix
+++ b/pkgs/tools/security/mktemp/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Simple tool to make temporary file handling in shells scripts safe and simple";
+    mainProgram = "mktemp";
     homepage = "https://www.mktemp.org";
     license = licenses.isc;
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/mokutil/default.nix b/pkgs/tools/security/mokutil/default.nix
index eb4eb5b1deb3d..8b36e5c1c6319 100644
--- a/pkgs/tools/security/mokutil/default.nix
+++ b/pkgs/tools/security/mokutil/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/lcp/mokutil";
     description = "Utility to manipulate machines owner keys";
+    mainProgram = "mokutil";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ nickcao ];
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/monsoon/default.nix b/pkgs/tools/security/monsoon/default.nix
index 8ac0c834ee031..3341366e47bb6 100644
--- a/pkgs/tools/security/monsoon/default.nix
+++ b/pkgs/tools/security/monsoon/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast HTTP enumerator";
+    mainProgram = "monsoon";
     longDescription = ''
       A fast HTTP enumerator that allows you to execute a large number of HTTP
       requests, filter the responses and display them in real-time.
diff --git a/pkgs/tools/security/mpw/default.nix b/pkgs/tools/security/mpw/default.nix
index 8d6f7f4f3b1da..25c71eb046db7 100644
--- a/pkgs/tools/security/mpw/default.nix
+++ b/pkgs/tools/security/mpw/default.nix
@@ -57,6 +57,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A stateless password management solution";
+    mainProgram = "mpw";
     homepage = "https://masterpasswordapp.com/";
     license = licenses.gpl3;
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/msfpc/default.nix b/pkgs/tools/security/msfpc/default.nix
index 4286111814104..afc67cc4dde37 100644
--- a/pkgs/tools/security/msfpc/default.nix
+++ b/pkgs/tools/security/msfpc/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "MSFvenom Payload Creator";
+    mainProgram = "msfpc";
     homepage = "https://github.com/g0tmi1k/msfpc";
     license = licenses.mit;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/tools/security/mx-takeover/default.nix b/pkgs/tools/security/mx-takeover/default.nix
index 88ef8fbf3ed08..13804b4e88722 100644
--- a/pkgs/tools/security/mx-takeover/default.nix
+++ b/pkgs/tools/security/mx-takeover/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to work with DNS MX records";
+    mainProgram = "mx-takeover";
     homepage = "https://github.com/musana/mx-takeover";
     changelog = "https://github.com/musana/mx-takeover/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/naabu/default.nix b/pkgs/tools/security/naabu/default.nix
index 30d45b74e9fc4..a10c6601412be 100644
--- a/pkgs/tools/security/naabu/default.nix
+++ b/pkgs/tools/security/naabu/default.nix
@@ -34,6 +34,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast SYN/CONNECT port scanner";
+    mainProgram = "naabu";
     longDescription = ''
       Naabu is a port scanning tool written in Go that allows you to enumerate
       valid ports for hosts in a fast and reliable manner. It is a really simple
diff --git a/pkgs/tools/security/nasty/default.nix b/pkgs/tools/security/nasty/default.nix
index b3b19c9268bfc..f0bd0d406c337 100644
--- a/pkgs/tools/security/nasty/default.nix
+++ b/pkgs/tools/security/nasty/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Recover the passphrase of your PGP or GPG-key";
+    mainProgram = "nasty";
     longDescription = ''
     Nasty is a program that helps you to recover the passphrase of your PGP or GPG-key
     in case you forget or lost it. It is mostly a proof-of-concept: with a different implementation
diff --git a/pkgs/tools/security/nbtscanner/default.nix b/pkgs/tools/security/nbtscanner/default.nix
index 51e9f085164be..b70f554f33fda 100644
--- a/pkgs/tools/security/nbtscanner/default.nix
+++ b/pkgs/tools/security/nbtscanner/default.nix
@@ -26,6 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "NetBIOS scanner written in Rust";
+    mainProgram = "nbtscanner";
     homepage = "https://github.com/jonkgrimes/nbtscanner";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/ncrack/default.nix b/pkgs/tools/security/ncrack/default.nix
index 4b0feccb412af..bfce4dd371231 100644
--- a/pkgs/tools/security/ncrack/default.nix
+++ b/pkgs/tools/security/ncrack/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Network authentication tool";
+    mainProgram = "ncrack";
     homepage = "https://nmap.org/ncrack/";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ siraben ];
diff --git a/pkgs/tools/security/nitrokey-app/default.nix b/pkgs/tools/security/nitrokey-app/default.nix
index 8e654900e1720..018a186563816 100644
--- a/pkgs/tools/security/nitrokey-app/default.nix
+++ b/pkgs/tools/security/nitrokey-app/default.nix
@@ -39,6 +39,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Provides extra functionality for the Nitrokey Pro and Storage";
+    mainProgram = "nitrokey-app";
     longDescription = ''
       The nitrokey-app provides a QT system tray widget with which you can
       access the extra functionality of a Nitrokey Storage or Nitrokey Pro.
diff --git a/pkgs/tools/security/nmap-formatter/default.nix b/pkgs/tools/security/nmap-formatter/default.nix
index b78cb2e075d24..ade602a65375b 100644
--- a/pkgs/tools/security/nmap-formatter/default.nix
+++ b/pkgs/tools/security/nmap-formatter/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool that allows you to convert nmap output";
+    mainProgram = "nmap-formatter";
     homepage = "https://github.com/vdjagilev/nmap-formatter";
     changelog = "https://github.com/vdjagilev/nmap-formatter/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/nmap/qt.nix b/pkgs/tools/security/nmap/qt.nix
index b4e406a0035b4..56ebc5db62130 100644
--- a/pkgs/tools/security/nmap/qt.nix
+++ b/pkgs/tools/security/nmap/qt.nix
@@ -53,6 +53,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Qt frontend for nmap";
+    mainProgram = "nmapsi4";
     license = licenses.gpl2;
     maintainers = with maintainers; [ peterhoeg ];
     inherit (src.meta) homepage;
diff --git a/pkgs/tools/security/noseyparker/default.nix b/pkgs/tools/security/noseyparker/default.nix
index c6e4056d9fab6..72a1d87f1112b 100644
--- a/pkgs/tools/security/noseyparker/default.nix
+++ b/pkgs/tools/security/noseyparker/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Find secrets and sensitive information in textual data";
+    mainProgram = "noseyparker";
     homepage = "https://github.com/praetorian-inc/noseyparker";
     changelog = "https://github.com/praetorian-inc/noseyparker/blob/v${version}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/nosqli/default.nix b/pkgs/tools/security/nosqli/default.nix
index 47095902cea6f..3a1721831a0ab 100644
--- a/pkgs/tools/security/nosqli/default.nix
+++ b/pkgs/tools/security/nosqli/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "NoSql Injection tool for finding vulnerable websites using MongoDB";
+    mainProgram = "nosqli";
     homepage = "https://github.com/Charlie-belmer/nosqli";
     license = with licenses; [ agpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/notary/default.nix b/pkgs/tools/security/notary/default.nix
index ab6ec0b16818f..f1fed4806eb41 100644
--- a/pkgs/tools/security/notary/default.nix
+++ b/pkgs/tools/security/notary/default.nix
@@ -37,6 +37,7 @@ buildGoPackage rec {
 
   meta = with lib; {
     description = "A project that allows anyone to have trust over arbitrary collections of data";
+    mainProgram = "notary";
     longDescription = ''
       The Notary project comprises a server and a client for running and
       interacting with trusted collections. See the service architecture
diff --git a/pkgs/tools/security/ntlmrecon/default.nix b/pkgs/tools/security/ntlmrecon/default.nix
index 648e2d585e097..10a564706c9a5 100644
--- a/pkgs/tools/security/ntlmrecon/default.nix
+++ b/pkgs/tools/security/ntlmrecon/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Information enumerator for NTLM authentication enabled web endpoints";
+    mainProgram = "ntlmrecon";
     homepage = "https://github.com/pwnfoo/NTLMRecon";
     changelog = "https://github.com/pwnfoo/NTLMRecon/releases/tag/v-${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/nwipe/default.nix b/pkgs/tools/security/nwipe/default.nix
index 35ca1f9b4125c..00c66f3519306 100644
--- a/pkgs/tools/security/nwipe/default.nix
+++ b/pkgs/tools/security/nwipe/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Securely erase disks";
+    mainProgram = "nwipe";
     homepage = "https://github.com/martijnvanbrummelen/nwipe";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ woffs ];
diff --git a/pkgs/tools/security/oauth2c/default.nix b/pkgs/tools/security/oauth2c/default.nix
index 2cc9a05e3d156..292ac255b3a04 100644
--- a/pkgs/tools/security/oauth2c/default.nix
+++ b/pkgs/tools/security/oauth2c/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/cloudentity/oauth2c";
     description = "User-friendly OAuth2 CLI";
+    mainProgram = "oauth2c";
     longDescription = ''
       oauth2c is a command-line tool for interacting with OAuth 2.0
       authorization servers. Its goal is to make it easy to fetch access tokens
diff --git a/pkgs/tools/security/octosuite/default.nix b/pkgs/tools/security/octosuite/default.nix
index 88b29dce721c4..af4dd9c397405 100644
--- a/pkgs/tools/security/octosuite/default.nix
+++ b/pkgs/tools/security/octosuite/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Advanced Github OSINT framework";
+    mainProgram = "octosuite";
     homepage = "https://github.com/bellingcat/octosuite";
     changelog = "https://github.com/bellingcat/octosuite/releases/tag/${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/onioncircuits/default.nix b/pkgs/tools/security/onioncircuits/default.nix
index c1468becc262d..95692ef1c188c 100644
--- a/pkgs/tools/security/onioncircuits/default.nix
+++ b/pkgs/tools/security/onioncircuits/default.nix
@@ -51,6 +51,7 @@ python3.pkgs.buildPythonApplication rec {
     broken = stdenv.isDarwin;
     homepage = "https://tails.boum.org";
     description = "GTK application to display Tor circuits and streams";
+    mainProgram = "onioncircuits";
     license = licenses.gpl3;
     maintainers = with maintainers; [ milran ];
   };
diff --git a/pkgs/tools/security/onlykey-cli/default.nix b/pkgs/tools/security/onlykey-cli/default.nix
index 4d0b0a267a38f..624290c6d5554 100644
--- a/pkgs/tools/security/onlykey-cli/default.nix
+++ b/pkgs/tools/security/onlykey-cli/default.nix
@@ -27,6 +27,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "OnlyKey client and command-line tool";
+    mainProgram = "onlykey-cli";
     homepage = "https://github.com/trustcrypto/python-onlykey";
     license = licenses.mit;
     maintainers = with maintainers; [ ranfdev ];
diff --git a/pkgs/tools/security/open-ecard/default.nix b/pkgs/tools/security/open-ecard/default.nix
index e8afdf6bf8c0b..a3f3f72bc6313 100644
--- a/pkgs/tools/security/open-ecard/default.nix
+++ b/pkgs/tools/security/open-ecard/default.nix
@@ -55,6 +55,7 @@ in stdenv.mkDerivation rec {
   meta = with lib; {
     description = "Client side implementation of the eCard-API-Framework (BSI
       TR-03112) and related international standards, such as ISO/IEC 24727";
+    mainProgram = "open-ecard";
     homepage = "https://www.openecard.org/";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.gpl3;
diff --git a/pkgs/tools/security/openrisk/default.nix b/pkgs/tools/security/openrisk/default.nix
index fc8475ca71a2a..ebc177a6908ff 100644
--- a/pkgs/tools/security/openrisk/default.nix
+++ b/pkgs/tools/security/openrisk/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool that generates an AI-based risk score";
+    mainProgram = "openrisk";
     homepage = "https://github.com/projectdiscovery/openrisk";
     changelog = "https://github.com/projectdiscovery/openrisk/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/orjail/default.nix b/pkgs/tools/security/orjail/default.nix
index adcbf5ae4f9f4..ed2d64588306a 100644
--- a/pkgs/tools/security/orjail/default.nix
+++ b/pkgs/tools/security/orjail/default.nix
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Force programs to exclusively use tor network";
+    mainProgram = "orjail";
     homepage = "https://github.com/orjail/orjail";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ onny ];
diff --git a/pkgs/tools/security/osv-detector/default.nix b/pkgs/tools/security/osv-detector/default.nix
index 58db4504d23d8..3be67c91d265d 100644
--- a/pkgs/tools/security/osv-detector/default.nix
+++ b/pkgs/tools/security/osv-detector/default.nix
@@ -48,6 +48,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Auditing tool for detecting vulnerabilities";
+    mainProgram = "osv-detector";
     homepage = "https://github.com/G-Rath/osv-detector";
     changelog = "https://github.com/G-Rath/osv-detector/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/osv-scanner/default.nix b/pkgs/tools/security/osv-scanner/default.nix
index 26dfe919c428b..2b9f2c4db2363 100644
--- a/pkgs/tools/security/osv-scanner/default.nix
+++ b/pkgs/tools/security/osv-scanner/default.nix
@@ -38,6 +38,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Vulnerability scanner written in Go which uses the data provided by https://osv.dev";
+    mainProgram = "osv-scanner";
     homepage = "https://github.com/google/osv-scanner";
     changelog = "https://github.com/google/osv-scanner/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/otpauth/default.nix b/pkgs/tools/security/otpauth/default.nix
index e4ffadef63e00..95d9288b6babd 100644
--- a/pkgs/tools/security/otpauth/default.nix
+++ b/pkgs/tools/security/otpauth/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Google Authenticator migration decoder";
+    mainProgram = "otpauth";
     homepage = "https://github.com/dim13/otpauth";
     license = licenses.isc;
     maintainers = with maintainers; [ ereslibre ];
diff --git a/pkgs/tools/security/ots/default.nix b/pkgs/tools/security/ots/default.nix
index bba9e8e6fb89d..7d55bb84d9760 100644
--- a/pkgs/tools/security/ots/default.nix
+++ b/pkgs/tools/security/ots/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Share end-to-end encrypted secrets with others via a one-time URL";
+    mainProgram = "ots";
     homepage = "https://ots.sniptt.com";
     changelog = "https://github.com/sniptt-official/ots/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/pamtester/default.nix b/pkgs/tools/security/pamtester/default.nix
index d9e59290d676b..7261be60f77f6 100644
--- a/pkgs/tools/security/pamtester/default.nix
+++ b/pkgs/tools/security/pamtester/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Utility program to test the PAM facility";
+    mainProgram = "pamtester";
     homepage = "https://pamtester.sourceforge.net/";
     license = licenses.bsd3;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/paperkey/default.nix b/pkgs/tools/security/paperkey/default.nix
index 8e86415cb9e80..a22c1617f07bb 100644
--- a/pkgs/tools/security/paperkey/default.nix
+++ b/pkgs/tools/security/paperkey/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Store OpenPGP or GnuPG on paper";
+    mainProgram = "paperkey";
     longDescription = ''
       A reasonable way to achieve a long term backup of OpenPGP (GnuPG, PGP, etc)
       keys is to print them out on paper. Paper and ink have amazingly long
diff --git a/pkgs/tools/security/pass/extensions/import.nix b/pkgs/tools/security/pass/extensions/import.nix
index 8c51356e184ba..cbba33c1373a6 100644
--- a/pkgs/tools/security/pass/extensions/import.nix
+++ b/pkgs/tools/security/pass/extensions/import.nix
@@ -60,6 +60,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Pass extension for importing data from existing password managers";
+    mainProgram = "pimport";
     homepage = "https://github.com/roddhjav/pass-import";
     changelog = "https://github.com/roddhjav/pass-import/blob/v${version}/CHANGELOG.rst";
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/security/pass/rofi-pass.nix b/pkgs/tools/security/pass/rofi-pass.nix
index b8fd130df24b2..9bf6995715924 100644
--- a/pkgs/tools/security/pass/rofi-pass.nix
+++ b/pkgs/tools/security/pass/rofi-pass.nix
@@ -84,6 +84,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "A script to make rofi work with password-store";
+    mainProgram = "rofi-pass";
     homepage = "https://github.com/carnager/rofi-pass";
     license = lib.licenses.gpl3;
     platforms = with lib.platforms; linux;
diff --git a/pkgs/tools/security/pass2csv/default.nix b/pkgs/tools/security/pass2csv/default.nix
index aad6338391ee2..101af2e7aa947 100644
--- a/pkgs/tools/security/pass2csv/default.nix
+++ b/pkgs/tools/security/pass2csv/default.nix
@@ -28,6 +28,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Export pass(1), \"the standard unix password manager\", to CSV";
+    mainProgram = "pass2csv";
     homepage = "https://github.com/reinefjord/pass2csv";
     license = licenses.mit;
     maintainers = with maintainers; [ wolfangaukang ];
diff --git a/pkgs/tools/security/passphrase2pgp/default.nix b/pkgs/tools/security/passphrase2pgp/default.nix
index 0ccbcca06c20b..0470fd8cfee6d 100644
--- a/pkgs/tools/security/passphrase2pgp/default.nix
+++ b/pkgs/tools/security/passphrase2pgp/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Predictable, passphrase-based PGP key generator";
+    mainProgram = "passphrase2pgp";
     homepage = "https://github.com/skeeto/passphrase2pgp";
     license = licenses.unlicense;
     maintainers = with maintainers; [ kaction ];
diff --git a/pkgs/tools/security/pcsc-cyberjack/default.nix b/pkgs/tools/security/pcsc-cyberjack/default.nix
index 04aad0b277393..fa96753a54f64 100644
--- a/pkgs/tools/security/pcsc-cyberjack/default.nix
+++ b/pkgs/tools/security/pcsc-cyberjack/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "REINER SCT cyberJack USB chipcard reader user space driver";
+    mainProgram = "cjflash";
     homepage = "https://www.reiner-sct.com/";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ aszlig flokli ];
diff --git a/pkgs/tools/security/pdfcrack/default.nix b/pkgs/tools/security/pdfcrack/default.nix
index d4930b023b6f2..ae863e1ec1f57 100644
--- a/pkgs/tools/security/pdfcrack/default.nix
+++ b/pkgs/tools/security/pdfcrack/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://pdfcrack.sourceforge.net/";
     description = "Small command line driven tool for recovering passwords and content from PDF files";
+    mainProgram = "pdfcrack";
     license = with licenses; [ gpl2Plus ];
     platforms = platforms.all;
     maintainers = with maintainers; [ qoelet ];
diff --git a/pkgs/tools/security/pgpdump/default.nix b/pkgs/tools/security/pgpdump/default.nix
index 9ebe0d920027b..31a1c506f3295 100644
--- a/pkgs/tools/security/pgpdump/default.nix
+++ b/pkgs/tools/security/pgpdump/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A PGP packet visualizer";
+    mainProgram = "pgpdump";
     longDescription = ''
       pgpdump is a PGP packet visualizer which displays the packet format of
       OpenPGP (RFC 4880) and PGP version 2 (RFC 1991).
diff --git a/pkgs/tools/security/plecost/default.nix b/pkgs/tools/security/plecost/default.nix
index 23dd8c220caca..477ed9e82645b 100644
--- a/pkgs/tools/security/plecost/default.nix
+++ b/pkgs/tools/security/plecost/default.nix
@@ -33,6 +33,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Vulnerability fingerprinting and vulnerability finder for Wordpress blog engine";
+    mainProgram = "plecost";
     homepage = "https://github.com/iniqua/plecost";
     license = licenses.bsd3;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/tools/security/pomerium-cli/default.nix b/pkgs/tools/security/pomerium-cli/default.nix
index 67c44930f0da4..cff903021591a 100644
--- a/pkgs/tools/security/pomerium-cli/default.nix
+++ b/pkgs/tools/security/pomerium-cli/default.nix
@@ -56,6 +56,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://pomerium.io";
     description = "Client-side helper for Pomerium authenticating reverse proxy";
+    mainProgram = "pomerium-cli";
     license = licenses.asl20;
     maintainers = with maintainers; [ lukegb ];
     platforms = platforms.unix;
diff --git a/pkgs/tools/security/posteid-seed-extractor/default.nix b/pkgs/tools/security/posteid-seed-extractor/default.nix
index 176b210b37794..b0c1f04d21a47 100644
--- a/pkgs/tools/security/posteid-seed-extractor/default.nix
+++ b/pkgs/tools/security/posteid-seed-extractor/default.nix
@@ -41,6 +41,7 @@ python3Packages.buildPythonApplication {
   meta = with lib; {
     homepage = "https://github.com/simone36050/PosteID-seed-extractor";
     description = "Extract OTP seed instead of using PosteID app";
+    mainProgram = "posteid-seed-extractor";
     license = licenses.mit;
     maintainers = with maintainers; [ aciceri ];
   };
diff --git a/pkgs/tools/security/pretender/default.nix b/pkgs/tools/security/pretender/default.nix
index 91452f34d62b7..9d7df071224d4 100644
--- a/pkgs/tools/security/pretender/default.nix
+++ b/pkgs/tools/security/pretender/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for handling machine-in-the-middle tasks";
+    mainProgram = "pretender";
     homepage = "https://github.com/RedTeamPentesting/pretender";
     changelog = "https://github.com/RedTeamPentesting/pretender/releases/tag/v${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/tools/security/pwdsafety/default.nix b/pkgs/tools/security/pwdsafety/default.nix
index 12785154a177f..e713d7e014ab5 100644
--- a/pkgs/tools/security/pwdsafety/default.nix
+++ b/pkgs/tools/security/pwdsafety/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Command line tool checking password safety";
+    mainProgram = "cmd";
     homepage = "https://github.com/edoardottt/pwdsafety";
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/pwncat/default.nix b/pkgs/tools/security/pwncat/default.nix
index 398132c4cee7b..98b782bf194c4 100644
--- a/pkgs/tools/security/pwncat/default.nix
+++ b/pkgs/tools/security/pwncat/default.nix
@@ -17,6 +17,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "TCP/UDP communication suite";
+    mainProgram = "pwncat";
     homepage = "https://pwncat.org/";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/qdigidoc/default.nix b/pkgs/tools/security/qdigidoc/default.nix
index 097ef50239745..862249d2ebd10 100644
--- a/pkgs/tools/security/qdigidoc/default.nix
+++ b/pkgs/tools/security/qdigidoc/default.nix
@@ -60,6 +60,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Qt-based UI for signing and verifying DigiDoc documents";
+    mainProgram = "qdigidoc4";
     homepage = "https://www.id.ee/";
     license = licenses.lgpl21Plus;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/quill-qr/default.nix b/pkgs/tools/security/quill-qr/default.nix
index 55c2f45cc683a..826f2e51799ca 100644
--- a/pkgs/tools/security/quill-qr/default.nix
+++ b/pkgs/tools/security/quill-qr/default.nix
@@ -38,6 +38,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "Print QR codes for use with https://p5deo-6aaaa-aaaab-aaaxq-cai.raw.ic0.app/";
+    mainProgram = "quill-qr.sh";
     homepage = "https://github.com/IvanMalison/quill-qr";
     maintainers = with maintainers; [ imalison ];
     platforms = with platforms; linux;
diff --git a/pkgs/tools/security/quill/default.nix b/pkgs/tools/security/quill/default.nix
index 5de9e8b8b3fc3..71ffc7af5c15f 100644
--- a/pkgs/tools/security/quill/default.nix
+++ b/pkgs/tools/security/quill/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/dfinity/quill";
     changelog = "https://github.com/dfinity/quill/releases/tag/v${version}";
     description = "Minimalistic ledger and governance toolkit for cold wallets on the Internet Computer";
+    mainProgram = "quill";
     license = licenses.asl20;
     maintainers = with maintainers; [ imalison ];
   };
diff --git a/pkgs/tools/security/radamsa/default.nix b/pkgs/tools/security/radamsa/default.nix
index ebcd2a42191df..1903b435b770a 100644
--- a/pkgs/tools/security/radamsa/default.nix
+++ b/pkgs/tools/security/radamsa/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A general purpose fuzzer";
+    mainProgram = "radamsa";
     longDescription = "Radamsa is a general purpose data fuzzer. It reads data from given sample files, or standard input if none are given, and outputs modified data. It is usually used to generate malformed data for testing programs.";
     homepage =  "https://gitlab.com/akihe/radamsa";
     maintainers = [ ];
diff --git a/pkgs/tools/security/redwax-tool/default.nix b/pkgs/tools/security/redwax-tool/default.nix
index af327cba948b9..50a2d36699e73 100644
--- a/pkgs/tools/security/redwax-tool/default.nix
+++ b/pkgs/tools/security/redwax-tool/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://redwax.eu/rt/";
     description = "Universal certificate conversion tool";
+    mainProgram = "redwax-tool";
     longDescription = ''
       Read certificates and keys from your chosen sources, filter the
       certificates and keys you're interested in, write those
diff --git a/pkgs/tools/security/regpg/default.nix b/pkgs/tools/security/regpg/default.nix
index aaefbef227b88..e14fdbbbb7593 100644
--- a/pkgs/tools/security/regpg/default.nix
+++ b/pkgs/tools/security/regpg/default.nix
@@ -44,6 +44,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "GPG wrapper utility for storing secrets in VCS";
+    mainProgram = "regpg";
     homepage = "https://dotat.at/prog/regpg";
     license = licenses.gpl3;
     platforms = platforms.all;
diff --git a/pkgs/tools/security/responder/default.nix b/pkgs/tools/security/responder/default.nix
index a51bb40ac5fd7..9c6b343eb5c1a 100644
--- a/pkgs/tools/security/responder/default.nix
+++ b/pkgs/tools/security/responder/default.nix
@@ -47,6 +47,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "LLMNR, NBT-NS and MDNS poisoner, with built-in HTTP/SMB/MSSQL/FTP/LDAP rogue authentication server";
+    mainProgram = "responder";
     homepage = "https://github.com/lgandx/Responder";
     changelog = "https://github.com/lgandx/Responder/blob/master/CHANGELOG.md";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/ripasso/cursive.nix b/pkgs/tools/security/ripasso/cursive.nix
index b3e8274b450c5..faef4dbff48a2 100644
--- a/pkgs/tools/security/ripasso/cursive.nix
+++ b/pkgs/tools/security/ripasso/cursive.nix
@@ -73,6 +73,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple password manager written in Rust";
+    mainProgram = "ripasso-cursive";
     homepage = "https://github.com/cortex/ripasso";
     license = licenses.gpl3;
     maintainers = with maintainers; [ sgo ];
diff --git a/pkgs/tools/security/rustscan/default.nix b/pkgs/tools/security/rustscan/default.nix
index 099e685fec036..5189b7c882b73 100644
--- a/pkgs/tools/security/rustscan/default.nix
+++ b/pkgs/tools/security/rustscan/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Faster Nmap Scanning with Rust";
+    mainProgram = "rustscan";
     homepage = "https://github.com/RustScan/RustScan";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/tools/security/s5/default.nix b/pkgs/tools/security/s5/default.nix
index 7d63c4cb8a670..f4ef34209d8ec 100644
--- a/pkgs/tools/security/s5/default.nix
+++ b/pkgs/tools/security/s5/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "cipher/decipher text within a file";
+    mainProgram = "s5";
     homepage = "https://github.com/mvisonneau/s5";
     license = licenses.asl20;
     platforms = platforms.unix ++ platforms.darwin;
diff --git a/pkgs/tools/security/safe/default.nix b/pkgs/tools/security/safe/default.nix
index 2024cd8ff27be..63fe240e5619d 100644
--- a/pkgs/tools/security/safe/default.nix
+++ b/pkgs/tools/security/safe/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A Vault CLI";
+    mainProgram = "safe";
     homepage = "https://github.com/starkandwayne/safe";
     license = licenses.mit;
     maintainers = with maintainers; [ eonpatapon ];
diff --git a/pkgs/tools/security/saml2aws/default.nix b/pkgs/tools/security/saml2aws/default.nix
index a4246f3c4df40..beb2b89e20b42 100644
--- a/pkgs/tools/security/saml2aws/default.nix
+++ b/pkgs/tools/security/saml2aws/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI tool which enables you to login and retrieve AWS temporary credentials using a SAML IDP";
+    mainProgram = "saml2aws";
     homepage    = "https://github.com/Versent/saml2aws";
     license     = licenses.mit;
     maintainers = [ lib.maintainers.pmyjavec ];
diff --git a/pkgs/tools/security/sammler/default.nix b/pkgs/tools/security/sammler/default.nix
index edc04d86371e5..7a7990aee1f94 100644
--- a/pkgs/tools/security/sammler/default.nix
+++ b/pkgs/tools/security/sammler/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to extract useful data from documents";
+    mainProgram = "sammler";
     homepage = "https://github.com/redcode-labs/Sammler";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ] ++ teams.redcodelabs.members;
diff --git a/pkgs/tools/security/sbctl/default.nix b/pkgs/tools/security/sbctl/default.nix
index a5fe6cf6548c6..ac3e2a4dd43fd 100644
--- a/pkgs/tools/security/sbctl/default.nix
+++ b/pkgs/tools/security/sbctl/default.nix
@@ -38,6 +38,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Secure Boot key manager";
+    mainProgram = "sbctl";
     homepage = "https://github.com/Foxboron/sbctl";
     license = licenses.mit;
     maintainers = with maintainers; [ raitobezarius ];
diff --git a/pkgs/tools/security/scilla/default.nix b/pkgs/tools/security/scilla/default.nix
index 79f743ea0ce8b..0484cfaa9f87e 100644
--- a/pkgs/tools/security/scilla/default.nix
+++ b/pkgs/tools/security/scilla/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Information gathering tool for DNS, ports and more";
+    mainProgram = "scilla";
     homepage = "https://github.com/edoardottt/scilla";
     changelog = "https://github.com/edoardottt/scilla/releases/tag/v${version}";
     license = with licenses; [ gpl3Plus ];
diff --git a/pkgs/tools/security/scorecard/default.nix b/pkgs/tools/security/scorecard/default.nix
index b460f52aa292d..265253bba51be 100644
--- a/pkgs/tools/security/scorecard/default.nix
+++ b/pkgs/tools/security/scorecard/default.nix
@@ -83,6 +83,7 @@ buildGoModule rec {
     homepage = "https://github.com/ossf/scorecard";
     changelog = "https://github.com/ossf/scorecard/releases/tag/v${version}";
     description = "Security health metrics for Open Source";
+    mainProgram = "scorecard";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk developer-guy ];
   };
diff --git a/pkgs/tools/security/scrypt/default.nix b/pkgs/tools/security/scrypt/default.nix
index d2b8228f6511f..d1deaa0ec41d9 100644
--- a/pkgs/tools/security/scrypt/default.nix
+++ b/pkgs/tools/security/scrypt/default.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Encryption utility";
+    mainProgram = "scrypt";
     homepage    = "https://www.tarsnap.com/scrypt.html";
     license     = licenses.bsd2;
     platforms   = platforms.all;
diff --git a/pkgs/tools/security/sdlookup/default.nix b/pkgs/tools/security/sdlookup/default.nix
index 62d6dffdaa2bd..d4b4e6b3ad545 100644
--- a/pkgs/tools/security/sdlookup/default.nix
+++ b/pkgs/tools/security/sdlookup/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "IP lookups for open ports and vulnerabilities from internetdb.shodan.io";
+    mainProgram = "sdlookup";
     homepage = "https://github.com/j3ssie/sdlookup";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/secretscanner/default.nix b/pkgs/tools/security/secretscanner/default.nix
index 7945977079943..db23b87058f41 100644
--- a/pkgs/tools/security/secretscanner/default.nix
+++ b/pkgs/tools/security/secretscanner/default.nix
@@ -48,6 +48,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to find secrets and passwords in container images and file systems";
+    mainProgram = "secretscanner";
     homepage = "https://github.com/deepfence/SecretScanner";
     changelog = "https://github.com/deepfence/SecretScanner/releases/tag/v${version}";
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/tools/security/semgrep/semgrep-core.nix b/pkgs/tools/security/semgrep/semgrep-core.nix
index 33e50837bf753..8986cba7d880f 100644
--- a/pkgs/tools/security/semgrep/semgrep-core.nix
+++ b/pkgs/tools/security/semgrep/semgrep-core.nix
@@ -46,6 +46,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = common.meta // {
     description = common.meta.description + " - core binary";
+    mainProgram = "semgrep-core";
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
     platforms = lib.attrNames common.core;
   };
diff --git a/pkgs/tools/security/shc/default.nix b/pkgs/tools/security/shc/default.nix
index 0c1bf93ed1c6b..f7f3f8a088836 100644
--- a/pkgs/tools/security/shc/default.nix
+++ b/pkgs/tools/security/shc/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://neurobin.org/projects/softwares/unix/shc/";
     description = "Shell Script Compiler";
+    mainProgram = "shc";
     platforms = lib.platforms.all;
     license = licenses.gpl3;
   };
diff --git a/pkgs/tools/security/shisho/default.nix b/pkgs/tools/security/shisho/default.nix
index 5a5995f5da3b7..ae61c2a249dbf 100644
--- a/pkgs/tools/security/shisho/default.nix
+++ b/pkgs/tools/security/shisho/default.nix
@@ -45,6 +45,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://docs.shisho.dev/shisho/";
     changelog = "https://docs.shisho.dev/changelog/";
     description = "Lightweight static analyzer for several programming languages";
+    mainProgram = "shisho";
     longDescription = ''
       Shisho is a lightweight static code analyzer designed for developers and
       is the core engine for Shisho products. It is, so to speak, like a
diff --git a/pkgs/tools/security/signify/default.nix b/pkgs/tools/security/signify/default.nix
index ac8b2ace3af13..fe1c2bf453452 100644
--- a/pkgs/tools/security/signify/default.nix
+++ b/pkgs/tools/security/signify/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "OpenBSD signing tool";
+    mainProgram = "signify";
     longDescription = ''
       OpenBSDs signing tool, which uses the Ed25519 public key signature system
       for fast signing and verification of messages using small public keys.
diff --git a/pkgs/tools/security/slsa-verifier/default.nix b/pkgs/tools/security/slsa-verifier/default.nix
index 5a6ab18a49ec5..1ed192c732a15 100644
--- a/pkgs/tools/security/slsa-verifier/default.nix
+++ b/pkgs/tools/security/slsa-verifier/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
     homepage = "https://github.com/slsa-framework/slsa-verifier";
     changelog = "https://github.com/slsa-framework/slsa-verifier/releases/tag/v${version}";
     description = "Verify provenance from SLSA compliant builders";
+    mainProgram = "slsa-verifier";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ developer-guy mlieberman85 ];
   };
diff --git a/pkgs/tools/security/smbmap/default.nix b/pkgs/tools/security/smbmap/default.nix
index 698fd8b194486..772df0a66ef91 100644
--- a/pkgs/tools/security/smbmap/default.nix
+++ b/pkgs/tools/security/smbmap/default.nix
@@ -32,6 +32,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "SMB enumeration tool";
+    mainProgram = "smbmap";
     homepage = "https://github.com/ShawnDEvans/smbmap";
     changelog = "https://github.com/ShawnDEvans/smbmap/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/snallygaster/default.nix b/pkgs/tools/security/snallygaster/default.nix
index 662b46700c78b..2f9ad98743cb6 100644
--- a/pkgs/tools/security/snallygaster/default.nix
+++ b/pkgs/tools/security/snallygaster/default.nix
@@ -31,6 +31,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to scan for secret files on HTTP servers";
+    mainProgram = "snallygaster";
     homepage = "https://github.com/hannob/snallygaster";
     license = licenses.cc0;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/tools/security/snow/default.nix b/pkgs/tools/security/snow/default.nix
index 6dce95f8cf0f9..dbea144cb1ba6 100644
--- a/pkgs/tools/security/snow/default.nix
+++ b/pkgs/tools/security/snow/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Conceal messages in ASCII text by appending whitespace to the end of lines";
+    mainProgram = "snow";
     homepage = "http://www.darkside.com.au/snow/";
     license = licenses.asl20;
     maintainers = with maintainers; [ siraben ];
diff --git a/pkgs/tools/security/snowcat/default.nix b/pkgs/tools/security/snowcat/default.nix
index 429564f91f1ef..a08b18edd147b 100644
--- a/pkgs/tools/security/snowcat/default.nix
+++ b/pkgs/tools/security/snowcat/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
     homepage = "https://github.com/praetorian-inc/snowcat";
     changelog = "https://github.com/praetorian-inc/snowcat/releases/tag/v${version}";
     description = "A tool to audit the istio service mesh";
+    mainProgram = "snowcat";
     longDescription = ''
       Snowcat gathers and analyzes the configuration of an Istio cluster and
       audits it for potential violations of security best practices.
diff --git a/pkgs/tools/security/spectre-meltdown-checker/default.nix b/pkgs/tools/security/spectre-meltdown-checker/default.nix
index 529da45579155..55372ce4a6aa0 100644
--- a/pkgs/tools/security/spectre-meltdown-checker/default.nix
+++ b/pkgs/tools/security/spectre-meltdown-checker/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     description = "Spectre & Meltdown vulnerability/mitigation checker for Linux";
+    mainProgram = "spectre-meltdown-checker";
     homepage = "https://github.com/speed47/spectre-meltdown-checker";
     license = lib.licenses.gpl3;
     maintainers = [ lib.maintainers.dotlambda ];
diff --git a/pkgs/tools/security/spyre/default.nix b/pkgs/tools/security/spyre/default.nix
index 3ec659373c7b9..c9a4946b83d98 100644
--- a/pkgs/tools/security/spyre/default.nix
+++ b/pkgs/tools/security/spyre/default.nix
@@ -44,6 +44,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "YARA-based IOC scanner";
+    mainProgram = "spyre";
     homepage = "https://github.com/spyre-project/spyre";
     license = with licenses; [ lgpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/ssdeep/default.nix b/pkgs/tools/security/ssdeep/default.nix
index 7647246369ff3..a7c937f03ee0a 100644
--- a/pkgs/tools/security/ssdeep/default.nix
+++ b/pkgs/tools/security/ssdeep/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A program for calculating fuzzy hashes";
+    mainProgram = "ssdeep";
     homepage    = "http://www.ssdeep.sf.net";
     license     = lib.licenses.gpl2;
     platforms   = lib.platforms.unix;
diff --git a/pkgs/tools/security/ssh-audit/default.nix b/pkgs/tools/security/ssh-audit/default.nix
index 54ec4e8f4ee1e..d704832f248d2 100644
--- a/pkgs/tools/security/ssh-audit/default.nix
+++ b/pkgs/tools/security/ssh-audit/default.nix
@@ -26,6 +26,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for ssh server auditing";
+    mainProgram = "ssh-audit";
     homepage = "https://github.com/jtesta/ssh-audit";
     changelog = "https://github.com/jtesta/ssh-audit/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/ssh-to-pgp/default.nix b/pkgs/tools/security/ssh-to-pgp/default.nix
index c8735cffd5f2c..15067063d328e 100644
--- a/pkgs/tools/security/ssh-to-pgp/default.nix
+++ b/pkgs/tools/security/ssh-to-pgp/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Convert ssh private keys to PGP";
+    mainProgram = "ssh-to-pgp";
     homepage = "https://github.com/Mic92/ssh-to-pgp";
     license = licenses.mit;
     maintainers = with maintainers; [ mic92 ];
diff --git a/pkgs/tools/security/sshchecker/default.nix b/pkgs/tools/security/sshchecker/default.nix
index 6ed76d0dd4e29..6f904f52020dd 100644
--- a/pkgs/tools/security/sshchecker/default.nix
+++ b/pkgs/tools/security/sshchecker/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Dedicated SSH brute-forcing tool";
+    mainProgram = "sshchecker";
     longDescription = ''
       sshchecker is a fast dedicated SSH brute-forcing tool to check
       SSH login on the giving IP list.
diff --git a/pkgs/tools/security/sshguard/default.nix b/pkgs/tools/security/sshguard/default.nix
index 18e93023d7792..2c5391ae44998 100644
--- a/pkgs/tools/security/sshguard/default.nix
+++ b/pkgs/tools/security/sshguard/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Protects hosts from brute-force attacks";
+    mainProgram = "sshguard";
     longDescription = ''
       SSHGuard can read log messages from various input sources. Log messages are parsed, line-by-line, for recognized patterns.
       If an attack, such as several login failures within a few seconds, is detected, the offending IP is blocked.
diff --git a/pkgs/tools/security/sshocker/default.nix b/pkgs/tools/security/sshocker/default.nix
index bb8177ea38780..0ace4d9e25977 100644
--- a/pkgs/tools/security/sshocker/default.nix
+++ b/pkgs/tools/security/sshocker/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for SSH, reverse sshfs and port forwarder";
+    mainProgram = "sshocker";
     homepage = "https://github.com/lima-vm/sshocker";
     changelog = "https://github.com/lima-vm/sshocker/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/sshuttle/default.nix b/pkgs/tools/security/sshuttle/default.nix
index 8a92dbceb1846..d937421adb011 100644
--- a/pkgs/tools/security/sshuttle/default.nix
+++ b/pkgs/tools/security/sshuttle/default.nix
@@ -50,6 +50,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Transparent proxy server that works as a poor man's VPN";
+    mainProgram = "sshuttle";
     longDescription = ''
       Forward connections over SSH, without requiring administrator access to the
       target network (though it does require Python 2.7, Python 3.5 or later at both ends).
diff --git a/pkgs/tools/security/sslscan/default.nix b/pkgs/tools/security/sslscan/default.nix
index 529b1bb1683e6..43e2b8ace7176 100644
--- a/pkgs/tools/security/sslscan/default.nix
+++ b/pkgs/tools/security/sslscan/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tests SSL/TLS services and discover supported cipher suites";
+    mainProgram = "sslscan";
     homepage = "https://github.com/rbsec/sslscan";
     changelog = "https://github.com/rbsec/sslscan/blob/${version}/Changelog";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/stacs/default.nix b/pkgs/tools/security/stacs/default.nix
index 205d85f0622e9..da66dca1cbd32 100644
--- a/pkgs/tools/security/stacs/default.nix
+++ b/pkgs/tools/security/stacs/default.nix
@@ -35,6 +35,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Static token and credential scanner";
+    mainProgram = "stacs";
     homepage = "https://github.com/stacscan/stacs";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/su-exec/default.nix b/pkgs/tools/security/su-exec/default.nix
index 0e26d2430cb13..f9ab5d503f5b2 100644
--- a/pkgs/tools/security/su-exec/default.nix
+++ b/pkgs/tools/security/su-exec/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "switch user and group id and exec";
+    mainProgram = "su-exec";
     homepage    = "https://github.com/ncopa/su-exec";
     license     = licenses.mit;
     maintainers = with maintainers; [ zimbatm ];
diff --git a/pkgs/tools/security/subjs/default.nix b/pkgs/tools/security/subjs/default.nix
index 60ed306145a73..0bd3c170b6563 100644
--- a/pkgs/tools/security/subjs/default.nix
+++ b/pkgs/tools/security/subjs/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fetcher for Javascript files";
+    mainProgram = "subjs";
     longDescription = ''
       subjs fetches Javascript files from a list of URLs or subdomains.
       Analyzing Javascript files can help you find undocumented endpoints,
diff --git a/pkgs/tools/security/swaggerhole/default.nix b/pkgs/tools/security/swaggerhole/default.nix
index 8455867b4be2f..507fde0b3086e 100644
--- a/pkgs/tools/security/swaggerhole/default.nix
+++ b/pkgs/tools/security/swaggerhole/default.nix
@@ -30,6 +30,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to searching for secret on swaggerhub";
+    mainProgram = "swaggerhole";
     homepage = "https://github.com/Liodeus/swaggerHole";
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/teler/default.nix b/pkgs/tools/security/teler/default.nix
index 989743fda8947..9232f4f88206b 100644
--- a/pkgs/tools/security/teler/default.nix
+++ b/pkgs/tools/security/teler/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Real-time HTTP Intrusion Detection";
+    mainProgram = "teler.app";
     longDescription = ''
       teler is an real-time intrusion detection and threat alert
       based on web log that runs in a terminal with resources that
diff --git a/pkgs/tools/security/tell-me-your-secrets/default.nix b/pkgs/tools/security/tell-me-your-secrets/default.nix
index a85a62fdfcc37..1d723aae52df8 100644
--- a/pkgs/tools/security/tell-me-your-secrets/default.nix
+++ b/pkgs/tools/security/tell-me-your-secrets/default.nix
@@ -42,6 +42,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tools to find secrets from various signatures";
+    mainProgram = "tell-me-your-secrets";
     homepage = "https://github.com/valayDave/tell-me-your-secrets";
     changelog = "https://github.com/valayDave/tell-me-your-secrets/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/tools/security/terrascan/default.nix b/pkgs/tools/security/terrascan/default.nix
index 864289f92f590..b44387032b2f9 100644
--- a/pkgs/tools/security/terrascan/default.nix
+++ b/pkgs/tools/security/terrascan/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Detect compliance and security violations across Infrastructure";
+    mainProgram = "terrascan";
     longDescription = ''
       Detect compliance and security violations across Infrastructure as Code to
       mitigate risk before provisioning cloud native infrastructure. It contains
diff --git a/pkgs/tools/security/threatest/default.nix b/pkgs/tools/security/threatest/default.nix
index faa5977986fca..a53804f1d1fce 100644
--- a/pkgs/tools/security/threatest/default.nix
+++ b/pkgs/tools/security/threatest/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Framework for end-to-end testing threat detection rules";
+    mainProgram = "threatest";
     homepage = "https://github.com/DataDog/threatest";
     changelog = "https://github.com/DataDog/threatest/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/tools/security/tor/torsocks.nix b/pkgs/tools/security/tor/torsocks.nix
index 6c5be8fcc7bdd..ae1a42a944d32 100644
--- a/pkgs/tools/security/tor/torsocks.nix
+++ b/pkgs/tools/security/tor/torsocks.nix
@@ -53,6 +53,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description      = "Wrapper to safely torify applications";
+    mainProgram = "torsocks";
     homepage         = "https://gitlab.torproject.org/tpo/core/torsocks";
     license          = lib.licenses.gpl2;
     platforms        = lib.platforms.unix;
diff --git a/pkgs/tools/security/tpm2-abrmd/default.nix b/pkgs/tools/security/tpm2-abrmd/default.nix
index 7183559987949..da297f7a5b36c 100644
--- a/pkgs/tools/security/tpm2-abrmd/default.nix
+++ b/pkgs/tools/security/tpm2-abrmd/default.nix
@@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "TPM2 resource manager, accessible via D-Bus";
+    mainProgram = "tpm2-abrmd";
     homepage = "https://github.com/tpm2-software/tpm2-tools";
     license = licenses.bsd3;
     platforms = platforms.linux;
diff --git a/pkgs/tools/security/tracee/default.nix b/pkgs/tools/security/tracee/default.nix
index eb1e8090b286d..c1615c1ddf563 100644
--- a/pkgs/tools/security/tracee/default.nix
+++ b/pkgs/tools/security/tracee/default.nix
@@ -93,6 +93,7 @@ buildGoModule rec {
     homepage = "https://aquasecurity.github.io/tracee/latest/";
     changelog = "https://github.com/aquasecurity/tracee/releases/tag/v${version}";
     description = "Linux Runtime Security and Forensics using eBPF";
+    mainProgram = "tracee";
     longDescription = ''
       Tracee is a Runtime Security and forensics tool for Linux. It is using
       Linux eBPF technology to trace your system and applications at runtime,
diff --git a/pkgs/tools/security/trousers/default.nix b/pkgs/tools/security/trousers/default.nix
index 5502de2d6272a..43d0941b47b69 100644
--- a/pkgs/tools/security/trousers/default.nix
+++ b/pkgs/tools/security/trousers/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Trusted computing software stack";
+    mainProgram = "tcsd";
     homepage    = "https://trousers.sourceforge.net/";
     license     = licenses.bsd3;
     maintainers = [ maintainers.ak ];
diff --git a/pkgs/tools/security/truecrack/default.nix b/pkgs/tools/security/truecrack/default.nix
index 19ae85105657f..1c0648f33bcb4 100644
--- a/pkgs/tools/security/truecrack/default.nix
+++ b/pkgs/tools/security/truecrack/default.nix
@@ -41,6 +41,7 @@ gccStdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A brute-force password cracker for TrueCrypt volumes, optimized for Nvidia Cuda technology";
+    mainProgram = "truecrack";
     homepage = "https://gitlab.com/kalilinux/packages/truecrack";
     broken = cudaSupport;
     license = licenses.gpl3Plus;
diff --git a/pkgs/tools/security/trueseeing/default.nix b/pkgs/tools/security/trueseeing/default.nix
index ef0026f870f0f..182f33138b95a 100644
--- a/pkgs/tools/security/trueseeing/default.nix
+++ b/pkgs/tools/security/trueseeing/default.nix
@@ -44,6 +44,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Non-decompiling Android vulnerability scanner";
+    mainProgram = "trueseeing";
     homepage = "https://github.com/alterakey/trueseeing";
     changelog = "https://github.com/alterakey/trueseeing/releases/tag/v${version}";
     license = with licenses; [ gpl3Plus ];
diff --git a/pkgs/tools/security/trustymail/default.nix b/pkgs/tools/security/trustymail/default.nix
index 88d321708886f..11133548bbd30 100644
--- a/pkgs/tools/security/trustymail/default.nix
+++ b/pkgs/tools/security/trustymail/default.nix
@@ -39,6 +39,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to scan domains and return data based on trustworthy email best practices";
+    mainProgram = "trustymail";
     homepage = "https://github.com/cisagov/trustymail";
     changelog = "https://github.com/cisagov/trustymail/releases/tag/v${version}";
     license = with licenses; [ cc0 ];
diff --git a/pkgs/tools/security/uddup/default.nix b/pkgs/tools/security/uddup/default.nix
index 3516b4dcff8d5..4d850b016f9fc 100644
--- a/pkgs/tools/security/uddup/default.nix
+++ b/pkgs/tools/security/uddup/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for de-duplication URLs";
+    mainProgram = "uddup";
     homepage = "https://github.com/rotemreiss/uddup";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/udpx/default.nix b/pkgs/tools/security/udpx/default.nix
index 081c002a09e5d..f240057a2b6d0 100644
--- a/pkgs/tools/security/udpx/default.nix
+++ b/pkgs/tools/security/udpx/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Single-packet UDP scanner";
+    mainProgram = "udpx";
     homepage = "https://github.com/nullt3r/udpx";
     changelog = "https://github.com/nullt3r/udpx/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/urlhunter/default.nix b/pkgs/tools/security/urlhunter/default.nix
index c70c43027a251..9f3f6b5a09b0c 100644
--- a/pkgs/tools/security/urlhunter/default.nix
+++ b/pkgs/tools/security/urlhunter/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Recon tool that allows searching shortened URLs";
+    mainProgram = "urlhunter";
     longDescription = ''
       urlhunter is a recon tool that allows searching on URLs that are
       exposed via shortener services such as bit.ly and goo.gl.
diff --git a/pkgs/tools/security/usbrip/default.nix b/pkgs/tools/security/usbrip/default.nix
index aa09d759b8e46..219a4315fd147 100644
--- a/pkgs/tools/security/usbrip/default.nix
+++ b/pkgs/tools/security/usbrip/default.nix
@@ -37,6 +37,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to track the history of USB events";
+    mainProgram = "usbrip";
     homepage = "https://github.com/snovvcrash/usbrip";
     license = with licenses; [ gpl3Plus ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/vals/default.nix b/pkgs/tools/security/vals/default.nix
index 5000615b4eab8..c6355bb3683bd 100644
--- a/pkgs/tools/security/vals/default.nix
+++ b/pkgs/tools/security/vals/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Helm-like configuration values loader with support for various sources";
+    mainProgram = "vals";
     license = licenses.asl20;
     homepage = "https://github.com/variantdev/vals";
     changelog = "https://github.com/variantdev/vals/releases/v${version}";
diff --git a/pkgs/tools/security/vault-medusa/default.nix b/pkgs/tools/security/vault-medusa/default.nix
index 382a732cf6b59..cd7cf537de587 100644
--- a/pkgs/tools/security/vault-medusa/default.nix
+++ b/pkgs/tools/security/vault-medusa/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A cli tool for importing and exporting Hashicorp Vault secrets";
+    mainProgram = "medusa";
     homepage = "https://github.com/jonasvinther/medusa";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
diff --git a/pkgs/tools/security/vault-ssh-plus/default.nix b/pkgs/tools/security/vault-ssh-plus/default.nix
index a1c77e5d0a29f..80cfa8674cb2b 100644
--- a/pkgs/tools/security/vault-ssh-plus/default.nix
+++ b/pkgs/tools/security/vault-ssh-plus/default.nix
@@ -42,6 +42,7 @@ buildGoModule rec {
     homepage = "https://github.com/isometry/vault-ssh-plus";
     changelog = "https://github.com/isometry/vault-ssh-plus/releases/tag/v${version}";
     description = "Automatically use HashiCorp Vault SSH Client Key Signing with ssh(1)";
+    mainProgram = "vssh";
     license = licenses.mit;
     maintainers = with maintainers; [ lesuisse ];
   };
diff --git a/pkgs/tools/security/verifpal/default.nix b/pkgs/tools/security/verifpal/default.nix
index 3d47dfa3abc5f..378bd4731a419 100644
--- a/pkgs/tools/security/verifpal/default.nix
+++ b/pkgs/tools/security/verifpal/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
   meta = {
     homepage = "https://verifpal.com/";
     description = "Cryptographic protocol analysis for students and engineers";
+    mainProgram = "verifpal";
     maintainers = with lib.maintainers; [ zimbatm ];
     license = with lib.licenses; [ gpl3 ];
   };
diff --git a/pkgs/tools/security/vexctl/default.nix b/pkgs/tools/security/vexctl/default.nix
index 335da7f93acf4..1bb56dbb0547e 100644
--- a/pkgs/tools/security/vexctl/default.nix
+++ b/pkgs/tools/security/vexctl/default.nix
@@ -63,6 +63,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/chainguard-dev/vex/";
     description = "A tool to attest VEX impact statements";
+    mainProgram = "vexctl";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk ];
   };
diff --git a/pkgs/tools/security/vulnix/default.nix b/pkgs/tools/security/vulnix/default.nix
index 7f6d29891f0c6..305c3dc2f9a9b 100644
--- a/pkgs/tools/security/vulnix/default.nix
+++ b/pkgs/tools/security/vulnix/default.nix
@@ -55,6 +55,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "NixOS vulnerability scanner";
+    mainProgram = "vulnix";
     homepage = "https://github.com/flyingcircusio/vulnix";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ckauhaus ];
diff --git a/pkgs/tools/security/wad/default.nix b/pkgs/tools/security/wad/default.nix
index 5dc81a7f56df9..348a35ccbe10d 100644
--- a/pkgs/tools/security/wad/default.nix
+++ b/pkgs/tools/security/wad/default.nix
@@ -30,6 +30,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for detecting technologies used by web applications";
+    mainProgram = "wad";
     longDescription = ''
       WAD lets you analyze given URL(s) and detect technologies used by web
       application behind that URL, from the OS and web server level, to the
diff --git a/pkgs/tools/security/waf-tester/default.nix b/pkgs/tools/security/waf-tester/default.nix
index b8dd01ed19b81..47e5c2fbb5fb4 100644
--- a/pkgs/tools/security/waf-tester/default.nix
+++ b/pkgs/tools/security/waf-tester/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to test Web Application Firewalls (WAFs)";
+    mainProgram = "waf-tester";
     homepage = "https://github.com/jreisinger/waf-tester";
     changelog = "https://github.com/jreisinger/waf-tester/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/tools/security/wafw00f/default.nix b/pkgs/tools/security/wafw00f/default.nix
index 55d4b7591e387..d8d89a3e325a5 100644
--- a/pkgs/tools/security/wafw00f/default.nix
+++ b/pkgs/tools/security/wafw00f/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to identify and fingerprint Web Application Firewalls (WAF)";
+    mainProgram = "wafw00f";
     homepage = "https://github.com/EnableSecurity/wafw00f";
     license = with licenses; [ bsd3 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/web-eid-app/default.nix b/pkgs/tools/security/web-eid-app/default.nix
index fd9c4cc319e7e..067963e1aaffd 100644
--- a/pkgs/tools/security/web-eid-app/default.nix
+++ b/pkgs/tools/security/web-eid-app/default.nix
@@ -33,6 +33,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "signing and authentication operations with smart cards for the Web eID browser extension";
+    mainProgram = "web-eid";
     longDescription = ''
       The Web eID application performs cryptographic digital signing and
       authentication operations with electronic ID smart cards for the Web eID
diff --git a/pkgs/tools/security/whatweb/default.nix b/pkgs/tools/security/whatweb/default.nix
index 30d866da869af..fbe78834c8268 100644
--- a/pkgs/tools/security/whatweb/default.nix
+++ b/pkgs/tools/security/whatweb/default.nix
@@ -42,6 +42,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Next generation web scanner";
+    mainProgram = "whatweb";
     homepage = "https://github.com/urbanadventurer/whatweb";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ wolfangaukang ];
diff --git a/pkgs/tools/security/wipe/default.nix b/pkgs/tools/security/wipe/default.nix
index 5ced99060fb74..0d9653f27918a 100644
--- a/pkgs/tools/security/wipe/default.nix
+++ b/pkgs/tools/security/wipe/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Secure file wiping utility";
+    mainProgram = "wipe";
     homepage    = "https://wipe.sourceforge.net/";
     license     = licenses.gpl2;
     platforms   = platforms.all;
diff --git a/pkgs/tools/security/xcat/default.nix b/pkgs/tools/security/xcat/default.nix
index ea3390b38c746..bb5fc62831e7e 100644
--- a/pkgs/tools/security/xcat/default.nix
+++ b/pkgs/tools/security/xcat/default.nix
@@ -37,6 +37,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "XPath injection tool";
+    mainProgram = "xcat";
     longDescription = ''
       xcat is an advanced tool for exploiting XPath injection vulnerabilities,
       featuring a comprehensive set of features to read the entire file being
diff --git a/pkgs/tools/security/xorex/default.nix b/pkgs/tools/security/xorex/default.nix
index a1a6e655996a9..933ab05b63823 100644
--- a/pkgs/tools/security/xorex/default.nix
+++ b/pkgs/tools/security/xorex/default.nix
@@ -31,6 +31,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "XOR Key Extractor";
+    mainProgram = "xorex";
     homepage = "https://github.com/Neo23x0/xorex";
     license = licenses.asl20;
     maintainers = [ ];
diff --git a/pkgs/tools/security/xsser/default.nix b/pkgs/tools/security/xsser/default.nix
index 6c75f2e733f26..c5fab523166e8 100644
--- a/pkgs/tools/security/xsser/default.nix
+++ b/pkgs/tools/security/xsser/default.nix
@@ -53,6 +53,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Automatic framework to detect, exploit and report XSS vulnerabilities in web-based applications";
+    mainProgram = "xsser";
     homepage = "https://xsser.03c8.net/";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/tools/security/xsubfind3r/default.nix b/pkgs/tools/security/xsubfind3r/default.nix
index 7c5470a0715ae..976624c16b608 100644
--- a/pkgs/tools/security/xsubfind3r/default.nix
+++ b/pkgs/tools/security/xsubfind3r/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI utility to find subdomains from curated passive online sources";
+    mainProgram = "xsubfind3r";
     homepage = "https://github.com/hueristiq/xsubfind3r";
     changelog = "https://github.com/hueristiq/xsubfind3r/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/tools/security/yarGen/default.nix b/pkgs/tools/security/yarGen/default.nix
index 4003c7e996ec2..12b2567f340ef 100644
--- a/pkgs/tools/security/yarGen/default.nix
+++ b/pkgs/tools/security/yarGen/default.nix
@@ -51,6 +51,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A generator for YARA rules";
+    mainProgram = "yarGen.py";
     homepage = "https://github.com/Neo23x0/yarGen";
     license = licenses.bsd3;
     maintainers = [ ];
diff --git a/pkgs/tools/security/yersinia/default.nix b/pkgs/tools/security/yersinia/default.nix
index a913835743aa3..ae2ca9babff2c 100644
--- a/pkgs/tools/security/yersinia/default.nix
+++ b/pkgs/tools/security/yersinia/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A framework for layer 2 attacks";
+    mainProgram = "yersinia";
     homepage = "https://github.com/tomac/yersinia";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ vdot0x23 ];
diff --git a/pkgs/tools/security/yubikey-agent/default.nix b/pkgs/tools/security/yubikey-agent/default.nix
index 01e512e49bdd3..24cd2d7642678 100644
--- a/pkgs/tools/security/yubikey-agent/default.nix
+++ b/pkgs/tools/security/yubikey-agent/default.nix
@@ -37,6 +37,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A seamless ssh-agent for YubiKeys";
+    mainProgram = "yubikey-agent";
     license = licenses.bsd3;
     homepage = "https://filippo.io/yubikey-agent";
     maintainers = with lib.maintainers; [ philandstuff rawkode ];
diff --git a/pkgs/tools/security/zdns/default.nix b/pkgs/tools/security/zdns/default.nix
index 9b0c33f2802e7..d67bb6d8e4c72 100644
--- a/pkgs/tools/security/zdns/default.nix
+++ b/pkgs/tools/security/zdns/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI DNS lookup tool";
+    mainProgram = "zdns";
     homepage = "https://github.com/zmap/zdns";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/tools/security/zgrab2/default.nix b/pkgs/tools/security/zgrab2/default.nix
index c91c1b876099c..155a6a28e721e 100644
--- a/pkgs/tools/security/zgrab2/default.nix
+++ b/pkgs/tools/security/zgrab2/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Web application scanner";
+    mainProgram = "zgrab2";
     homepage = "https://github.com/zmap/zgrab2";
     license = with licenses; [ asl20 isc ];
     maintainers = with maintainers; [ fab juliusrickert ];