about summary refs log tree commit diff
path: root/pkgs/development/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/tools')
-rw-r--r--pkgs/development/tools/aapt/default.nix1
-rw-r--r--pkgs/development/tools/air/default.nix1
-rw-r--r--pkgs/development/tools/algolia-cli/default.nix1
-rw-r--r--pkgs/development/tools/allure/default.nix1
-rw-r--r--pkgs/development/tools/altair-graphql-client/default.nix1
-rw-r--r--pkgs/development/tools/ameba/default.nix1
-rw-r--r--pkgs/development/tools/amqpcat/default.nix1
-rw-r--r--pkgs/development/tools/analysis/bingrep/default.nix1
-rw-r--r--pkgs/development/tools/analysis/cargo-tarpaulin/default.nix1
-rw-r--r--pkgs/development/tools/analysis/cccc/default.nix1
-rw-r--r--pkgs/development/tools/analysis/checkstyle/default.nix1
-rw-r--r--pkgs/development/tools/analysis/coan/default.nix1
-rw-r--r--pkgs/development/tools/analysis/coz/default.nix1
-rw-r--r--pkgs/development/tools/analysis/cpplint/default.nix1
-rw-r--r--pkgs/development/tools/analysis/dotenv-linter/default.nix1
-rw-r--r--pkgs/development/tools/analysis/egypt/default.nix1
-rw-r--r--pkgs/development/tools/analysis/evmdis/default.nix1
-rw-r--r--pkgs/development/tools/analysis/flow/default.nix1
-rw-r--r--pkgs/development/tools/analysis/garcosim/tracefilegen/default.nix1
-rw-r--r--pkgs/development/tools/analysis/garcosim/tracefilesim/default.nix1
-rw-r--r--pkgs/development/tools/analysis/hotspot/default.nix1
-rw-r--r--pkgs/development/tools/analysis/jacoco/default.nix1
-rw-r--r--pkgs/development/tools/analysis/massif-visualizer/default.nix1
-rw-r--r--pkgs/development/tools/analysis/snyk/default.nix1
-rw-r--r--pkgs/development/tools/analysis/splint/default.nix1
-rw-r--r--pkgs/development/tools/analysis/stylelint/default.nix1
-rw-r--r--pkgs/development/tools/analysis/svlint/default.nix1
-rw-r--r--pkgs/development/tools/analysis/swarm/default.nix1
-rw-r--r--pkgs/development/tools/analysis/tflint/default.nix1
-rw-r--r--pkgs/development/tools/analysis/uefi-firmware-parser/default.nix1
-rw-r--r--pkgs/development/tools/analysis/yallback/default.nix1
-rw-r--r--pkgs/development/tools/apkid/default.nix1
-rw-r--r--pkgs/development/tools/apko/default.nix1
-rw-r--r--pkgs/development/tools/apksigcopier/default.nix1
-rw-r--r--pkgs/development/tools/apksigner/default.nix1
-rw-r--r--pkgs/development/tools/apktool/default.nix1
-rw-r--r--pkgs/development/tools/argc/default.nix1
-rw-r--r--pkgs/development/tools/ashpd-demo/default.nix1
-rw-r--r--pkgs/development/tools/asmfmt/default.nix1
-rw-r--r--pkgs/development/tools/async/default.nix1
-rw-r--r--pkgs/development/tools/avro-tools/default.nix1
-rw-r--r--pkgs/development/tools/backblaze-b2/default.nix1
-rw-r--r--pkgs/development/tools/bacon/default.nix1
-rw-r--r--pkgs/development/tools/bashate/default.nix1
-rw-r--r--pkgs/development/tools/bazelisk/default.nix1
-rw-r--r--pkgs/development/tools/bbin/default.nix1
-rw-r--r--pkgs/development/tools/benthos/default.nix1
-rw-r--r--pkgs/development/tools/bin2c/default.nix1
-rw-r--r--pkgs/development/tools/bingo/default.nix1
-rw-r--r--pkgs/development/tools/bloaty/default.nix1
-rw-r--r--pkgs/development/tools/bodyclose/default.nix1
-rw-r--r--pkgs/development/tools/bpf-linker/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/apache-ant/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/bam/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/bazel/bazel-remote/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/bear/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/bloop/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/bob/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/boot/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/buck/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/build2/bdep.nix1
-rw-r--r--pkgs/development/tools/build-managers/build2/bpkg.nix1
-rw-r--r--pkgs/development/tools/build-managers/conan/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/dub/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/gn/generic.nix1
-rw-r--r--pkgs/development/tools/build-managers/kati/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/knit/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/mage/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/mill/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/moon/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/msbuild/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/ninja/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/rebar/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/rebar3/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/remake/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/scala-cli/default.nix1
-rw-r--r--pkgs/development/tools/build-managers/shards/default.nix1
-rw-r--r--pkgs/development/tools/buildah/default.nix1
-rw-r--r--pkgs/development/tools/buildpack/default.nix1
-rw-r--r--pkgs/development/tools/bundletool/default.nix1
-rw-r--r--pkgs/development/tools/butane/default.nix1
-rw-r--r--pkgs/development/tools/cambalache/default.nix1
-rw-r--r--pkgs/development/tools/capnproto-java/default.nix1
-rw-r--r--pkgs/development/tools/castxml/default.nix1
-rw-r--r--pkgs/development/tools/cbfmt/default.nix1
-rw-r--r--pkgs/development/tools/cdecrypt/default.nix1
-rw-r--r--pkgs/development/tools/changie/default.nix1
-rw-r--r--pkgs/development/tools/check-jsonschema/default.nix1
-rw-r--r--pkgs/development/tools/checkmake/default.nix1
-rw-r--r--pkgs/development/tools/checkmate/default.nix1
-rw-r--r--pkgs/development/tools/chit/default.nix1
-rw-r--r--pkgs/development/tools/circup/default.nix1
-rw-r--r--pkgs/development/tools/clickable/default.nix1
-rw-r--r--pkgs/development/tools/cloud-nuke/default.nix1
-rw-r--r--pkgs/development/tools/cloudsmith-cli/default.nix1
-rw-r--r--pkgs/development/tools/cobra-cli/default.nix1
-rw-r--r--pkgs/development/tools/cocogitto/default.nix1
-rw-r--r--pkgs/development/tools/code-maat/default.nix1
-rw-r--r--pkgs/development/tools/codeowners/default.nix1
-rw-r--r--pkgs/development/tools/codespell/default.nix1
-rw-r--r--pkgs/development/tools/comby/default.nix1
-rw-r--r--pkgs/development/tools/conftest/default.nix1
-rw-r--r--pkgs/development/tools/continuous-integration/buildkite-test-collector-rust/default.nix1
-rw-r--r--pkgs/development/tools/continuous-integration/drone/default.nix1
-rw-r--r--pkgs/development/tools/continuous-integration/fly/default.nix1
-rw-r--r--pkgs/development/tools/cotton/default.nix1
-rw-r--r--pkgs/development/tools/coursier/default.nix1
-rw-r--r--pkgs/development/tools/cppclean/default.nix1
-rw-r--r--pkgs/development/tools/crd2pulumi/default.nix1
-rw-r--r--pkgs/development/tools/csvq/default.nix1
-rw-r--r--pkgs/development/tools/cue/default.nix1
-rw-r--r--pkgs/development/tools/cuelsp/default.nix1
-rw-r--r--pkgs/development/tools/dapper/default.nix1
-rw-r--r--pkgs/development/tools/darklua/default.nix1
-rw-r--r--pkgs/development/tools/database/apgdiff/default.nix1
-rw-r--r--pkgs/development/tools/database/clickhouse-backup/default.nix1
-rw-r--r--pkgs/development/tools/database/dbmate/default.nix1
-rw-r--r--pkgs/development/tools/database/dynein/default.nix1
-rw-r--r--pkgs/development/tools/database/liquibase/default.nix1
-rw-r--r--pkgs/development/tools/database/litecli/default.nix1
-rw-r--r--pkgs/development/tools/database/litestream/default.nix1
-rw-r--r--pkgs/development/tools/database/mermerd/default.nix1
-rw-r--r--pkgs/development/tools/database/movine/default.nix1
-rw-r--r--pkgs/development/tools/database/pg_activity/default.nix1
-rw-r--r--pkgs/development/tools/database/replibyte/default.nix1
-rw-r--r--pkgs/development/tools/database/schemaspy/default.nix1
-rw-r--r--pkgs/development/tools/database/shmig/default.nix1
-rw-r--r--pkgs/development/tools/database/sqlboiler-crdb/default.nix1
-rw-r--r--pkgs/development/tools/database/sqlc/default.nix1
-rw-r--r--pkgs/development/tools/database/sqlcheck/default.nix1
-rw-r--r--pkgs/development/tools/database/sqlcmd/default.nix1
-rw-r--r--pkgs/development/tools/database/sqlfluff/default.nix1
-rw-r--r--pkgs/development/tools/database/sqlite-web/default.nix1
-rw-r--r--pkgs/development/tools/database/sqlitebrowser/default.nix1
-rw-r--r--pkgs/development/tools/database/squirrel-sql/default.nix1
-rw-r--r--pkgs/development/tools/database/timescaledb-parallel-copy/default.nix1
-rw-r--r--pkgs/development/tools/database/timescaledb-tune/default.nix1
-rw-r--r--pkgs/development/tools/database/trino-cli/default.nix1
-rw-r--r--pkgs/development/tools/database/webdis/default.nix1
-rw-r--r--pkgs/development/tools/datree/default.nix1
-rw-r--r--pkgs/development/tools/dbus-test-runner/default.nix1
-rw-r--r--pkgs/development/tools/dcadec/default.nix1
-rw-r--r--pkgs/development/tools/ddosify/default.nix1
-rw-r--r--pkgs/development/tools/dec-decode/default.nix1
-rw-r--r--pkgs/development/tools/dep2nix/default.nix1
-rw-r--r--pkgs/development/tools/detekt/default.nix1
-rw-r--r--pkgs/development/tools/devd/default.nix1
-rw-r--r--pkgs/development/tools/devpi-client/default.nix1
-rw-r--r--pkgs/development/tools/devpod/default.nix1
-rw-r--r--pkgs/development/tools/distgen/default.nix1
-rw-r--r--pkgs/development/tools/dive/default.nix1
-rw-r--r--pkgs/development/tools/djlint/default.nix1
-rw-r--r--pkgs/development/tools/doc2go/default.nix1
-rw-r--r--pkgs/development/tools/dockfmt/default.nix1
-rw-r--r--pkgs/development/tools/dockle/default.nix1
-rw-r--r--pkgs/development/tools/doctl/default.nix1
-rw-r--r--pkgs/development/tools/documentation/antora/default.nix1
-rw-r--r--pkgs/development/tools/documentation/doxygen/default.nix1
-rw-r--r--pkgs/development/tools/documentation/gi-docgen/default.nix1
-rw-r--r--pkgs/development/tools/drm_info/default.nix1
-rw-r--r--pkgs/development/tools/dstp/default.nix1
-rw-r--r--pkgs/development/tools/dum/default.nix1
-rw-r--r--pkgs/development/tools/dump_syms/default.nix1
-rw-r--r--pkgs/development/tools/dyff/default.nix1
-rw-r--r--pkgs/development/tools/easyjson/default.nix1
-rw-r--r--pkgs/development/tools/ec2-metadata-mock/default.nix1
-rw-r--r--pkgs/development/tools/eclint/default.nix1
-rw-r--r--pkgs/development/tools/eclipse-mat/default.nix1
-rw-r--r--pkgs/development/tools/efm-langserver/default.nix1
-rw-r--r--pkgs/development/tools/ejson/default.nix1
-rw-r--r--pkgs/development/tools/eliot-tree/default.nix1
-rw-r--r--pkgs/development/tools/enochecker-test/default.nix1
-rw-r--r--pkgs/development/tools/errcheck/default.nix1
-rw-r--r--pkgs/development/tools/evans/default.nix1
-rw-r--r--pkgs/development/tools/exhaustive/default.nix1
-rw-r--r--pkgs/development/tools/explain/default.nix1
-rw-r--r--pkgs/development/tools/faas-cli/default.nix1
-rw-r--r--pkgs/development/tools/fable/default.nix1
-rw-r--r--pkgs/development/tools/faq/default.nix1
-rw-r--r--pkgs/development/tools/fastddsgen/default.nix1
-rw-r--r--pkgs/development/tools/fastgron/default.nix1
-rw-r--r--pkgs/development/tools/fatcat/default.nix1
-rw-r--r--pkgs/development/tools/fblog/default.nix1
-rw-r--r--pkgs/development/tools/flatpak-builder/default.nix1
-rw-r--r--pkgs/development/tools/flawfinder/default.nix1
-rw-r--r--pkgs/development/tools/flip-link/default.nix1
-rw-r--r--pkgs/development/tools/flootty/default.nix1
-rw-r--r--pkgs/development/tools/fnm/default.nix1
-rw-r--r--pkgs/development/tools/fprettify/default.nix1
-rw-r--r--pkgs/development/tools/fq/default.nix1
-rw-r--r--pkgs/development/tools/frece/default.nix1
-rw-r--r--pkgs/development/tools/frugal/default.nix1
-rw-r--r--pkgs/development/tools/fsautocomplete/default.nix1
-rw-r--r--pkgs/development/tools/fundoc/default.nix1
-rw-r--r--pkgs/development/tools/fusee-launcher/default.nix1
-rw-r--r--pkgs/development/tools/fusee-nano/default.nix1
-rw-r--r--pkgs/development/tools/fx/default.nix1
-rw-r--r--pkgs/development/tools/galen/default.nix1
-rw-r--r--pkgs/development/tools/gauge/default.nix1
-rw-r--r--pkgs/development/tools/gcov2lcov/default.nix1
-rw-r--r--pkgs/development/tools/gdlv/default.nix1
-rw-r--r--pkgs/development/tools/gen-license/default.nix1
-rw-r--r--pkgs/development/tools/gendef/default.nix1
-rw-r--r--pkgs/development/tools/ginkgo/default.nix1
-rw-r--r--pkgs/development/tools/git-ps-rs/default.nix1
-rw-r--r--pkgs/development/tools/github-commenter/default.nix1
-rw-r--r--pkgs/development/tools/github/bump/default.nix1
-rw-r--r--pkgs/development/tools/github/cligh/default.nix1
-rw-r--r--pkgs/development/tools/github/github-release/default.nix1
-rw-r--r--pkgs/development/tools/glock/default.nix1
-rw-r--r--pkgs/development/tools/glpaper/default.nix1
-rw-r--r--pkgs/development/tools/go-bindata-assetfs/default.nix1
-rw-r--r--pkgs/development/tools/go-bindata/default.nix1
-rw-r--r--pkgs/development/tools/go-callvis/default.nix1
-rw-r--r--pkgs/development/tools/go-junit-report/default.nix1
-rw-r--r--pkgs/development/tools/go-motion/default.nix1
-rw-r--r--pkgs/development/tools/go-outline/default.nix1
-rw-r--r--pkgs/development/tools/go-symbols/default.nix1
-rw-r--r--pkgs/development/tools/goa/default.nix1
-rw-r--r--pkgs/development/tools/gocode-gomod/default.nix1
-rw-r--r--pkgs/development/tools/goconst/default.nix1
-rw-r--r--pkgs/development/tools/goconvey/default.nix1
-rw-r--r--pkgs/development/tools/gocover-cobertura/default.nix1
-rw-r--r--pkgs/development/tools/gocyclo/default.nix1
-rw-r--r--pkgs/development/tools/godef/default.nix1
-rw-r--r--pkgs/development/tools/gogetdoc/default.nix1
-rw-r--r--pkgs/development/tools/goimports-reviser/default.nix1
-rw-r--r--pkgs/development/tools/gojsontoyaml/default.nix1
-rw-r--r--pkgs/development/tools/gokart/default.nix1
-rw-r--r--pkgs/development/tools/golint/default.nix1
-rw-r--r--pkgs/development/tools/gomacro/default.nix1
-rw-r--r--pkgs/development/tools/gomodifytags/default.nix1
-rw-r--r--pkgs/development/tools/gomplate/default.nix1
-rw-r--r--pkgs/development/tools/google-clasp/default.nix1
-rw-r--r--pkgs/development/tools/gopkgs/default.nix1
-rw-r--r--pkgs/development/tools/gops/default.nix1
-rw-r--r--pkgs/development/tools/gore/default.nix1
-rw-r--r--pkgs/development/tools/goresym/default.nix1
-rw-r--r--pkgs/development/tools/gosec/default.nix1
-rw-r--r--pkgs/development/tools/gotags/default.nix1
-rw-r--r--pkgs/development/tools/gotemplate/default.nix1
-rw-r--r--pkgs/development/tools/gotest/default.nix1
-rw-r--r--pkgs/development/tools/gotests/default.nix1
-rw-r--r--pkgs/development/tools/gotestsum/default.nix1
-rw-r--r--pkgs/development/tools/gotraceui/default.nix1
-rw-r--r--pkgs/development/tools/govers/default.nix1
-rw-r--r--pkgs/development/tools/gox/default.nix1
-rw-r--r--pkgs/development/tools/gpp/default.nix1
-rw-r--r--pkgs/development/tools/gptcommit/default.nix1
-rw-r--r--pkgs/development/tools/gqlgenc/default.nix1
-rw-r--r--pkgs/development/tools/grabserial/default.nix1
-rw-r--r--pkgs/development/tools/graphql-client/default.nix1
-rw-r--r--pkgs/development/tools/gron/default.nix1
-rw-r--r--pkgs/development/tools/guile/g-wrap/default.nix1
-rw-r--r--pkgs/development/tools/guile/guile-hall/default.nix1
-rw-r--r--pkgs/development/tools/halfempty/default.nix1
-rw-r--r--pkgs/development/tools/haskell/mueval/default.nix1
-rw-r--r--pkgs/development/tools/hatch/default.nix1
-rw-r--r--pkgs/development/tools/hcloud/default.nix1
-rw-r--r--pkgs/development/tools/headache/default.nix1
-rw-r--r--pkgs/development/tools/heroku/default.nix1
-rw-r--r--pkgs/development/tools/hors/default.nix1
-rw-r--r--pkgs/development/tools/hostess/default.nix1
-rw-r--r--pkgs/development/tools/hred/default.nix1
-rw-r--r--pkgs/development/tools/htmltest/default.nix1
-rw-r--r--pkgs/development/tools/icr/default.nix1
-rw-r--r--pkgs/development/tools/iferr/default.nix1
-rw-r--r--pkgs/development/tools/ijq/default.nix1
-rw-r--r--pkgs/development/tools/ilspycmd/default.nix1
-rw-r--r--pkgs/development/tools/img/default.nix1
-rw-r--r--pkgs/development/tools/impl/default.nix1
-rw-r--r--pkgs/development/tools/ineffassign/default.nix1
-rw-r--r--pkgs/development/tools/initool/default.nix1
-rw-r--r--pkgs/development/tools/irony-server/default.nix1
-rw-r--r--pkgs/development/tools/java/cfr/default.nix1
-rw-r--r--pkgs/development/tools/java/java-language-server/default.nix1
-rw-r--r--pkgs/development/tools/java/jextract/default.nix1
-rw-r--r--pkgs/development/tools/java/sawjap/default.nix1
-rw-r--r--pkgs/development/tools/java/visualvm/default.nix1
-rw-r--r--pkgs/development/tools/jbang/default.nix1
-rw-r--r--pkgs/development/tools/jf/default.nix1
-rw-r--r--pkgs/development/tools/jfmt/default.nix1
-rw-r--r--pkgs/development/tools/jid/default.nix1
-rw-r--r--pkgs/development/tools/jless/default.nix1
-rw-r--r--pkgs/development/tools/jp/default.nix1
-rw-r--r--pkgs/development/tools/jpexs/default.nix1
-rw-r--r--pkgs/development/tools/jqp/default.nix1
-rw-r--r--pkgs/development/tools/jsduck/default.nix1
-rw-r--r--pkgs/development/tools/json2hcl/default.nix1
-rw-r--r--pkgs/development/tools/jtc/default.nix1
-rw-r--r--pkgs/development/tools/k6/default.nix1
-rw-r--r--pkgs/development/tools/kaf/default.nix1
-rw-r--r--pkgs/development/tools/kafka-delta-ingest/default.nix1
-rw-r--r--pkgs/development/tools/kafkactl/default.nix1
-rw-r--r--pkgs/development/tools/karate/default.nix1
-rw-r--r--pkgs/development/tools/kcat/default.nix1
-rw-r--r--pkgs/development/tools/kdash/default.nix1
-rw-r--r--pkgs/development/tools/kgt/default.nix1
-rw-r--r--pkgs/development/tools/knightos/genkfs/default.nix1
-rw-r--r--pkgs/development/tools/knightos/kcc/default.nix1
-rw-r--r--pkgs/development/tools/knightos/kimg/default.nix1
-rw-r--r--pkgs/development/tools/knightos/kpack/default.nix1
-rw-r--r--pkgs/development/tools/knightos/mkrom/default.nix1
-rw-r--r--pkgs/development/tools/knightos/mktiupgrade/default.nix1
-rw-r--r--pkgs/development/tools/knightos/patchrom/default.nix1
-rw-r--r--pkgs/development/tools/ko/default.nix1
-rw-r--r--pkgs/development/tools/konf/default.nix1
-rw-r--r--pkgs/development/tools/konstraint/default.nix1
-rw-r--r--pkgs/development/tools/krankerl/default.nix1
-rw-r--r--pkgs/development/tools/krew/default.nix1
-rw-r--r--pkgs/development/tools/kube-prompt/default.nix1
-rw-r--r--pkgs/development/tools/kubeprompt/default.nix1
-rw-r--r--pkgs/development/tools/kubie/default.nix1
-rw-r--r--pkgs/development/tools/kustomize/4.nix1
-rw-r--r--pkgs/development/tools/kustomize/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/ansible-language-server/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/beancount-language-server/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/buf-language-server/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/ccls/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/crystalline/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/csharp-ls/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/dot-language-server/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/fortls/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/fortran-language-server/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/glslls/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/jsonnet-language-server/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/metals/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/openscad-lsp/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/svls/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/vala-language-server/default.nix1
-rw-r--r--pkgs/development/tools/language-servers/zls/default.nix1
-rw-r--r--pkgs/development/tools/leaps/default.nix1
-rw-r--r--pkgs/development/tools/legitify/default.nix1
-rw-r--r--pkgs/development/tools/librarian-puppet-go/default.nix1
-rw-r--r--pkgs/development/tools/license-scanner/default.nix1
-rw-r--r--pkgs/development/tools/literate-programming/eweb/default.nix1
-rw-r--r--pkgs/development/tools/literate-programming/funnelweb/default.nix1
-rw-r--r--pkgs/development/tools/literate-programming/md-tangle/default.nix1
-rw-r--r--pkgs/development/tools/literate-programming/nuweb/default.nix1
-rw-r--r--pkgs/development/tools/ls-lint/default.nix1
-rw-r--r--pkgs/development/tools/lurk/default.nix1
-rw-r--r--pkgs/development/tools/makerpm/default.nix1
-rw-r--r--pkgs/development/tools/maligned/default.nix1
-rw-r--r--pkgs/development/tools/mani/default.nix1
-rw-r--r--pkgs/development/tools/manifest-tool/default.nix1
-rw-r--r--pkgs/development/tools/mars-mips/default.nix1
-rw-r--r--pkgs/development/tools/mask/default.nix1
-rw-r--r--pkgs/development/tools/melange/default.nix1
-rw-r--r--pkgs/development/tools/minizinc/ide.nix1
-rw-r--r--pkgs/development/tools/misc/abi-compliance-checker/default.nix1
-rw-r--r--pkgs/development/tools/misc/abi-dumper/default.nix1
-rw-r--r--pkgs/development/tools/misc/act/default.nix1
-rw-r--r--pkgs/development/tools/misc/astyle/default.nix1
-rw-r--r--pkgs/development/tools/misc/automaticcomponenttoolkit/default.nix1
-rw-r--r--pkgs/development/tools/misc/aviator/default.nix1
-rw-r--r--pkgs/development/tools/misc/bashdb/default.nix1
-rw-r--r--pkgs/development/tools/misc/bonnmotion/default.nix1
-rw-r--r--pkgs/development/tools/misc/c2ffi/default.nix1
-rw-r--r--pkgs/development/tools/misc/cbrowser/default.nix1
-rw-r--r--pkgs/development/tools/misc/cflow/default.nix1
-rw-r--r--pkgs/development/tools/misc/cgdb/default.nix1
-rw-r--r--pkgs/development/tools/misc/checkbashisms/default.nix1
-rw-r--r--pkgs/development/tools/misc/chrpath/default.nix1
-rw-r--r--pkgs/development/tools/misc/complgen/default.nix1
-rw-r--r--pkgs/development/tools/misc/cppi/default.nix1
-rw-r--r--pkgs/development/tools/misc/cproto/default.nix1
-rw-r--r--pkgs/development/tools/misc/creduce/default.nix1
-rw-r--r--pkgs/development/tools/misc/ctags/default.nix1
-rw-r--r--pkgs/development/tools/misc/d-spy/default.nix1
-rw-r--r--pkgs/development/tools/misc/dbench/default.nix1
-rw-r--r--pkgs/development/tools/misc/ddd/default.nix1
-rw-r--r--pkgs/development/tools/misc/deheader/default.nix1
-rw-r--r--pkgs/development/tools/misc/dfu-programmer/default.nix1
-rw-r--r--pkgs/development/tools/misc/direvent/default.nix1
-rw-r--r--pkgs/development/tools/misc/dura/default.nix1
-rw-r--r--pkgs/development/tools/misc/dwz/default.nix1
-rw-r--r--pkgs/development/tools/misc/edb/default.nix1
-rw-r--r--pkgs/development/tools/misc/editorconfig-checker/default.nix1
-rw-r--r--pkgs/development/tools/misc/elfinfo/default.nix1
-rw-r--r--pkgs/development/tools/misc/ezno/default.nix1
-rw-r--r--pkgs/development/tools/misc/findnewest/default.nix1
-rw-r--r--pkgs/development/tools/misc/fsatrace/default.nix1
-rw-r--r--pkgs/development/tools/misc/fswatch/default.nix1
-rw-r--r--pkgs/development/tools/misc/gdbgui/default.nix1
-rw-r--r--pkgs/development/tools/misc/gede/default.nix1
-rw-r--r--pkgs/development/tools/misc/gef/default.nix1
-rw-r--r--pkgs/development/tools/misc/gengetopt/default.nix1
-rw-r--r--pkgs/development/tools/misc/go-licenses/default.nix1
-rw-r--r--pkgs/development/tools/misc/go-md2man/default.nix1
-rw-r--r--pkgs/development/tools/misc/gob2/default.nix1
-rw-r--r--pkgs/development/tools/misc/gopatch/default.nix1
-rw-r--r--pkgs/development/tools/misc/gperf/3.0.x.nix1
-rw-r--r--pkgs/development/tools/misc/gpuvis/default.nix1
-rw-r--r--pkgs/development/tools/misc/grcov/default.nix1
-rw-r--r--pkgs/development/tools/misc/grpc-client-cli/default.nix1
-rw-r--r--pkgs/development/tools/misc/gtkdialog/default.nix1
-rw-r--r--pkgs/development/tools/misc/gtkperf/default.nix1
-rw-r--r--pkgs/development/tools/misc/help2man/default.nix1
-rw-r--r--pkgs/development/tools/misc/highlight-assertions/default.nix1
-rw-r--r--pkgs/development/tools/misc/httpref/default.nix1
-rw-r--r--pkgs/development/tools/misc/husky/default.nix1
-rw-r--r--pkgs/development/tools/misc/hydra-cli/default.nix1
-rw-r--r--pkgs/development/tools/misc/indent/default.nix1
-rw-r--r--pkgs/development/tools/misc/itstool/default.nix1
-rw-r--r--pkgs/development/tools/misc/jcli/default.nix1
-rw-r--r--pkgs/development/tools/misc/jiq/default.nix1
-rw-r--r--pkgs/development/tools/misc/k2tf/default.nix1
-rw-r--r--pkgs/development/tools/misc/kdbg/default.nix1
-rw-r--r--pkgs/development/tools/misc/kool/default.nix1
-rw-r--r--pkgs/development/tools/misc/libtree/default.nix1
-rw-r--r--pkgs/development/tools/misc/libwhich/default.nix1
-rw-r--r--pkgs/development/tools/misc/licenseclassifier/default.nix1
-rw-r--r--pkgs/development/tools/misc/linuxkit/default.nix1
-rw-r--r--pkgs/development/tools/misc/loccount/default.nix1
-rw-r--r--pkgs/development/tools/misc/lsof/default.nix1
-rw-r--r--pkgs/development/tools/misc/ltrace/default.nix1
-rw-r--r--pkgs/development/tools/misc/lttng-tools/default.nix1
-rw-r--r--pkgs/development/tools/misc/lttng-ust/generic.nix1
-rw-r--r--pkgs/development/tools/misc/micronucleus/default.nix1
-rw-r--r--pkgs/development/tools/misc/mkcert/default.nix1
-rw-r--r--pkgs/development/tools/misc/namaka/default.nix1
-rw-r--r--pkgs/development/tools/misc/ninka/default.nix1
-rw-r--r--pkgs/development/tools/misc/nix-build-uncached/default.nix1
-rw-r--r--pkgs/development/tools/misc/nixbang/default.nix1
-rw-r--r--pkgs/development/tools/misc/objconv/default.nix1
-rw-r--r--pkgs/development/tools/misc/opengrok/default.nix1
-rw-r--r--pkgs/development/tools/misc/patchelf/default.nix1
-rw-r--r--pkgs/development/tools/misc/patchelf/unstable.nix1
-rw-r--r--pkgs/development/tools/misc/patsh/default.nix1
-rw-r--r--pkgs/development/tools/misc/perfect-hash/default.nix1
-rw-r--r--pkgs/development/tools/misc/planus/default.nix1
-rw-r--r--pkgs/development/tools/misc/polylith/default.nix1
-rw-r--r--pkgs/development/tools/misc/premake/3.nix1
-rw-r--r--pkgs/development/tools/misc/premake/5.nix1
-rw-r--r--pkgs/development/tools/misc/protox/default.nix1
-rw-r--r--pkgs/development/tools/misc/ptags/default.nix1
-rw-r--r--pkgs/development/tools/misc/pwndbg/default.nix1
-rw-r--r--pkgs/development/tools/misc/pwninit/default.nix1
-rw-r--r--pkgs/development/tools/misc/qtspim/default.nix1
-rw-r--r--pkgs/development/tools/misc/regex-cli/default.nix1
-rw-r--r--pkgs/development/tools/misc/replacement/default.nix1
-rw-r--r--pkgs/development/tools/misc/reviewdog/default.nix1
-rw-r--r--pkgs/development/tools/misc/riff/default.nix1
-rw-r--r--pkgs/development/tools/misc/rolespec/default.nix1
-rw-r--r--pkgs/development/tools/misc/rsass/default.nix1
-rw-r--r--pkgs/development/tools/misc/rtss/default.nix1
-rw-r--r--pkgs/development/tools/misc/runme/default.nix1
-rw-r--r--pkgs/development/tools/misc/rustywind/default.nix1
-rw-r--r--pkgs/development/tools/misc/samply/default.nix1
-rw-r--r--pkgs/development/tools/misc/sccache/default.nix1
-rw-r--r--pkgs/development/tools/misc/scip/default.nix1
-rw-r--r--pkgs/development/tools/misc/scriptisto/default.nix1
-rw-r--r--pkgs/development/tools/misc/seer/default.nix1
-rw-r--r--pkgs/development/tools/misc/sipp/default.nix1
-rw-r--r--pkgs/development/tools/misc/slint-lsp/default.nix1
-rw-r--r--pkgs/development/tools/misc/spruce/default.nix1
-rw-r--r--pkgs/development/tools/misc/sqitch/default.nix1
-rw-r--r--pkgs/development/tools/misc/strace-analyzer/default.nix1
-rw-r--r--pkgs/development/tools/misc/swig/default.nix1
-rw-r--r--pkgs/development/tools/misc/sysbench/default.nix1
-rw-r--r--pkgs/development/tools/misc/tcptrack/default.nix1
-rw-r--r--pkgs/development/tools/misc/terracognita/default.nix1
-rw-r--r--pkgs/development/tools/misc/terraform-ls/default.nix1
-rw-r--r--pkgs/development/tools/misc/terraform-lsp/default.nix1
-rw-r--r--pkgs/development/tools/misc/terraformer/default.nix1
-rw-r--r--pkgs/development/tools/misc/terser/default.nix1
-rw-r--r--pkgs/development/tools/misc/texi2html/default.nix1
-rw-r--r--pkgs/development/tools/misc/texlab/default.nix1
-rw-r--r--pkgs/development/tools/misc/tie/default.nix1
-rw-r--r--pkgs/development/tools/misc/tockloader/default.nix1
-rw-r--r--pkgs/development/tools/misc/topiary/default.nix1
-rw-r--r--pkgs/development/tools/misc/travis/default.nix1
-rw-r--r--pkgs/development/tools/misc/ttags/default.nix1
-rw-r--r--pkgs/development/tools/misc/typical/default.nix1
-rw-r--r--pkgs/development/tools/misc/tyson/default.nix1
-rw-r--r--pkgs/development/tools/misc/uncrustify/default.nix1
-rw-r--r--pkgs/development/tools/misc/vtable-dumper/default.nix1
-rw-r--r--pkgs/development/tools/misc/wasmer-pack/default.nix1
-rw-r--r--pkgs/development/tools/misc/whatstyle/default.nix1
-rw-r--r--pkgs/development/tools/misc/wishbone-tool/default.nix1
-rw-r--r--pkgs/development/tools/misc/xxdiff/default.nix1
-rw-r--r--pkgs/development/tools/misc/xxgdb/default.nix1
-rw-r--r--pkgs/development/tools/misc/ycmd/default.nix1
-rw-r--r--pkgs/development/tools/mix2nix/default.nix1
-rw-r--r--pkgs/development/tools/mod/default.nix1
-rw-r--r--pkgs/development/tools/modd/default.nix1
-rw-r--r--pkgs/development/tools/moq/default.nix1
-rw-r--r--pkgs/development/tools/mpfshell/default.nix1
-rw-r--r--pkgs/development/tools/mutmut/default.nix1
-rw-r--r--pkgs/development/tools/nap/default.nix1
-rw-r--r--pkgs/development/tools/napi-rs-cli/default.nix1
-rw-r--r--pkgs/development/tools/nasmfmt/default.nix1
-rw-r--r--pkgs/development/tools/neil/default.nix1
-rw-r--r--pkgs/development/tools/nemiver/default.nix1
-rw-r--r--pkgs/development/tools/nodenv/default.nix1
-rw-r--r--pkgs/development/tools/norminette/default.nix1
-rw-r--r--pkgs/development/tools/npm-check/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/camlidl/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/cppo/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/crunch/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/dune-release/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/dune/2.nix1
-rw-r--r--pkgs/development/tools/ocaml/dune/3.nix1
-rw-r--r--pkgs/development/tools/ocaml/merlin/dot-merlin-reader.nix1
-rw-r--r--pkgs/development/tools/ocaml/obelisk/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/ocaml-top/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/ocp-indent/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/opaline/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/opam-publish/default.nix1
-rw-r--r--pkgs/development/tools/ocaml/opam/installer.nix1
-rw-r--r--pkgs/development/tools/ocaml/opam2json/default.nix1
-rw-r--r--pkgs/development/tools/ofono-phonesim/default.nix1
-rw-r--r--pkgs/development/tools/oh-my-posh/default.nix1
-rw-r--r--pkgs/development/tools/okteto/default.nix1
-rw-r--r--pkgs/development/tools/ols/default.nix1
-rw-r--r--pkgs/development/tools/oq/default.nix1
-rw-r--r--pkgs/development/tools/oras/default.nix1
-rw-r--r--pkgs/development/tools/oshka/default.nix1
-rw-r--r--pkgs/development/tools/osslsigncode/default.nix1
-rw-r--r--pkgs/development/tools/out-of-tree/default.nix1
-rw-r--r--pkgs/development/tools/packcc/default.nix1
-rw-r--r--pkgs/development/tools/packet/default.nix1
-rw-r--r--pkgs/development/tools/pactorio/default.nix1
-rw-r--r--pkgs/development/tools/paging-calculator/default.nix1
-rw-r--r--pkgs/development/tools/parinfer-rust/default.nix1
-rw-r--r--pkgs/development/tools/parse-cli-bin/default.nix1
-rw-r--r--pkgs/development/tools/parsing/bisonc++/default.nix1
-rw-r--r--pkgs/development/tools/parsing/flex/2.5.35.nix1
-rw-r--r--pkgs/development/tools/parsing/flexc++/default.nix1
-rw-r--r--pkgs/development/tools/parsing/jikespg/default.nix1
-rw-r--r--pkgs/development/tools/parsing/jshon/default.nix1
-rw-r--r--pkgs/development/tools/parsing/lemon/default.nix1
-rw-r--r--pkgs/development/tools/parsing/nex/default.nix1
-rw-r--r--pkgs/development/tools/parsing/ragel/default.nix1
-rw-r--r--pkgs/development/tools/parsing/tree-sitter/default.nix1
-rw-r--r--pkgs/development/tools/patatt/default.nix1
-rw-r--r--pkgs/development/tools/patcher9x/default.nix1
-rw-r--r--pkgs/development/tools/pet/default.nix1
-rw-r--r--pkgs/development/tools/pew/default.nix1
-rw-r--r--pkgs/development/tools/pgloader/default.nix1
-rw-r--r--pkgs/development/tools/pgtop/default.nix1
-rw-r--r--pkgs/development/tools/picotool/default.nix1
-rw-r--r--pkgs/development/tools/pifpaf/default.nix1
-rw-r--r--pkgs/development/tools/pigeon/default.nix1
-rw-r--r--pkgs/development/tools/pip-audit/default.nix1
-rw-r--r--pkgs/development/tools/pqrs/default.nix1
-rw-r--r--pkgs/development/tools/profiling/pprof/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-connect-go/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-dart/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-doc/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-entgrpc/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-go-grpc/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-go-vtproto/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-go/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-grpc-web/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-prost-crate/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-prost-serde/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-prost/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-rust/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-tonic/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-twirp/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-twirp_php/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-twirp_swagger/default.nix1
-rw-r--r--pkgs/development/tools/protoc-gen-twirp_typescript/default.nix1
-rw-r--r--pkgs/development/tools/protoscope/default.nix1
-rw-r--r--pkgs/development/tools/prototool/default.nix1
-rw-r--r--pkgs/development/tools/pscale/default.nix1
-rw-r--r--pkgs/development/tools/pulumictl/default.nix1
-rw-r--r--pkgs/development/tools/pup/default.nix1
-rw-r--r--pkgs/development/tools/pur/default.nix1
-rw-r--r--pkgs/development/tools/pxview/default.nix1
-rw-r--r--pkgs/development/tools/py-spy/default.nix1
-rw-r--r--pkgs/development/tools/pypi-mirror/default.nix1
-rw-r--r--pkgs/development/tools/qc/default.nix1
-rw-r--r--pkgs/development/tools/quick-lint-js/default.nix1
-rw-r--r--pkgs/development/tools/rain/default.nix1
-rw-r--r--pkgs/development/tools/rakkess/default.nix1
-rw-r--r--pkgs/development/tools/rars/default.nix1
-rw-r--r--pkgs/development/tools/rbspy/default.nix1
-rw-r--r--pkgs/development/tools/rcodesign/default.nix1
-rw-r--r--pkgs/development/tools/rdocker/default.nix1
-rw-r--r--pkgs/development/tools/react-native-debugger/default.nix1
-rw-r--r--pkgs/development/tools/rebazel/default.nix1
-rw-r--r--pkgs/development/tools/refinery-cli/default.nix1
-rw-r--r--pkgs/development/tools/reflex/default.nix1
-rw-r--r--pkgs/development/tools/refmt/default.nix1
-rw-r--r--pkgs/development/tools/refurb/default.nix1
-rw-r--r--pkgs/development/tools/reindeer/default.nix1
-rw-r--r--pkgs/development/tools/relic/default.nix1
-rw-r--r--pkgs/development/tools/remodel/default.nix1
-rw-r--r--pkgs/development/tools/renderizer/default.nix1
-rw-r--r--pkgs/development/tools/reno/default.nix1
-rw-r--r--pkgs/development/tools/rep/default.nix1
-rw-r--r--pkgs/development/tools/reshape/default.nix1
-rw-r--r--pkgs/development/tools/resolve-march-native/default.nix1
-rw-r--r--pkgs/development/tools/revive/default.nix1
-rw-r--r--pkgs/development/tools/richgo/default.nix1
-rw-r--r--pkgs/development/tools/riot-redis/default.nix1
-rw-r--r--pkgs/development/tools/rojo/default.nix1
-rw-r--r--pkgs/development/tools/ronn/default.nix1
-rw-r--r--pkgs/development/tools/rover/default.nix1
-rw-r--r--pkgs/development/tools/rq/default.nix1
-rw-r--r--pkgs/development/tools/run/default.nix1
-rw-r--r--pkgs/development/tools/rund/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-apk/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-audit/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-bazel/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-benchcmp/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-binstall/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-bisect-rustc/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-bitbake/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-bolero/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-bundle-licenses/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-bundle/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-cache/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-careful/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-chef/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-clone/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-cranky/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-crev/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-criterion/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-cyclonedx/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-deb/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-deny/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-depgraph/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-dephell/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-deps/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-diet/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-dist/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-docset/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-duplicates/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-expand/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-feature/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-fund/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-fuzz/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-geiger/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-generate/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-guppy/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-hack/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-hakari/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-hf2/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-info/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-inspect/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-insta/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-kcov/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-lambda/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-leptos/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-license/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-llvm-cov/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-llvm-lines/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-local-registry/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-lock/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-machete/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-modules/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-mommy/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-msrv/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-mutants/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-ndk/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-nextest/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-outdated/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-pgrx/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-pgx/0_6_1.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-pgx/0_7_1.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-pgx/0_7_4.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-play/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-profiler/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-public-api/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-readme/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-release/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-risczero/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-rr/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-run-bin/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-semver-checks/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-shuttle/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-sort/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-spellcheck/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-supply-chain/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-sweep/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-sync-readme/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-tally/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-tauri/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-temp/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-toml-lint/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-ui/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-valgrind/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-vet/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-wasi/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-watch/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-web/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-whatfeatures/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-wipe/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo-zigbuild/default.nix1
-rw-r--r--pkgs/development/tools/rust/cargo2junit/default.nix1
-rw-r--r--pkgs/development/tools/rust/cauwugo/default.nix1
-rw-r--r--pkgs/development/tools/rust/cbindgen/default.nix1
-rw-r--r--pkgs/development/tools/rust/crate2nix/default.nix1
-rw-r--r--pkgs/development/tools/rust/critcmp/default.nix1
-rw-r--r--pkgs/development/tools/rust/genemichaels/default.nix1
-rw-r--r--pkgs/development/tools/rust/gitlab-clippy/default.nix1
-rw-r--r--pkgs/development/tools/rust/humility/default.nix1
-rw-r--r--pkgs/development/tools/rust/leptosfmt/default.nix1
-rw-r--r--pkgs/development/tools/rust/maturin/default.nix1
-rw-r--r--pkgs/development/tools/rust/ograc/default.nix1
-rw-r--r--pkgs/development/tools/rust/panamax/default.nix1
-rw-r--r--pkgs/development/tools/rust/probe-run/default.nix1
-rw-r--r--pkgs/development/tools/rust/ra-multiplex/default.nix1
-rw-r--r--pkgs/development/tools/rust/rhack/default.nix1
-rw-r--r--pkgs/development/tools/rust/roogle/default.nix1
-rw-r--r--pkgs/development/tools/rust/rust-audit-info/default.nix1
-rw-r--r--pkgs/development/tools/rust/rust-script/default.nix1
-rw-r--r--pkgs/development/tools/rust/rustup-toolchain-install-master/default.nix1
-rw-r--r--pkgs/development/tools/rust/rusty-man/default.nix1
-rw-r--r--pkgs/development/tools/rust/rustycli/default.nix1
-rw-r--r--pkgs/development/tools/rust/specr-transpile/default.nix1
-rw-r--r--pkgs/development/tools/rust/svd2rust/default.nix1
-rw-r--r--pkgs/development/tools/rust/typeshare/default.nix1
-rw-r--r--pkgs/development/tools/sca2d/default.nix1
-rw-r--r--pkgs/development/tools/scalafix/default.nix1
-rw-r--r--pkgs/development/tools/scenebuilder/default.nix1
-rw-r--r--pkgs/development/tools/scenic-view/default.nix1
-rw-r--r--pkgs/development/tools/schemacrawler/default.nix1
-rw-r--r--pkgs/development/tools/sd-local/default.nix1
-rw-r--r--pkgs/development/tools/selene/default.nix1
-rw-r--r--pkgs/development/tools/semantic-release/default.nix1
-rw-r--r--pkgs/development/tools/sentry-cli/default.nix1
-rw-r--r--pkgs/development/tools/shellharden/default.nix1
-rw-r--r--pkgs/development/tools/sigrok-cli/default.nix1
-rw-r--r--pkgs/development/tools/simavr/default.nix1
-rw-r--r--pkgs/development/tools/skaffold/default.nix1
-rw-r--r--pkgs/development/tools/skopeo/default.nix1
-rw-r--r--pkgs/development/tools/slimerjs/default.nix1
-rw-r--r--pkgs/development/tools/smlfmt/default.nix1
-rw-r--r--pkgs/development/tools/snazy/default.nix1
-rw-r--r--pkgs/development/tools/so/default.nix1
-rw-r--r--pkgs/development/tools/solarus-quest-editor/default.nix1
-rw-r--r--pkgs/development/tools/spr/default.nix1
-rw-r--r--pkgs/development/tools/sq/default.nix1
-rw-r--r--pkgs/development/tools/sqsh/default.nix1
-rw-r--r--pkgs/development/tools/sslmate/default.nix1
-rw-r--r--pkgs/development/tools/statik/default.nix1
-rw-r--r--pkgs/development/tools/steamos-devkit/default.nix1
-rw-r--r--pkgs/development/tools/subxt/default.nix1
-rw-r--r--pkgs/development/tools/summon/default.nix1
-rw-r--r--pkgs/development/tools/swc/default.nix1
-rw-r--r--pkgs/development/tools/swiftpm2nix/default.nix1
-rw-r--r--pkgs/development/tools/systemfd/default.nix1
-rw-r--r--pkgs/development/tools/tapview/default.nix1
-rw-r--r--pkgs/development/tools/tarmac/default.nix1
-rw-r--r--pkgs/development/tools/teller/default.nix1
-rw-r--r--pkgs/development/tools/textql/default.nix1
-rw-r--r--pkgs/development/tools/tf2pulumi/default.nix1
-rw-r--r--pkgs/development/tools/the-way/default.nix1
-rw-r--r--pkgs/development/tools/thrust/default.nix1
-rw-r--r--pkgs/development/tools/time-ghc-modules/default.nix1
-rw-r--r--pkgs/development/tools/toast/default.nix1
-rw-r--r--pkgs/development/tools/toml2json/default.nix1
-rw-r--r--pkgs/development/tools/toml2nix/default.nix1
-rw-r--r--pkgs/development/tools/tora/default.nix1
-rw-r--r--pkgs/development/tools/tradcpp/default.nix1
-rw-r--r--pkgs/development/tools/trunk/default.nix1
-rw-r--r--pkgs/development/tools/ttfb/default.nix1
-rw-r--r--pkgs/development/tools/twiggy/default.nix1
-rw-r--r--pkgs/development/tools/twitch-cli/default.nix1
-rw-r--r--pkgs/development/tools/txtpbfmt/default.nix1
-rw-r--r--pkgs/development/tools/typos/default.nix1
-rw-r--r--pkgs/development/tools/uftrace/default.nix1
-rw-r--r--pkgs/development/tools/unconvert/default.nix1
-rw-r--r--pkgs/development/tools/vendir/default.nix1
-rw-r--r--pkgs/development/tools/viceroy/default.nix1
-rw-r--r--pkgs/development/tools/vndr/default.nix1
-rw-r--r--pkgs/development/tools/vultr/default.nix1
-rw-r--r--pkgs/development/tools/wails/default.nix1
-rw-r--r--pkgs/development/tools/wally-cli/default.nix1
-rw-r--r--pkgs/development/tools/wambo/default.nix1
-rw-r--r--pkgs/development/tools/wasm-pack/default.nix1
-rw-r--r--pkgs/development/tools/wasmserve/default.nix1
-rw-r--r--pkgs/development/tools/wgo/default.nix1
-rw-r--r--pkgs/development/tools/wiggle/default.nix1
-rw-r--r--pkgs/development/tools/wiiload/default.nix1
-rw-r--r--pkgs/development/tools/winhelpcgi/default.nix1
-rw-r--r--pkgs/development/tools/wire/default.nix1
-rw-r--r--pkgs/development/tools/wizer/default.nix1
-rw-r--r--pkgs/development/tools/worker-build/default.nix1
-rw-r--r--pkgs/development/tools/wp4nix/default.nix1
-rw-r--r--pkgs/development/tools/wrangler_1/default.nix1
-rw-r--r--pkgs/development/tools/xc/default.nix1
-rw-r--r--pkgs/development/tools/xqilla/default.nix1
-rw-r--r--pkgs/development/tools/yaml2json/default.nix1
-rw-r--r--pkgs/development/tools/ytt/default.nix1
-rw-r--r--pkgs/development/tools/yuicompressor/default.nix1
-rw-r--r--pkgs/development/tools/zsv/default.nix1
791 files changed, 791 insertions, 0 deletions
diff --git a/pkgs/development/tools/aapt/default.nix b/pkgs/development/tools/aapt/default.nix
index 0d59f3ae6f8a6..c02e644c158b7 100644
--- a/pkgs/development/tools/aapt/default.nix
+++ b/pkgs/development/tools/aapt/default.nix
@@ -38,6 +38,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = {
     description = "A build tool that compiles and packages Android app's resources";
+    mainProgram = "aapt2";
     homepage = "https://developer.android.com/tools/aapt2";
     license = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ linsui ];
diff --git a/pkgs/development/tools/air/default.nix b/pkgs/development/tools/air/default.nix
index ce51efafdbade..bb2c13a2e11c8 100644
--- a/pkgs/development/tools/air/default.nix
+++ b/pkgs/development/tools/air/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Live reload for Go apps";
+    mainProgram = "air";
     homepage = "https://github.com/cosmtrek/air";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ Gonzih ];
diff --git a/pkgs/development/tools/algolia-cli/default.nix b/pkgs/development/tools/algolia-cli/default.nix
index 2e01b612bda49..a7216cbfbe317 100644
--- a/pkgs/development/tools/algolia-cli/default.nix
+++ b/pkgs/development/tools/algolia-cli/default.nix
@@ -28,6 +28,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Algolia’s official CLI devtool";
+    mainProgram = "algolia";
     homepage = "https://algolia.com/doc/tools/cli/";
     license = licenses.mit;
     maintainers = [ maintainers.marsam ];
diff --git a/pkgs/development/tools/allure/default.nix b/pkgs/development/tools/allure/default.nix
index 9580a6431fd2e..82c05637c10a9 100644
--- a/pkgs/development/tools/allure/default.nix
+++ b/pkgs/development/tools/allure/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://docs.qameta.io/allure/";
     description = "Allure Report is a flexible, lightweight multi-language test reporting tool.";
+    mainProgram = "allure";
     longDescription = "Allure Report is a flexible, lightweight multi-language test reporting tool. It provides clear graphical reports and allows everyone involved in the development process to extract the maximum of information from the everyday testing process";
     license = licenses.asl20;
     maintainers = with maintainers; [ happysalada ];
diff --git a/pkgs/development/tools/altair-graphql-client/default.nix b/pkgs/development/tools/altair-graphql-client/default.nix
index f0c93071d83a0..d959c4eba3e6e 100644
--- a/pkgs/development/tools/altair-graphql-client/default.nix
+++ b/pkgs/development/tools/altair-graphql-client/default.nix
@@ -29,6 +29,7 @@ appimageTools.wrapType2 {
 
   meta = with lib; {
     description = "A feature-rich GraphQL Client IDE";
+    mainProgram = "altair";
     homepage = "https://github.com/imolorhe/altair";
     license = licenses.mit;
     maintainers = with maintainers; [ evalexpr ];
diff --git a/pkgs/development/tools/ameba/default.nix b/pkgs/development/tools/ameba/default.nix
index ef133b6f983b0..adf392669635e 100644
--- a/pkgs/development/tools/ameba/default.nix
+++ b/pkgs/development/tools/ameba/default.nix
@@ -15,6 +15,7 @@ crystal.buildCrystalPackage rec {
 
   meta = with lib; {
     description = "A static code analysis tool for Crystal";
+    mainProgram = "ameba";
     homepage = "https://crystal-ameba.github.io";
     changelog = "https://github.com/crystal-ameba/ameba/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/amqpcat/default.nix b/pkgs/development/tools/amqpcat/default.nix
index 774af838b63ae..09094fae8e10b 100644
--- a/pkgs/development/tools/amqpcat/default.nix
+++ b/pkgs/development/tools/amqpcat/default.nix
@@ -25,6 +25,7 @@ crystal.buildCrystalPackage rec {
 
   meta = with lib; {
     description = "A CLI tool for publishing to and consuming from AMQP servers";
+    mainProgram = "amqpcat";
     homepage = "https://github.com/cloudamqp/amqpcat";
     license = licenses.mit;
     maintainers = with maintainers; [ aaronjheng ];
diff --git a/pkgs/development/tools/analysis/bingrep/default.nix b/pkgs/development/tools/analysis/bingrep/default.nix
index f8cbc806250db..6a5e2041e57dd 100644
--- a/pkgs/development/tools/analysis/bingrep/default.nix
+++ b/pkgs/development/tools/analysis/bingrep/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Greps through binaries from various OSs and architectures, and colors them";
+    mainProgram = "bingrep";
     homepage = "https://github.com/m4b/bingrep";
     license = licenses.mit;
     maintainers = with maintainers; [ minijackson ];
diff --git a/pkgs/development/tools/analysis/cargo-tarpaulin/default.nix b/pkgs/development/tools/analysis/cargo-tarpaulin/default.nix
index 75f6ee44bf993..8a4a812b889cc 100644
--- a/pkgs/development/tools/analysis/cargo-tarpaulin/default.nix
+++ b/pkgs/development/tools/analysis/cargo-tarpaulin/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A code coverage tool for Rust projects";
+    mainProgram = "cargo-tarpaulin";
     homepage = "https://github.com/xd009642/tarpaulin";
     changelog = "https://github.com/xd009642/tarpaulin/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/development/tools/analysis/cccc/default.nix b/pkgs/development/tools/analysis/cccc/default.nix
index 49c8fb140e592..b0fd8769bdbe3 100644
--- a/pkgs/development/tools/analysis/cccc/default.nix
+++ b/pkgs/development/tools/analysis/cccc/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "C and C++ Code Counter";
+    mainProgram = "cccc";
     longDescription = ''
       CCCC is a tool which analyzes C++ and Java files and generates a report
       on various metrics of the code. Metrics supported include lines of code, McCabe's
diff --git a/pkgs/development/tools/analysis/checkstyle/default.nix b/pkgs/development/tools/analysis/checkstyle/default.nix
index e8d1d45069f3b..9001eef50f1a7 100644
--- a/pkgs/development/tools/analysis/checkstyle/default.nix
+++ b/pkgs/development/tools/analysis/checkstyle/default.nix
@@ -24,6 +24,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "Checks Java source against a coding standard";
+    mainProgram = "checkstyle";
     longDescription = ''
       checkstyle is a development tool to help programmers write Java code that
       adheres to a coding standard. By default it supports the Sun Code
diff --git a/pkgs/development/tools/analysis/coan/default.nix b/pkgs/development/tools/analysis/coan/default.nix
index d88a4a8a92ebc..7104074a6a747 100644
--- a/pkgs/development/tools/analysis/coan/default.nix
+++ b/pkgs/development/tools/analysis/coan/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "The C preprocessor chainsaw";
+    mainProgram = "coan";
     longDescription = ''
       A software engineering tool for analysing preprocessor-based
       configurations of C or C++ source code. Its principal use is to simplify
diff --git a/pkgs/development/tools/analysis/coz/default.nix b/pkgs/development/tools/analysis/coz/default.nix
index 17968a466bf4e..2938a60b46de5 100644
--- a/pkgs/development/tools/analysis/coz/default.nix
+++ b/pkgs/development/tools/analysis/coz/default.nix
@@ -50,6 +50,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://github.com/plasma-umass/coz";
     description = "Profiler based on casual profiling";
+    mainProgram = "coz";
     license = lib.licenses.bsd2;
     maintainers = with lib.maintainers; [ zimbatm ];
   };
diff --git a/pkgs/development/tools/analysis/cpplint/default.nix b/pkgs/development/tools/analysis/cpplint/default.nix
index 87344d747bf66..f380f7086e820 100644
--- a/pkgs/development/tools/analysis/cpplint/default.nix
+++ b/pkgs/development/tools/analysis/cpplint/default.nix
@@ -42,6 +42,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/cpplint/cpplint";
     description = "Static code checker for C++";
+    mainProgram = "cpplint";
     maintainers = [ maintainers.bhipple ];
     license = [ licenses.bsd3 ];
   };
diff --git a/pkgs/development/tools/analysis/dotenv-linter/default.nix b/pkgs/development/tools/analysis/dotenv-linter/default.nix
index fec39c962a668..75745be0148f7 100644
--- a/pkgs/development/tools/analysis/dotenv-linter/default.nix
+++ b/pkgs/development/tools/analysis/dotenv-linter/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Lightning-fast linter for .env files. Written in Rust";
+    mainProgram = "dotenv-linter";
     homepage = "https://dotenv-linter.github.io";
     license = licenses.mit;
     maintainers = with maintainers; [ humancalico ];
diff --git a/pkgs/development/tools/analysis/egypt/default.nix b/pkgs/development/tools/analysis/egypt/default.nix
index 0266502209913..5c9b4ef0453df 100644
--- a/pkgs/development/tools/analysis/egypt/default.nix
+++ b/pkgs/development/tools/analysis/egypt/default.nix
@@ -17,6 +17,7 @@ perlPackages.buildPerlPackage rec {
 
   meta = with lib; {
     description = "Tool for making call graphs of C programmes";
+    mainProgram = "egypt";
     longDescription = ''
       Egypt is a simple tool for creating call graphs of C programs. It neither
       analyzes source code nor lays out graphs. Instead, it leaves the source
diff --git a/pkgs/development/tools/analysis/evmdis/default.nix b/pkgs/development/tools/analysis/evmdis/default.nix
index eb23a0aae51fb..99181764dd049 100644
--- a/pkgs/development/tools/analysis/evmdis/default.nix
+++ b/pkgs/development/tools/analysis/evmdis/default.nix
@@ -23,6 +23,7 @@ buildGoModule {
   meta = with lib; {
     homepage = "https://github.com/Arachnid/evmdis";
     description = "Ethereum EVM disassembler";
+    mainProgram = "evmdis";
     license = [ licenses.asl20 ];
     maintainers = with maintainers; [ asymmetric ];
   };
diff --git a/pkgs/development/tools/analysis/flow/default.nix b/pkgs/development/tools/analysis/flow/default.nix
index 09ee6c65a827e..04bfa25a8ff27 100644
--- a/pkgs/development/tools/analysis/flow/default.nix
+++ b/pkgs/development/tools/analysis/flow/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A static type checker for JavaScript";
+    mainProgram = "flow";
     homepage = "https://flow.org/";
     changelog = "https://github.com/facebook/flow/blob/v${version}/Changelog.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/analysis/garcosim/tracefilegen/default.nix b/pkgs/development/tools/analysis/garcosim/tracefilegen/default.nix
index f7f5e84c012b2..4623c42e81919 100644
--- a/pkgs/development/tools/analysis/garcosim/tracefilegen/default.nix
+++ b/pkgs/development/tools/analysis/garcosim/tracefilegen/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Automatically generate all types of basic memory management operations and write into trace files";
+    mainProgram = "TraceFileGen";
     homepage = "https://github.com/GarCoSim";
     maintainers = [ maintainers.cmcdragonkai ];
     license = licenses.gpl2;
diff --git a/pkgs/development/tools/analysis/garcosim/tracefilesim/default.nix b/pkgs/development/tools/analysis/garcosim/tracefilesim/default.nix
index a76b6b9239e19..cd1682a1f5e71 100644
--- a/pkgs/development/tools/analysis/garcosim/tracefilesim/default.nix
+++ b/pkgs/development/tools/analysis/garcosim/tracefilesim/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Ease the analysis of existing memory management techniques, as well as the prototyping of new memory management techniques";
+    mainProgram = "traceFileSim";
     homepage = "https://github.com/GarCoSim";
     maintainers = [ maintainers.cmcdragonkai ];
     license = licenses.gpl2;
diff --git a/pkgs/development/tools/analysis/hotspot/default.nix b/pkgs/development/tools/analysis/hotspot/default.nix
index bbf91ec28fb46..7d36f43232835 100644
--- a/pkgs/development/tools/analysis/hotspot/default.nix
+++ b/pkgs/development/tools/analysis/hotspot/default.nix
@@ -68,6 +68,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "A GUI for Linux perf";
+    mainProgram = "hotspot";
     longDescription = ''
       hotspot is a GUI replacement for `perf report`.
       It takes a perf.data file, parses and evaluates its contents and
diff --git a/pkgs/development/tools/analysis/jacoco/default.nix b/pkgs/development/tools/analysis/jacoco/default.nix
index 3bcd7b59160f4..62835c61d0f30 100644
--- a/pkgs/development/tools/analysis/jacoco/default.nix
+++ b/pkgs/development/tools/analysis/jacoco/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A free code coverage library for Java";
+    mainProgram = "jacoco";
     homepage = "https://www.jacoco.org/jacoco";
     changelog = "https://www.jacoco.org/jacoco/trunk/doc/changes.html";
     license = licenses.epl20;
diff --git a/pkgs/development/tools/analysis/massif-visualizer/default.nix b/pkgs/development/tools/analysis/massif-visualizer/default.nix
index 78f8bbeb683e6..4e969baf37639 100644
--- a/pkgs/development/tools/analysis/massif-visualizer/default.nix
+++ b/pkgs/development/tools/analysis/massif-visualizer/default.nix
@@ -23,6 +23,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Tool that visualizes massif data generated by valgrind";
+    mainProgram = "massif-visualizer";
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = with maintainers; [ zraexy ];
diff --git a/pkgs/development/tools/analysis/snyk/default.nix b/pkgs/development/tools/analysis/snyk/default.nix
index 1078df45ae9a3..67f8516c49b9d 100644
--- a/pkgs/development/tools/analysis/snyk/default.nix
+++ b/pkgs/development/tools/analysis/snyk/default.nix
@@ -29,6 +29,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "Scans and monitors projects for security vulnerabilities";
+    mainProgram = "snyk";
     homepage = "https://snyk.io";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/analysis/splint/default.nix b/pkgs/development/tools/analysis/splint/default.nix
index 954342550eac4..e22a8b380926b 100644
--- a/pkgs/development/tools/analysis/splint/default.nix
+++ b/pkgs/development/tools/analysis/splint/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://www.splint.org/";
     description = "Annotation-assisted lightweight static analyzer for C";
+    mainProgram = "splint";
 
     longDescription = ''
       Splint is a tool for statically checking C programs for security
diff --git a/pkgs/development/tools/analysis/stylelint/default.nix b/pkgs/development/tools/analysis/stylelint/default.nix
index 23afd1aff86e7..1149bed3fd5f5 100644
--- a/pkgs/development/tools/analysis/stylelint/default.nix
+++ b/pkgs/development/tools/analysis/stylelint/default.nix
@@ -17,6 +17,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "Mighty CSS linter that helps you avoid errors and enforce conventions";
+    mainProgram = "stylelint";
     homepage = "https://stylelint.io";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/analysis/svlint/default.nix b/pkgs/development/tools/analysis/svlint/default.nix
index a879e0a81153b..07693196a956d 100644
--- a/pkgs/development/tools/analysis/svlint/default.nix
+++ b/pkgs/development/tools/analysis/svlint/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "SystemVerilog linter";
+    mainProgram = "svlint";
     homepage = "https://github.com/dalance/svlint";
     changelog = "https://github.com/dalance/svlint/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/analysis/swarm/default.nix b/pkgs/development/tools/analysis/swarm/default.nix
index cc67ce8123c81..18ecc912915f9 100644
--- a/pkgs/development/tools/analysis/swarm/default.nix
+++ b/pkgs/development/tools/analysis/swarm/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Verification script generator for Spin";
+    mainProgram = "swarm";
     homepage = "http://spinroot.com/";
     license = licenses.free;
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/analysis/tflint/default.nix b/pkgs/development/tools/analysis/tflint/default.nix
index e59d0ad11d0f0..93f3596bf171d 100644
--- a/pkgs/development/tools/analysis/tflint/default.nix
+++ b/pkgs/development/tools/analysis/tflint/default.nix
@@ -45,6 +45,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Terraform linter focused on possible errors, best practices, and so on";
+    mainProgram = "tflint";
     homepage = "https://github.com/terraform-linters/tflint";
     changelog = "https://github.com/terraform-linters/tflint/blob/v${version}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/development/tools/analysis/uefi-firmware-parser/default.nix b/pkgs/development/tools/analysis/uefi-firmware-parser/default.nix
index b879a6ef2374f..9981ac8b0388f 100644
--- a/pkgs/development/tools/analysis/uefi-firmware-parser/default.nix
+++ b/pkgs/development/tools/analysis/uefi-firmware-parser/default.nix
@@ -17,6 +17,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/theopolis/uefi-firmware-parser/";
     description = "Parse BIOS/Intel ME/UEFI firmware related structures: Volumes, FileSystems, Files, etc";
+    mainProgram = "uefi-firmware-parser";
     # MIT + license headers in some files
     license = with licenses; [
       mit
diff --git a/pkgs/development/tools/analysis/yallback/default.nix b/pkgs/development/tools/analysis/yallback/default.nix
index 4e62ff5b9ed87..19ad53d038df6 100644
--- a/pkgs/development/tools/analysis/yallback/default.nix
+++ b/pkgs/development/tools/analysis/yallback/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Callbacks for YARA rule matches";
+    mainProgram = "yallback";
     homepage = "https://github.com/abathur/yallback";
     license = licenses.mit;
     maintainers = with maintainers; [ abathur ];
diff --git a/pkgs/development/tools/apkid/default.nix b/pkgs/development/tools/apkid/default.nix
index b4c02c8eac195..d54a6564908a0 100644
--- a/pkgs/development/tools/apkid/default.nix
+++ b/pkgs/development/tools/apkid/default.nix
@@ -40,6 +40,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Android Application Identifier";
+    mainProgram = "apkid";
     homepage = "https://github.com/rednaga/APKiD";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/tools/apko/default.nix b/pkgs/development/tools/apko/default.nix
index ca056a7f4d94e..ee115b939a179 100644
--- a/pkgs/development/tools/apko/default.nix
+++ b/pkgs/development/tools/apko/default.nix
@@ -70,6 +70,7 @@ buildGoModule rec {
     homepage = "https://apko.dev/";
     changelog = "https://github.com/chainguard-dev/apko/blob/main/NEWS.md";
     description = "Build OCI images using APK directly without Dockerfile";
+    mainProgram = "apko";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk developer-guy ];
   };
diff --git a/pkgs/development/tools/apksigcopier/default.nix b/pkgs/development/tools/apksigcopier/default.nix
index 13cb0300d7f8d..1262c9eaaa75f 100644
--- a/pkgs/development/tools/apksigcopier/default.nix
+++ b/pkgs/development/tools/apksigcopier/default.nix
@@ -57,6 +57,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Copy/extract/patch android apk signatures & compare APKs";
+    mainProgram = "apksigcopier";
     longDescription = ''
       apksigcopier is a tool for copying android APK signatures from a signed
       APK to an unsigned one (in order to verify reproducible builds).
diff --git a/pkgs/development/tools/apksigner/default.nix b/pkgs/development/tools/apksigner/default.nix
index 95656dd20303c..7b2017c4d9da1 100644
--- a/pkgs/development/tools/apksigner/default.nix
+++ b/pkgs/development/tools/apksigner/default.nix
@@ -86,6 +86,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Command line tool to sign and verify Android APKs";
+    mainProgram = "apksigner";
     homepage = "https://developer.android.com/studio/command-line/apksigner";
     license = licenses.asl20;
     maintainers = with maintainers; [ linsui ];
diff --git a/pkgs/development/tools/apktool/default.nix b/pkgs/development/tools/apktool/default.nix
index f475fb54d1cbf..9af6d2c9f90b2 100644
--- a/pkgs/development/tools/apktool/default.nix
+++ b/pkgs/development/tools/apktool/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A tool for reverse engineering Android apk files";
+    mainProgram = "apktool";
     homepage = "https://ibotpeaches.github.io/Apktool/";
     changelog = "https://github.com/iBotPeaches/Apktool/releases/tag/v${version}";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
diff --git a/pkgs/development/tools/argc/default.nix b/pkgs/development/tools/argc/default.nix
index 43e9076110d9a..89ee93b1c5d86 100644
--- a/pkgs/development/tools/argc/default.nix
+++ b/pkgs/development/tools/argc/default.nix
@@ -28,6 +28,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command-line options, arguments and sub-commands parser for bash";
+    mainProgram = "argc";
     homepage = "https://github.com/sigoden/argc";
     changelog = "https://github.com/sigoden/argc/releases/tag/v${version}";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/development/tools/ashpd-demo/default.nix b/pkgs/development/tools/ashpd-demo/default.nix
index a6122e106092a..ba844a6250dd7 100644
--- a/pkgs/development/tools/ashpd-demo/default.nix
+++ b/pkgs/development/tools/ashpd-demo/default.nix
@@ -67,6 +67,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Tool for playing with XDG desktop portals";
+    mainProgram = "ashpd-demo";
     homepage = "https://github.com/bilelmoussaoui/ashpd/tree/master/ashpd-demo";
     license = licenses.mit;
     maintainers = with maintainers; [ jtojnar ];
diff --git a/pkgs/development/tools/asmfmt/default.nix b/pkgs/development/tools/asmfmt/default.nix
index a6f15c15c0b59..1c22f3ea17811 100644
--- a/pkgs/development/tools/asmfmt/default.nix
+++ b/pkgs/development/tools/asmfmt/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Go assembler formatter";
+    mainProgram = "asmfmt";
     longDescription = ''
       This will format your assembler code in a similar way that gofmt formats
       your Go code.
diff --git a/pkgs/development/tools/async/default.nix b/pkgs/development/tools/async/default.nix
index ffff8af8b6612..ba6b62281eb8a 100644
--- a/pkgs/development/tools/async/default.nix
+++ b/pkgs/development/tools/async/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to parallelize shell commands";
+    mainProgram = "async";
     longDescription = ''
       `async` is a tool to run shell commands in parallel and is designed to be
       able to quickly parallelize shell scripts with minimal changes. It was
diff --git a/pkgs/development/tools/avro-tools/default.nix b/pkgs/development/tools/avro-tools/default.nix
index 0868ab8e7f8c2..7ee16a2972e13 100644
--- a/pkgs/development/tools/avro-tools/default.nix
+++ b/pkgs/development/tools/avro-tools/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage    = "https://avro.apache.org/";
     description = "Avro command-line tools and utilities";
+    mainProgram = "avro-tools";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license     = lib.licenses.asl20;
     maintainers = with lib.maintainers; [ ];
diff --git a/pkgs/development/tools/backblaze-b2/default.nix b/pkgs/development/tools/backblaze-b2/default.nix
index 708fbb23c80e4..76301b5f4820a 100644
--- a/pkgs/development/tools/backblaze-b2/default.nix
+++ b/pkgs/development/tools/backblaze-b2/default.nix
@@ -91,6 +91,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command-line tool for accessing the Backblaze B2 storage service";
+    mainProgram = "backblaze-b2";
     homepage = "https://github.com/Backblaze/B2_Command_Line_Tool";
     changelog = "https://github.com/Backblaze/B2_Command_Line_Tool/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/bacon/default.nix b/pkgs/development/tools/bacon/default.nix
index 4deaf6a6011cd..8270e53493e7a 100644
--- a/pkgs/development/tools/bacon/default.nix
+++ b/pkgs/development/tools/bacon/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Background rust code checker";
+    mainProgram = "bacon";
     homepage = "https://github.com/Canop/bacon";
     changelog = "https://github.com/Canop/bacon/blob/v${version}/CHANGELOG.md";
     license = licenses.agpl3Only;
diff --git a/pkgs/development/tools/bashate/default.nix b/pkgs/development/tools/bashate/default.nix
index f46e9667cbef2..69538a923d140 100644
--- a/pkgs/development/tools/bashate/default.nix
+++ b/pkgs/development/tools/bashate/default.nix
@@ -38,6 +38,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Style enforcement for bash programs";
+    mainProgram = "bashate";
     homepage = "https://opendev.org/openstack/bashate";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/tools/bazelisk/default.nix b/pkgs/development/tools/bazelisk/default.nix
index be59f6686d5bb..8ca8b416c7023 100644
--- a/pkgs/development/tools/bazelisk/default.nix
+++ b/pkgs/development/tools/bazelisk/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A user-friendly launcher for Bazel";
+    mainProgram = "bazelisk";
     longDescription = ''
       BEWARE: This package does not work on NixOS.
     '';
diff --git a/pkgs/development/tools/bbin/default.nix b/pkgs/development/tools/bbin/default.nix
index ab8638e5033c1..7edce1e48998b 100644
--- a/pkgs/development/tools/bbin/default.nix
+++ b/pkgs/development/tools/bbin/default.nix
@@ -41,6 +41,7 @@ stdenvNoCC.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/babashka/bbin";
     description = "Install any Babashka script or project with one command";
+    mainProgram = "bbin";
     license = licenses.mit;
     inherit (babashka-unwrapped.meta) platforms;
     maintainers = with maintainers; [ sohalt ];
diff --git a/pkgs/development/tools/benthos/default.nix b/pkgs/development/tools/benthos/default.nix
index 12466c8cfe82e..12d132a38e080 100644
--- a/pkgs/development/tools/benthos/default.nix
+++ b/pkgs/development/tools/benthos/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fancy stream processing made operationally mundane";
+    mainProgram = "benthos";
     homepage = "https://www.benthos.dev";
     changelog = "https://github.com/benthosdev/benthos/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/bin2c/default.nix b/pkgs/development/tools/bin2c/default.nix
index 02039caf457c5..2528b1ea09617 100644
--- a/pkgs/development/tools/bin2c/default.nix
+++ b/pkgs/development/tools/bin2c/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Embed binary & text files inside C binaries";
+    mainProgram = "bin2c";
     homepage = "https://github.com/adobe/bin2c";
     license = licenses.asl20;
     maintainers = [ maintainers.shadowrz ];
diff --git a/pkgs/development/tools/bingo/default.nix b/pkgs/development/tools/bingo/default.nix
index f12f0709ac7c8..9d9863ca32036 100644
--- a/pkgs/development/tools/bingo/default.nix
+++ b/pkgs/development/tools/bingo/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Like `go get` but for Go tools! CI Automating versioning of Go binaries in a nested, isolated Go modules.";
+    mainProgram = "bingo";
     homepage = "https://github.com/bwplotka/bingo";
     license = licenses.asl20;
     maintainers = with maintainers; [ aaronjheng ];
diff --git a/pkgs/development/tools/bloaty/default.nix b/pkgs/development/tools/bloaty/default.nix
index 96a6d28e97877..147d882d50af2 100644
--- a/pkgs/development/tools/bloaty/default.nix
+++ b/pkgs/development/tools/bloaty/default.nix
@@ -56,6 +56,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "a size profiler for binaries";
+    mainProgram = "bloaty";
     homepage = "https://github.com/google/bloaty";
     license = licenses.asl20;
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/bodyclose/default.nix b/pkgs/development/tools/bodyclose/default.nix
index e252223b883f6..6f8686a7b7b1e 100644
--- a/pkgs/development/tools/bodyclose/default.nix
+++ b/pkgs/development/tools/bodyclose/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Golang linter to check whether HTTP response body is closed and a re-use of TCP connection is not blocked";
+    mainProgram = "bodyclose";
     homepage = "https://github.com/timakin/bodyclose";
     license = licenses.mit;
     maintainers = with maintainers; [ meain ];
diff --git a/pkgs/development/tools/bpf-linker/default.nix b/pkgs/development/tools/bpf-linker/default.nix
index 8c5cb8863e3d3..2eb346aaa9ed6 100644
--- a/pkgs/development/tools/bpf-linker/default.nix
+++ b/pkgs/development/tools/bpf-linker/default.nix
@@ -38,6 +38,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Simple BPF static linker";
+    mainProgram = "bpf-linker";
     homepage = "https://github.com/aya-rs/bpf-linker";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ nickcao ];
diff --git a/pkgs/development/tools/build-managers/apache-ant/default.nix b/pkgs/development/tools/build-managers/apache-ant/default.nix
index 3cf8804999440..9e3ff98f285d2 100644
--- a/pkgs/development/tools/build-managers/apache-ant/default.nix
+++ b/pkgs/development/tools/build-managers/apache-ant/default.nix
@@ -81,6 +81,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://ant.apache.org/";
     description = "A Java-based build tool";
+    mainProgram = "ant";
 
     longDescription = ''
       Apache Ant is a Java-based build tool.  In theory, it is kind of like
diff --git a/pkgs/development/tools/build-managers/bam/default.nix b/pkgs/development/tools/build-managers/bam/default.nix
index 556725cca6c4d..c435e2fa16ec2 100644
--- a/pkgs/development/tools/build-managers/bam/default.nix
+++ b/pkgs/development/tools/build-managers/bam/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Yet another build manager";
+    mainProgram = "bam";
     maintainers = with maintainers;
     [
       raskin
diff --git a/pkgs/development/tools/build-managers/bazel/bazel-remote/default.nix b/pkgs/development/tools/build-managers/bazel/bazel-remote/default.nix
index 1692058dcac8b..9f1058bd9e486 100644
--- a/pkgs/development/tools/build-managers/bazel/bazel-remote/default.nix
+++ b/pkgs/development/tools/build-managers/bazel/bazel-remote/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/buchgr/bazel-remote";
     description = "A remote HTTP/1.1 cache for Bazel";
+    mainProgram = "bazel-remote";
     changelog = "https://github.com/buchgr/bazel-remote/releases/tag/v${version}";
     license = licenses.asl20;
     maintainers = lib.teams.bazel.members;
diff --git a/pkgs/development/tools/build-managers/bear/default.nix b/pkgs/development/tools/build-managers/bear/default.nix
index 431f7b1773f62..0e8b20c7a9d48 100644
--- a/pkgs/development/tools/build-managers/bear/default.nix
+++ b/pkgs/development/tools/build-managers/bear/default.nix
@@ -80,6 +80,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tool that generates a compilation database for clang tooling";
+    mainProgram = "bear";
     longDescription = ''
       Note: the bear command is very useful to generate compilation commands
       e.g. for YouCompleteMe.  You just enter your development nix-shell
diff --git a/pkgs/development/tools/build-managers/bloop/default.nix b/pkgs/development/tools/build-managers/bloop/default.nix
index e56344c400039..3870fa3f60a3a 100644
--- a/pkgs/development/tools/build-managers/bloop/default.nix
+++ b/pkgs/development/tools/build-managers/bloop/default.nix
@@ -66,6 +66,7 @@ stdenv.mkDerivation rec {
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.asl20;
     description = "A Scala build server and command-line tool to make the compile and test developer workflows fast and productive in a build-tool-agnostic way";
+    mainProgram = "bloop";
     platforms = [ "x86_64-linux" "x86_64-darwin" ];
     maintainers = with maintainers; [ kubukoz tomahna ];
   };
diff --git a/pkgs/development/tools/build-managers/bob/default.nix b/pkgs/development/tools/build-managers/bob/default.nix
index 97e67ce977985..6821dc19116fb 100644
--- a/pkgs/development/tools/build-managers/bob/default.nix
+++ b/pkgs/development/tools/build-managers/bob/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A build system for microservices";
+    mainProgram = "bob";
     homepage = "https://bob.build";
     license = licenses.asl20;
     maintainers = with maintainers; [ zuzuleinen ];
diff --git a/pkgs/development/tools/build-managers/boot/default.nix b/pkgs/development/tools/build-managers/boot/default.nix
index 1590906206c16..dd296aa83188e 100644
--- a/pkgs/development/tools/build-managers/boot/default.nix
+++ b/pkgs/development/tools/build-managers/boot/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Build tooling for Clojure";
+    mainProgram = "boot";
     homepage = "https://boot-clj.github.io/";
     license = licenses.epl10;
     platforms = platforms.linux ++ platforms.darwin;
diff --git a/pkgs/development/tools/build-managers/buck/default.nix b/pkgs/development/tools/build-managers/buck/default.nix
index d283e1e321db7..dff44f4cd2405 100644
--- a/pkgs/development/tools/build-managers/buck/default.nix
+++ b/pkgs/development/tools/build-managers/buck/default.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://buck.build/";
     description = "A high-performance build tool";
+    mainProgram = "buck";
     maintainers = [ maintainers.jgertm maintainers.marsam ];
     license = licenses.asl20;
     platforms = platforms.all;
diff --git a/pkgs/development/tools/build-managers/build2/bdep.nix b/pkgs/development/tools/build-managers/build2/bdep.nix
index 904217e29d3a2..90a58e4f1b517 100644
--- a/pkgs/development/tools/build-managers/build2/bdep.nix
+++ b/pkgs/development/tools/build-managers/build2/bdep.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "build2 project dependency manager";
+    mainProgram = "bdep";
     # https://build2.org/bdep/doc/bdep.xhtml
     longDescription = ''
       The build2 project dependency manager is used to manage the dependencies
diff --git a/pkgs/development/tools/build-managers/build2/bpkg.nix b/pkgs/development/tools/build-managers/build2/bpkg.nix
index 60b9d820ac2ff..e395322df420f 100644
--- a/pkgs/development/tools/build-managers/build2/bpkg.nix
+++ b/pkgs/development/tools/build-managers/build2/bpkg.nix
@@ -55,6 +55,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "build2 package dependency manager";
+    mainProgram = "bpkg";
     # https://build2.org/bpkg/doc/bpkg.xhtml
     longDescription = ''
       The build2 package dependency manager is used to manipulate build
diff --git a/pkgs/development/tools/build-managers/conan/default.nix b/pkgs/development/tools/build-managers/conan/default.nix
index 7226d4e3340ac..a2f007a0fcf4f 100644
--- a/pkgs/development/tools/build-managers/conan/default.nix
+++ b/pkgs/development/tools/build-managers/conan/default.nix
@@ -107,6 +107,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Decentralized and portable C/C++ package manager";
+    mainProgram = "conan";
     homepage = "https://conan.io";
     changelog = "https://github.com/conan-io/conan/releases/tag/${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/build-managers/dub/default.nix b/pkgs/development/tools/build-managers/dub/default.nix
index 15954c61c15e3..d815a9515dc6e 100644
--- a/pkgs/development/tools/build-managers/dub/default.nix
+++ b/pkgs/development/tools/build-managers/dub/default.nix
@@ -149,6 +149,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Package and build manager for D applications and libraries";
+    mainProgram = "dub";
     homepage = "https://code.dlang.org/";
     license = licenses.mit;
     maintainers = with maintainers; [ jtbx ];
diff --git a/pkgs/development/tools/build-managers/gn/generic.nix b/pkgs/development/tools/build-managers/gn/generic.nix
index bb72e4bb20b4d..d1fac9ecc57db 100644
--- a/pkgs/development/tools/build-managers/gn/generic.nix
+++ b/pkgs/development/tools/build-managers/gn/generic.nix
@@ -53,6 +53,7 @@ in disable-warnings-if-gcc13 (stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A meta-build system that generates build files for Ninja";
+    mainProgram = "gn";
     homepage = "https://gn.googlesource.com/gn";
     license = licenses.bsd3;
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/build-managers/kati/default.nix b/pkgs/development/tools/build-managers/kati/default.nix
index ed5923e74d0af..dba8eb6381fa5 100644
--- a/pkgs/development/tools/build-managers/kati/default.nix
+++ b/pkgs/development/tools/build-managers/kati/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "An experimental GNU make clone";
+    mainProgram = "ckati";
     homepage = "https://github.com/google/kati";
     platforms = platforms.all;
     license = licenses.asl20;
diff --git a/pkgs/development/tools/build-managers/knit/default.nix b/pkgs/development/tools/build-managers/knit/default.nix
index df2898239b789..6a2779cd7136d 100644
--- a/pkgs/development/tools/build-managers/knit/default.nix
+++ b/pkgs/development/tools/build-managers/knit/default.nix
@@ -28,6 +28,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A simple and flexible build tool using Lua, similar to make/mk";
+    mainProgram = "knit";
     homepage = "https://github.com/zyedidia/knit";
     changelog = "https://github.com/zyedidia/knit/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/build-managers/mage/default.nix b/pkgs/development/tools/build-managers/mage/default.nix
index 2fdf1418f8ff8..066bbef7d6262 100644
--- a/pkgs/development/tools/build-managers/mage/default.nix
+++ b/pkgs/development/tools/build-managers/mage/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A Make/Rake-like Build Tool Using Go";
+    mainProgram = "mage";
     homepage = "https://magefile.org/";
     license = licenses.asl20;
     maintainers = with maintainers; [ swdunlop ];
diff --git a/pkgs/development/tools/build-managers/mill/default.nix b/pkgs/development/tools/build-managers/mill/default.nix
index 4afc58bff65f4..fc071b7e21224 100644
--- a/pkgs/development/tools/build-managers/mill/default.nix
+++ b/pkgs/development/tools/build-managers/mill/default.nix
@@ -39,6 +39,7 @@ stdenv.mkDerivation rec {
     homepage = "https://com-lihaoyi.github.io/mill/";
     license = licenses.mit;
     description = "A build tool for Scala, Java and more";
+    mainProgram = "mill";
     longDescription = ''
       Mill is a build tool borrowing ideas from modern tools like Bazel, to let you build
       your projects in a way that's simple, fast, and predictable. Mill has built in
diff --git a/pkgs/development/tools/build-managers/moon/default.nix b/pkgs/development/tools/build-managers/moon/default.nix
index aa084d46ae73f..949b405b9923d 100644
--- a/pkgs/development/tools/build-managers/moon/default.nix
+++ b/pkgs/development/tools/build-managers/moon/default.nix
@@ -37,6 +37,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A task runner and repo management tool for the web ecosystem, written in Rust";
+    mainProgram = "moon";
     homepage = "https://github.com/moonrepo/moon";
     license = licenses.mit;
     maintainers = with maintainers; [ flemzord ];
diff --git a/pkgs/development/tools/build-managers/msbuild/default.nix b/pkgs/development/tools/build-managers/msbuild/default.nix
index 1b561470af79d..1f5261649b855 100644
--- a/pkgs/development/tools/build-managers/msbuild/default.nix
+++ b/pkgs/development/tools/build-managers/msbuild/default.nix
@@ -150,6 +150,7 @@ EOF
 
   meta = with lib; {
     description = "Mono version of Microsoft Build Engine, the build platform for .NET, and Visual Studio";
+    mainProgram = "msbuild";
     homepage = "https://github.com/mono/msbuild";
     sourceProvenance = with sourceTypes; [
       fromSource
diff --git a/pkgs/development/tools/build-managers/ninja/default.nix b/pkgs/development/tools/build-managers/ninja/default.nix
index 7c2c79bf9e92a..3402bcfca625f 100644
--- a/pkgs/development/tools/build-managers/ninja/default.nix
+++ b/pkgs/development/tools/build-managers/ninja/default.nix
@@ -93,6 +93,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Small build system with a focus on speed";
+    mainProgram = "ninja";
     longDescription = ''
       Ninja is a small build system with a focus on speed. It differs from
       other build systems in two major respects: it is designed to have its
diff --git a/pkgs/development/tools/build-managers/rebar/default.nix b/pkgs/development/tools/build-managers/rebar/default.nix
index 2bdafa5fcfb09..b73553466cbb8 100644
--- a/pkgs/development/tools/build-managers/rebar/default.nix
+++ b/pkgs/development/tools/build-managers/rebar/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://github.com/rebar/rebar";
     description = "Erlang build tool that makes it easy to compile and test Erlang applications, port drivers and releases";
+    mainProgram = "rebar";
 
     longDescription = ''
       rebar is a self-contained Erlang script, so it's easy to
diff --git a/pkgs/development/tools/build-managers/rebar3/default.nix b/pkgs/development/tools/build-managers/rebar3/default.nix
index b39a9537ee4cf..0dd651a9d3f0c 100644
--- a/pkgs/development/tools/build-managers/rebar3/default.nix
+++ b/pkgs/development/tools/build-managers/rebar3/default.nix
@@ -53,6 +53,7 @@ let
     meta = {
       homepage = "https://github.com/rebar/rebar3";
       description = "Erlang build tool that makes it easy to compile and test Erlang applications, port drivers and releases";
+      mainProgram = "rebar3";
 
       longDescription = ''
         rebar is a self-contained Erlang script, so it's easy to distribute or
diff --git a/pkgs/development/tools/build-managers/remake/default.nix b/pkgs/development/tools/build-managers/remake/default.nix
index f2589c1e75c63..886034e4a270c 100644
--- a/pkgs/development/tools/build-managers/remake/default.nix
+++ b/pkgs/development/tools/build-managers/remake/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
     homepage = "https://bashdb.sourceforge.net/remake/";
     license = lib.licenses.gpl3Plus;
     description = "GNU Make with comprehensible tracing and a debugger";
+    mainProgram = "remake";
     platforms = with lib.platforms; linux ++ darwin;
     maintainers = with lib.maintainers; [ bjornfor shamilton ];
   };
diff --git a/pkgs/development/tools/build-managers/scala-cli/default.nix b/pkgs/development/tools/build-managers/scala-cli/default.nix
index 293607bf3d6b9..5e2058899393c 100644
--- a/pkgs/development/tools/build-managers/scala-cli/default.nix
+++ b/pkgs/development/tools/build-managers/scala-cli/default.nix
@@ -74,6 +74,7 @@ stdenv.mkDerivation {
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.asl20;
     description = "Command-line tool to interact with the Scala language";
+    mainProgram = "scala-cli";
     maintainers = [ maintainers.kubukoz ];
     inherit platforms;
   };
diff --git a/pkgs/development/tools/build-managers/shards/default.nix b/pkgs/development/tools/build-managers/shards/default.nix
index 721a70d22457c..94e0bc9a27847 100644
--- a/pkgs/development/tools/build-managers/shards/default.nix
+++ b/pkgs/development/tools/build-managers/shards/default.nix
@@ -28,6 +28,7 @@ let
 
       meta = with lib; {
         description = "Dependency manager for the Crystal language";
+        mainProgram = "shards";
         license = licenses.asl20;
         maintainers = with maintainers; [ peterhoeg ];
         inherit (crystal.meta) homepage platforms;
diff --git a/pkgs/development/tools/buildah/default.nix b/pkgs/development/tools/buildah/default.nix
index f8f9a6b1decfa..d91b5b24343f6 100644
--- a/pkgs/development/tools/buildah/default.nix
+++ b/pkgs/development/tools/buildah/default.nix
@@ -70,6 +70,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool which facilitates building OCI images";
+    mainProgram = "buildah";
     homepage = "https://buildah.io/";
     changelog = "https://github.com/containers/buildah/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/buildpack/default.nix b/pkgs/development/tools/buildpack/default.nix
index f097695c69e18..d2eb4cc531c51 100644
--- a/pkgs/development/tools/buildpack/default.nix
+++ b/pkgs/development/tools/buildpack/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
     homepage = "https://buildpacks.io/";
     changelog = "https://github.com/buildpacks/pack/releases/tag/v${version}";
     description = "CLI for building apps using Cloud Native Buildpacks";
+    mainProgram = "pack";
     license = licenses.asl20;
     maintainers = [ maintainers.marsam ];
   };
diff --git a/pkgs/development/tools/bundletool/default.nix b/pkgs/development/tools/bundletool/default.nix
index 56c3a72ea7f14..46aa9902e7179 100644
--- a/pkgs/development/tools/bundletool/default.nix
+++ b/pkgs/development/tools/bundletool/default.nix
@@ -21,6 +21,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "Command-line tool to manipulate Android App Bundles";
+    mainProgram = "bundletool";
     homepage = "https://developer.android.com/studio/command-line/bundletool";
     changelog = "https://github.com/google/bundletool/releases/tag/${version}";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
diff --git a/pkgs/development/tools/butane/default.nix b/pkgs/development/tools/butane/default.nix
index 4e9dc2d59dc14..3c13c8971af80 100644
--- a/pkgs/development/tools/butane/default.nix
+++ b/pkgs/development/tools/butane/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Translates human-readable Butane configs into machine-readable Ignition configs";
+    mainProgram = "butane";
     license = licenses.asl20;
     homepage = "https://github.com/coreos/butane";
     maintainers = with maintainers; [ elijahcaine ruuda ];
diff --git a/pkgs/development/tools/cambalache/default.nix b/pkgs/development/tools/cambalache/default.nix
index a6918b0476e4d..757ab10583a77 100644
--- a/pkgs/development/tools/cambalache/default.nix
+++ b/pkgs/development/tools/cambalache/default.nix
@@ -95,6 +95,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://gitlab.gnome.org/jpu/cambalache";
     description = "RAD tool for GTK 4 and 3 with data model first philosophy";
+    mainProgram = "cambalache";
     maintainers = teams.gnome.members;
     license = with licenses; [
       lgpl21Only # Cambalache
diff --git a/pkgs/development/tools/capnproto-java/default.nix b/pkgs/development/tools/capnproto-java/default.nix
index b96aa44a779cd..fa59a5ad2abf5 100644
--- a/pkgs/development/tools/capnproto-java/default.nix
+++ b/pkgs/development/tools/capnproto-java/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Cap'n Proto codegen plugin for Java";
+    mainProgram = "capnpc-java";
     longDescription = "Only includes compiler plugin, the Java runtime/library that the generated code will link to must be built separately with Maven.";
     homepage = "https://dwrensha.github.io/capnproto-java/index.html";
     license = licenses.mit;
diff --git a/pkgs/development/tools/castxml/default.nix b/pkgs/development/tools/castxml/default.nix
index 1a7c15d9a963f..0547df5d4cc50 100644
--- a/pkgs/development/tools/castxml/default.nix
+++ b/pkgs/development/tools/castxml/default.nix
@@ -64,6 +64,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     homepage = "https://github.com/CastXML/CastXML";
     description = "C-family Abstract Syntax Tree XML Output";
+    mainProgram = "castxml";
     license = licenses.asl20;
     maintainers = with maintainers; [ AndersonTorres ];
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/cbfmt/default.nix b/pkgs/development/tools/cbfmt/default.nix
index 17340d7a7a760..f8ff35d4bc1d5 100644
--- a/pkgs/development/tools/cbfmt/default.nix
+++ b/pkgs/development/tools/cbfmt/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to format codeblocks inside markdown and org documents";
+    mainProgram = "cbfmt";
     homepage = "https://github.com/lukas-reineke/cbfmt";
     license = licenses.mit;
     maintainers = [ maintainers.stehessel ];
diff --git a/pkgs/development/tools/cdecrypt/default.nix b/pkgs/development/tools/cdecrypt/default.nix
index bcbe34c886c1f..9f742a34a002e 100644
--- a/pkgs/development/tools/cdecrypt/default.nix
+++ b/pkgs/development/tools/cdecrypt/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A utility that decrypts Wii U NUS content files";
+    mainProgram = "cdecrypt";
     homepage = "https://github.com/VitaSmith/cdecrypt";
     changelog = "https://github.com/VitaSmith/cdecrypt/releases/tag/v${version}";
     license = licenses.gpl3Plus;
diff --git a/pkgs/development/tools/changie/default.nix b/pkgs/development/tools/changie/default.nix
index bd52641f2be5d..a4050744f09aa 100644
--- a/pkgs/development/tools/changie/default.nix
+++ b/pkgs/development/tools/changie/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Automated changelog tool for preparing releases with lots of customization options";
+    mainProgram = "changie";
     homepage = "https://changie.dev";
     changelog = "https://github.com/miniscruff/changie/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/check-jsonschema/default.nix b/pkgs/development/tools/check-jsonschema/default.nix
index 54b6b8926bf13..06a0abbf55625 100644
--- a/pkgs/development/tools/check-jsonschema/default.nix
+++ b/pkgs/development/tools/check-jsonschema/default.nix
@@ -41,6 +41,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "A jsonschema CLI and pre-commit hook";
+    mainProgram = "check-jsonschema";
     homepage = "https://github.com/python-jsonschema/check-jsonschema";
     changelog = "https://github.com/python-jsonschema/check-jsonschema/blob/${version}/CHANGELOG.rst";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/checkmake/default.nix b/pkgs/development/tools/checkmake/default.nix
index f25a825e37d9e..8e4d4c326141e 100644
--- a/pkgs/development/tools/checkmake/default.nix
+++ b/pkgs/development/tools/checkmake/default.nix
@@ -48,6 +48,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Experimental tool for linting and checking Makefiles";
+    mainProgram = "checkmake";
     homepage = "https://github.com/mrtazz/checkmake";
     changelog = "https://github.com/mrtazz/checkmake/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/checkmate/default.nix b/pkgs/development/tools/checkmate/default.nix
index 82fb04f344b05..ca036f967661c 100644
--- a/pkgs/development/tools/checkmate/default.nix
+++ b/pkgs/development/tools/checkmate/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Pluggable code security analysis tool";
+    mainProgram = "checkmate";
     homepage = "https://github.com/adedayo/checkmate";
     changelog = "https://github.com/adedayo/checkmate/releases/tag/v${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/tools/chit/default.nix b/pkgs/development/tools/chit/default.nix
index 5abc6e49aa0e8..d3f0ffa2e3b56 100644
--- a/pkgs/development/tools/chit/default.nix
+++ b/pkgs/development/tools/chit/default.nix
@@ -37,6 +37,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Crate help in terminal: A tool for looking up details about rust crates without going to crates.io";
+    mainProgram = "chit";
     longDescription = ''
       Chit helps answer these questions:
 
diff --git a/pkgs/development/tools/circup/default.nix b/pkgs/development/tools/circup/default.nix
index b6aa75a36fc8c..e63e0d06ea14c 100644
--- a/pkgs/development/tools/circup/default.nix
+++ b/pkgs/development/tools/circup/default.nix
@@ -48,6 +48,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "CircuitPython library updater";
+    mainProgram = "circup";
     homepage = "https://github.com/adafruit/circup";
     changelog = "https://github.com/adafruit/circup/releases/tag/${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/development/tools/clickable/default.nix b/pkgs/development/tools/clickable/default.nix
index dfbac9aac0bab..82a276f9aff0e 100644
--- a/pkgs/development/tools/clickable/default.nix
+++ b/pkgs/development/tools/clickable/default.nix
@@ -76,6 +76,7 @@ buildPythonPackage rec {
 
   meta = {
     description = "A build system for Ubuntu Touch apps";
+    mainProgram = "clickable";
     homepage = "https://clickable-ut.dev";
     changelog = "https://clickable-ut.dev/en/latest/changelog.html";
     license = lib.licenses.gpl3Only;
diff --git a/pkgs/development/tools/cloud-nuke/default.nix b/pkgs/development/tools/cloud-nuke/default.nix
index fb1be734830a6..0891cbd57f15e 100644
--- a/pkgs/development/tools/cloud-nuke/default.nix
+++ b/pkgs/development/tools/cloud-nuke/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/gruntwork-io/cloud-nuke";
     description = "A tool for cleaning up your cloud accounts by nuking (deleting) all resources within it";
+    mainProgram = "cloud-nuke";
     changelog = "https://github.com/gruntwork-io/cloud-nuke/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ marsam ];
diff --git a/pkgs/development/tools/cloudsmith-cli/default.nix b/pkgs/development/tools/cloudsmith-cli/default.nix
index 48952c0616fbe..58c01f7078a37 100644
--- a/pkgs/development/tools/cloudsmith-cli/default.nix
+++ b/pkgs/development/tools/cloudsmith-cli/default.nix
@@ -40,6 +40,7 @@ python3.pkgs.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://help.cloudsmith.io/docs/cli/";
     description = "Cloudsmith Command Line Interface";
+    mainProgram = "cloudsmith";
     changelog = "https://github.com/cloudsmith-io/cloudsmith-cli/blob/v${version}/CHANGELOG.md";
     maintainers = with maintainers; [ ];
     license = licenses.asl20;
diff --git a/pkgs/development/tools/cobra-cli/default.nix b/pkgs/development/tools/cobra-cli/default.nix
index 5d123a046dc56..d94ef657d7414 100644
--- a/pkgs/development/tools/cobra-cli/default.nix
+++ b/pkgs/development/tools/cobra-cli/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Cobra CLI tool to generate applications and commands";
+    mainProgram = "cobra-cli";
     homepage = "https://github.com/spf13/cobra-cli/";
     changelog = "https://github.com/spf13/cobra-cli/releases/tag/${version}";
     license = licenses.afl20;
diff --git a/pkgs/development/tools/cocogitto/default.nix b/pkgs/development/tools/cocogitto/default.nix
index 4bfa0f11cac9c..e193ce4e09414 100644
--- a/pkgs/development/tools/cocogitto/default.nix
+++ b/pkgs/development/tools/cocogitto/default.nix
@@ -30,6 +30,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A set of cli tools for the conventional commit and semver specifications";
+    mainProgram = "cog";
     homepage = "https://github.com/oknozor/cocogitto";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/code-maat/default.nix b/pkgs/development/tools/code-maat/default.nix
index 4d7be6c4b0612..c5aa3c0b5d842 100644
--- a/pkgs/development/tools/code-maat/default.nix
+++ b/pkgs/development/tools/code-maat/default.nix
@@ -37,6 +37,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "A command line tool to mine and analyze data from version-control systems";
+    mainProgram = "code-maat";
     homepage = "https://github.com/adamtornhill/code-maat";
     platforms = platforms.unix;
     license = licenses.gpl3;
diff --git a/pkgs/development/tools/codeowners/default.nix b/pkgs/development/tools/codeowners/default.nix
index 186b8b4fdb737..3a92def28895d 100644
--- a/pkgs/development/tools/codeowners/default.nix
+++ b/pkgs/development/tools/codeowners/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A CLI and Go library for Github's CODEOWNERS file";
+    mainProgram = "codeowners";
     homepage = "https://github.com/hmarr/codeowners";
     license = licenses.mit;
     maintainers = with maintainers; [ yorickvp ];
diff --git a/pkgs/development/tools/codespell/default.nix b/pkgs/development/tools/codespell/default.nix
index 158e0971e633b..e76a980f7427c 100644
--- a/pkgs/development/tools/codespell/default.nix
+++ b/pkgs/development/tools/codespell/default.nix
@@ -48,6 +48,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Fix common misspellings in source code";
+    mainProgram = "codespell";
     homepage = "https://github.com/codespell-project/codespell";
     license = with licenses; [ gpl2Only cc-by-sa-30 ];
     maintainers = with maintainers; [ johnazoidberg SuperSandro2000 ];
diff --git a/pkgs/development/tools/comby/default.nix b/pkgs/development/tools/comby/default.nix
index ac2d36c92391f..f6f7357c1557b 100644
--- a/pkgs/development/tools/comby/default.nix
+++ b/pkgs/development/tools/comby/default.nix
@@ -47,6 +47,7 @@ let
 
       meta = {
         description = "Tool for searching and changing code structure";
+        mainProgram = "comby";
         license = lib.licenses.asl20;
         homepage = "https://comby.dev";
       };
diff --git a/pkgs/development/tools/conftest/default.nix b/pkgs/development/tools/conftest/default.nix
index 2f1386e9d5af7..da3c2cc54f72d 100644
--- a/pkgs/development/tools/conftest/default.nix
+++ b/pkgs/development/tools/conftest/default.nix
@@ -45,6 +45,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Write tests against structured configuration data";
+    mainProgram = "conftest";
     downloadPage = "https://github.com/open-policy-agent/conftest";
     homepage = "https://www.conftest.dev";
     changelog = "https://github.com/open-policy-agent/conftest/releases/tag/v${version}";
diff --git a/pkgs/development/tools/continuous-integration/buildkite-test-collector-rust/default.nix b/pkgs/development/tools/continuous-integration/buildkite-test-collector-rust/default.nix
index 7f1e6c55f5fac..bae57ea74d79e 100644
--- a/pkgs/development/tools/continuous-integration/buildkite-test-collector-rust/default.nix
+++ b/pkgs/development/tools/continuous-integration/buildkite-test-collector-rust/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Rust adapter for Buildkite Test Analytics";
+    mainProgram = "buildkite-test-collector";
     homepage = "https://buildkite.com/test-analytics";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ jfroche ];
diff --git a/pkgs/development/tools/continuous-integration/drone/default.nix b/pkgs/development/tools/continuous-integration/drone/default.nix
index 29a593acc306a..1c85e501e6b0b 100644
--- a/pkgs/development/tools/continuous-integration/drone/default.nix
+++ b/pkgs/development/tools/continuous-integration/drone/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Continuous Integration platform built on container technology";
+    mainProgram = "drone-server";
     homepage = "https://github.com/harness/drone";
     maintainers = with maintainers; [ elohmeier vdemeester techknowlogick ];
     license = with licenses; if enableUnfree then unfreeRedistributable else asl20;
diff --git a/pkgs/development/tools/continuous-integration/fly/default.nix b/pkgs/development/tools/continuous-integration/fly/default.nix
index f53b0810f6f77..42aa1e5ab71d8 100644
--- a/pkgs/development/tools/continuous-integration/fly/default.nix
+++ b/pkgs/development/tools/continuous-integration/fly/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Command line interface to Concourse CI";
+    mainProgram = "fly";
     homepage = "https://concourse-ci.org";
     license = licenses.asl20;
     maintainers = with maintainers; [ ivanbrennan SuperSandro2000 ];
diff --git a/pkgs/development/tools/cotton/default.nix b/pkgs/development/tools/cotton/default.nix
index 57b4ef0205818..1fce291cc4b59 100644
--- a/pkgs/development/tools/cotton/default.nix
+++ b/pkgs/development/tools/cotton/default.nix
@@ -28,6 +28,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A package manager for JavaScript projects";
+    mainProgram = "cotton";
     homepage = "https://github.com/danielhuang/cotton";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ dit7ya figsoda ];
diff --git a/pkgs/development/tools/coursier/default.nix b/pkgs/development/tools/coursier/default.nix
index 01a37c78c1707..7c4c9e936caec 100644
--- a/pkgs/development/tools/coursier/default.nix
+++ b/pkgs/development/tools/coursier/default.nix
@@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://get-coursier.io/";
     description = "Scala library to fetch dependencies from Maven / Ivy repositories";
+    mainProgram = "cs";
     license = licenses.asl20;
     maintainers = with maintainers; [ adelbertc nequissimus ];
     platforms = platforms.all;
diff --git a/pkgs/development/tools/cppclean/default.nix b/pkgs/development/tools/cppclean/default.nix
index 460d7cddb83d8..d48e21fffb5da 100644
--- a/pkgs/development/tools/cppclean/default.nix
+++ b/pkgs/development/tools/cppclean/default.nix
@@ -23,6 +23,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Finds problems in C++ source that slow development of large code bases";
+    mainProgram = "cppclean";
     homepage    = "https://github.com/myint/cppclean";
     license     = licenses.asl20;
     maintainers = with maintainers; [ nthorne ];
diff --git a/pkgs/development/tools/crd2pulumi/default.nix b/pkgs/development/tools/crd2pulumi/default.nix
index b2f43c954b1c2..aacf306008050 100644
--- a/pkgs/development/tools/crd2pulumi/default.nix
+++ b/pkgs/development/tools/crd2pulumi/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Generate typed CustomResources from a Kubernetes CustomResourceDefinition";
+    mainProgram = "crd2pulumi";
     homepage = "https://github.com/pulumi/crd2pulumi";
     license = licenses.asl20;
     maintainers = with maintainers; [ flokli ];
diff --git a/pkgs/development/tools/csvq/default.nix b/pkgs/development/tools/csvq/default.nix
index d8438b85b8154..74121fa83219f 100644
--- a/pkgs/development/tools/csvq/default.nix
+++ b/pkgs/development/tools/csvq/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "SQL-like query language for CSV";
+    mainProgram = "csvq";
     homepage = "https://mithrandie.github.io/csvq/";
     changelog = "https://github.com/mithrandie/csvq/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/cue/default.nix b/pkgs/development/tools/cue/default.nix
index ad89197fcf649..9ff5cc631b1f1 100644
--- a/pkgs/development/tools/cue/default.nix
+++ b/pkgs/development/tools/cue/default.nix
@@ -45,6 +45,7 @@ buildGoModule rec {
 
   meta = with lib;  {
     description = "A data constraint language which aims to simplify tasks involving defining and using data";
+    mainProgram = "cue";
     homepage = "https://cuelang.org/";
     license = lib.licenses.asl20;
     maintainers = with maintainers; [ aaronjheng ];
diff --git a/pkgs/development/tools/cuelsp/default.nix b/pkgs/development/tools/cuelsp/default.nix
index 719c0bed271c3..b7a269843b352 100644
--- a/pkgs/development/tools/cuelsp/default.nix
+++ b/pkgs/development/tools/cuelsp/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Language Server implementation for CUE, with built-in support for Dagger";
+    mainProgram = "cuelsp";
     homepage = "https://github.com/dagger/cuelsp";
     license = licenses.asl20;
     maintainers = with maintainers; [ sagikazarmark ];
diff --git a/pkgs/development/tools/dapper/default.nix b/pkgs/development/tools/dapper/default.nix
index c2b6066f61bd0..5e141bfee8525 100644
--- a/pkgs/development/tools/dapper/default.nix
+++ b/pkgs/development/tools/dapper/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Docker build wrapper";
+    mainProgram = "dapper";
     homepage = "https://github.com/rancher/dapper";
     license = licenses.asl20;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/darklua/default.nix b/pkgs/development/tools/darklua/default.nix
index 4cea370a6f1ef..adcce178dfef1 100644
--- a/pkgs/development/tools/darklua/default.nix
+++ b/pkgs/development/tools/darklua/default.nix
@@ -30,6 +30,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command line tool that transforms Lua code";
+    mainProgram = "darklua";
     homepage = "https://darklua.com";
     changelog = "https://github.com/seaofvoices/darklua/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/database/apgdiff/default.nix b/pkgs/development/tools/database/apgdiff/default.nix
index d96e3dbd99d04..2aa53fbabd293 100644
--- a/pkgs/development/tools/database/apgdiff/default.nix
+++ b/pkgs/development/tools/database/apgdiff/default.nix
@@ -26,6 +26,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Another PostgreSQL diff tool";
+    mainProgram = "apgdiff";
     homepage = "https://apgdiff.com";
     license = licenses.mit;
     inherit (jre.meta) platforms;
diff --git a/pkgs/development/tools/database/clickhouse-backup/default.nix b/pkgs/development/tools/database/clickhouse-backup/default.nix
index 58a305d388861..18e12b6130416 100644
--- a/pkgs/development/tools/database/clickhouse-backup/default.nix
+++ b/pkgs/development/tools/database/clickhouse-backup/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for easy ClickHouse backup and restore with cloud storages support";
+    mainProgram = "clickhouse-backup";
     homepage = "https://github.com/AlexAkulov/clickhouse-backup";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/database/dbmate/default.nix b/pkgs/development/tools/database/dbmate/default.nix
index 8ecc6b22fbda3..e7d5be602cdcd 100644
--- a/pkgs/development/tools/database/dbmate/default.nix
+++ b/pkgs/development/tools/database/dbmate/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Database migration tool";
+    mainProgram = "dbmate";
     homepage = "https://github.com/amacneil/dbmate";
     changelog = "https://github.com/amacneil/dbmate/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/database/dynein/default.nix b/pkgs/development/tools/database/dynein/default.nix
index af88654101c2a..618ca16417db9 100644
--- a/pkgs/development/tools/database/dynein/default.nix
+++ b/pkgs/development/tools/database/dynein/default.nix
@@ -40,6 +40,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "DynamoDB CLI written in Rust";
+    mainProgram = "dy";
     homepage = "https://github.com/awslabs/dynein";
     license = licenses.asl20;
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/database/liquibase/default.nix b/pkgs/development/tools/database/liquibase/default.nix
index bd6b373049872..94f0d4c79fce9 100644
--- a/pkgs/development/tools/database/liquibase/default.nix
+++ b/pkgs/development/tools/database/liquibase/default.nix
@@ -87,6 +87,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Version Control for your database";
+    mainProgram = "liquibase";
     homepage = "https://www.liquibase.org/";
     changelog = "https://raw.githubusercontent.com/liquibase/liquibase/v${version}/changelog.txt";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
diff --git a/pkgs/development/tools/database/litecli/default.nix b/pkgs/development/tools/database/litecli/default.nix
index 2cda1e05c609e..6b6125992b582 100644
--- a/pkgs/development/tools/database/litecli/default.nix
+++ b/pkgs/development/tools/database/litecli/default.nix
@@ -35,6 +35,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Command-line interface for SQLite";
+    mainProgram = "litecli";
     longDescription = ''
       A command-line client for SQLite databases that has auto-completion and syntax highlighting.
     '';
diff --git a/pkgs/development/tools/database/litestream/default.nix b/pkgs/development/tools/database/litestream/default.nix
index 27b37eff489b2..fa47959a333cb 100644
--- a/pkgs/development/tools/database/litestream/default.nix
+++ b/pkgs/development/tools/database/litestream/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Streaming replication for SQLite";
+    mainProgram = "litestream";
     license = licenses.asl20;
     homepage = "https://litestream.io/";
     maintainers = with maintainers; [ fbrs ];
diff --git a/pkgs/development/tools/database/mermerd/default.nix b/pkgs/development/tools/database/mermerd/default.nix
index 90f274d66113d..7331f5f61750d 100644
--- a/pkgs/development/tools/database/mermerd/default.nix
+++ b/pkgs/development/tools/database/mermerd/default.nix
@@ -37,6 +37,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Create Mermaid-Js ERD diagrams from existing tables";
+    mainProgram = "mermerd";
     homepage = "https://github.com/KarnerTh/mermerd";
     changelog = "https://github.com/KarnerTh/mermerd/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/database/movine/default.nix b/pkgs/development/tools/database/movine/default.nix
index a0342bcfc0a44..6aba244be3ace 100644
--- a/pkgs/development/tools/database/movine/default.nix
+++ b/pkgs/development/tools/database/movine/default.nix
@@ -30,6 +30,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A migration manager written in Rust, that attempts to be smart yet minimal";
+    mainProgram = "movine";
     homepage = "https://github.com/byronwasti/movine";
     license = licenses.mit;
     longDescription = ''
diff --git a/pkgs/development/tools/database/pg_activity/default.nix b/pkgs/development/tools/database/pg_activity/default.nix
index 32fdeae69e2f7..4fa280942dd29 100644
--- a/pkgs/development/tools/database/pg_activity/default.nix
+++ b/pkgs/development/tools/database/pg_activity/default.nix
@@ -24,6 +24,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A top like application for PostgreSQL server activity monitoring";
+    mainProgram = "pg_activity";
     homepage = "https://github.com/dalibo/pg_activity";
     license = licenses.postgresql;
     maintainers = with maintainers; [ mausch ];
diff --git a/pkgs/development/tools/database/replibyte/default.nix b/pkgs/development/tools/database/replibyte/default.nix
index 6e61d6682e2f2..4437e4738e161 100644
--- a/pkgs/development/tools/database/replibyte/default.nix
+++ b/pkgs/development/tools/database/replibyte/default.nix
@@ -40,6 +40,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Seed your development database with real data";
+    mainProgram = "replibyte";
     homepage = "https://github.com/Qovery/replibyte";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ dit7ya ];
diff --git a/pkgs/development/tools/database/schemaspy/default.nix b/pkgs/development/tools/database/schemaspy/default.nix
index 6847b9aa20a78..5e07beaff6f7d 100644
--- a/pkgs/development/tools/database/schemaspy/default.nix
+++ b/pkgs/development/tools/database/schemaspy/default.nix
@@ -59,6 +59,7 @@ maven.buildMavenPackage rec {
   meta = with lib; {
     homepage = "https://schemaspy.org";
     description = "Document your database simply and easily";
+    mainProgram = "schemaspy";
     license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ jraygauthier ];
   };
diff --git a/pkgs/development/tools/database/shmig/default.nix b/pkgs/development/tools/database/shmig/default.nix
index 5bb023931388b..3e7e640c88b59 100644
--- a/pkgs/development/tools/database/shmig/default.nix
+++ b/pkgs/development/tools/database/shmig/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Minimalistic database migration tool with MySQL, PostgreSQL and SQLite support";
+    mainProgram = "shmig";
     homepage = "https://github.com/mbucc/shmig";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/database/sqlboiler-crdb/default.nix b/pkgs/development/tools/database/sqlboiler-crdb/default.nix
index 559c8f2775810..df439bce808ee 100644
--- a/pkgs/development/tools/database/sqlboiler-crdb/default.nix
+++ b/pkgs/development/tools/database/sqlboiler-crdb/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CockroachDB generator for usage with SQLBoiler";
+    mainProgram = "sqlboiler-crdb";
     homepage = "https://github.com/glerchundi/sqlboiler-crdb/";
     maintainers = with maintainers; [ dgollings ];
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/database/sqlc/default.nix b/pkgs/development/tools/database/sqlc/default.nix
index 8908d27ad0002..68e75f6025498 100644
--- a/pkgs/development/tools/database/sqlc/default.nix
+++ b/pkgs/development/tools/database/sqlc/default.nix
@@ -21,6 +21,7 @@ buildGoModule {
 
   meta = {
     description = "Generate type-safe code from SQL";
+    mainProgram = "sqlc";
     homepage = "https://sqlc.dev/";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.adisbladis ];
diff --git a/pkgs/development/tools/database/sqlcheck/default.nix b/pkgs/development/tools/database/sqlcheck/default.nix
index 28f8b174cbc77..54faf9f993d0e 100644
--- a/pkgs/development/tools/database/sqlcheck/default.nix
+++ b/pkgs/development/tools/database/sqlcheck/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     inherit (src.meta) homepage;
     description = "Automatically identify anti-patterns in SQL queries";
+    mainProgram = "sqlcheck";
     license = licenses.asl20;
     platforms = platforms.all;
     maintainers = [ maintainers.marsam ];
diff --git a/pkgs/development/tools/database/sqlcmd/default.nix b/pkgs/development/tools/database/sqlcmd/default.nix
index 956a28a0d9766..c11475a3caa48 100644
--- a/pkgs/development/tools/database/sqlcmd/default.nix
+++ b/pkgs/development/tools/database/sqlcmd/default.nix
@@ -47,6 +47,7 @@ buildGoModule rec {
 
   meta = {
     description = "A command line tool for working with Microsoft SQL Server, Azure SQL Database, and Azure Synapse";
+    mainProgram = "sqlcmd";
     homepage = "https://github.com/microsoft/go-sqlcmd";
     changelog = "https://github.com/microsoft/go-sqlcmd/releases/tag/v${version}";
     license = lib.licenses.mit;
diff --git a/pkgs/development/tools/database/sqlfluff/default.nix b/pkgs/development/tools/database/sqlfluff/default.nix
index 89ae63369ff4f..7251689ade4ca 100644
--- a/pkgs/development/tools/database/sqlfluff/default.nix
+++ b/pkgs/development/tools/database/sqlfluff/default.nix
@@ -63,6 +63,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "SQL linter and auto-formatter";
+    mainProgram = "sqlfluff";
     homepage = "https://www.sqlfluff.com/";
     changelog = "https://github.com/sqlfluff/sqlfluff/blob/${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
diff --git a/pkgs/development/tools/database/sqlite-web/default.nix b/pkgs/development/tools/database/sqlite-web/default.nix
index 01c4712440ca3..dc5960fd9ee2c 100644
--- a/pkgs/development/tools/database/sqlite-web/default.nix
+++ b/pkgs/development/tools/database/sqlite-web/default.nix
@@ -19,6 +19,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Web-based SQLite database browser";
+    mainProgram = "sqlite_web";
     homepage = "https://github.com/coleifer/sqlite-web";
     license = licenses.mit;
     maintainers = [ maintainers.costrouc ];
diff --git a/pkgs/development/tools/database/sqlitebrowser/default.nix b/pkgs/development/tools/database/sqlitebrowser/default.nix
index aa5e2d8f6e0e4..a622d3481ce2e 100644
--- a/pkgs/development/tools/database/sqlitebrowser/default.nix
+++ b/pkgs/development/tools/database/sqlitebrowser/default.nix
@@ -27,6 +27,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "DB Browser for SQLite";
+    mainProgram = "sqlitebrowser";
     homepage = "https://sqlitebrowser.org/";
     license = licenses.gpl3;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/development/tools/database/squirrel-sql/default.nix b/pkgs/development/tools/database/squirrel-sql/default.nix
index 2d0795dee76b6..bd23f523276ac 100644
--- a/pkgs/development/tools/database/squirrel-sql/default.nix
+++ b/pkgs/development/tools/database/squirrel-sql/default.nix
@@ -69,6 +69,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Universal SQL Client";
+    mainProgram = "squirrel-sql";
     homepage = "http://squirrel-sql.sourceforge.net/";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.lgpl21Plus;
diff --git a/pkgs/development/tools/database/timescaledb-parallel-copy/default.nix b/pkgs/development/tools/database/timescaledb-parallel-copy/default.nix
index 24c4aeb8538af..37bad3e03d63a 100644
--- a/pkgs/development/tools/database/timescaledb-parallel-copy/default.nix
+++ b/pkgs/development/tools/database/timescaledb-parallel-copy/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Bulk, parallel insert of CSV records into PostgreSQL";
+    mainProgram = "timescaledb-parallel-copy";
     homepage = "https://github.com/timescale/timescaledb-parallel-copy";
     license = licenses.asl20;
     maintainers = with maintainers; [ thoughtpolice ];
diff --git a/pkgs/development/tools/database/timescaledb-tune/default.nix b/pkgs/development/tools/database/timescaledb-tune/default.nix
index 38bbd1cb157fa..444e947cdf4b7 100644
--- a/pkgs/development/tools/database/timescaledb-tune/default.nix
+++ b/pkgs/development/tools/database/timescaledb-tune/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool for tuning your TimescaleDB for better performance";
+    mainProgram = "timescaledb-tune";
     homepage = "https://github.com/timescale/timescaledb-tune";
     license = licenses.asl20;
     maintainers = with maintainers; [ marsam ];
diff --git a/pkgs/development/tools/database/trino-cli/default.nix b/pkgs/development/tools/database/trino-cli/default.nix
index 899fa72d673a9..b43fbc180194e 100644
--- a/pkgs/development/tools/database/trino-cli/default.nix
+++ b/pkgs/development/tools/database/trino-cli/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "The Trino CLI provides a terminal-based, interactive shell for running queries";
+    mainProgram = "trino";
     homepage = "https://github.com/trinodb/trino";
     license = licenses.asl20;
     maintainers = with maintainers; [ regadas cpcloud ];
diff --git a/pkgs/development/tools/database/webdis/default.nix b/pkgs/development/tools/database/webdis/default.nix
index eec952817e90b..d9f23d93d4a5e 100644
--- a/pkgs/development/tools/database/webdis/default.nix
+++ b/pkgs/development/tools/database/webdis/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     description = "A Redis HTTP interface with JSON output";
+    mainProgram = "webdis";
     homepage = "https://webd.is/";
     license = lib.licenses.bsd2;
     maintainers = with lib.maintainers; [ wucke13 ];
diff --git a/pkgs/development/tools/datree/default.nix b/pkgs/development/tools/datree/default.nix
index 829de7447c745..79e352deb5321 100644
--- a/pkgs/development/tools/datree/default.nix
+++ b/pkgs/development/tools/datree/default.nix
@@ -44,6 +44,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI tool to ensure K8s manifests and Helm charts follow best practices";
+    mainProgram = "datree";
     longDescription = ''
       Datree provides an E2E policy enforcement solution to run automatic checks
       for rule violations. Datree can be used on the command line, admission
diff --git a/pkgs/development/tools/dbus-test-runner/default.nix b/pkgs/development/tools/dbus-test-runner/default.nix
index c4951f0193c55..f9ccd41f6835d 100644
--- a/pkgs/development/tools/dbus-test-runner/default.nix
+++ b/pkgs/development/tools/dbus-test-runner/default.nix
@@ -69,6 +69,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "A small little utility to run a couple of executables under a new DBus session for testing";
+    mainProgram = "dbus-test-runner";
     homepage = "https://launchpad.net/dbus-test-runner";
     license = licenses.gpl3Only;
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/dcadec/default.nix b/pkgs/development/tools/dcadec/default.nix
index 9f5f4f0a3b520..bf531476566e7 100644
--- a/pkgs/development/tools/dcadec/default.nix
+++ b/pkgs/development/tools/dcadec/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "DTS Coherent Acoustics decoder with support for HD extensions";
+    mainProgram = "dcadec";
     maintainers = with maintainers; [ edwtjo ];
     homepage = "https://github.com/foo86/dcadec";
     license = licenses.lgpl21;
diff --git a/pkgs/development/tools/ddosify/default.nix b/pkgs/development/tools/ddosify/default.nix
index b1e659ec8d6d0..0f47035721e68 100644
--- a/pkgs/development/tools/ddosify/default.nix
+++ b/pkgs/development/tools/ddosify/default.nix
@@ -35,6 +35,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "High-performance load testing tool, written in Golang";
+    mainProgram = "ddosify";
     homepage = "https://ddosify.com/";
     changelog = "https://github.com/ddosify/ddosify/releases/tag/v${version}";
     license = licenses.agpl3Plus;
diff --git a/pkgs/development/tools/dec-decode/default.nix b/pkgs/development/tools/dec-decode/default.nix
index 2d85f41e33abd..621e119dc0908 100644
--- a/pkgs/development/tools/dec-decode/default.nix
+++ b/pkgs/development/tools/dec-decode/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Nintendo Wii iso.dec decoder";
+    mainProgram = "dec-decode";
     homepage = "https://github.com/sammiq/dec-decode";
     license = licenses.unlicense;
     maintainers = with maintainers; [ hughobrien ];
diff --git a/pkgs/development/tools/dep2nix/default.nix b/pkgs/development/tools/dep2nix/default.nix
index 5d98ecd572962..fc15ecff7c9ac 100644
--- a/pkgs/development/tools/dep2nix/default.nix
+++ b/pkgs/development/tools/dep2nix/default.nix
@@ -27,6 +27,7 @@ buildGoPackage rec {
 
   meta = with lib; {
     description = "Convert `Gopkg.lock` files from golang dep into `deps.nix`";
+    mainProgram = "dep2nix";
     license = licenses.bsd3;
     homepage = "https://github.com/nixcloud/dep2nix";
     maintainers = [ maintainers.mic92 ];
diff --git a/pkgs/development/tools/detekt/default.nix b/pkgs/development/tools/detekt/default.nix
index ff643693daec0..5881997e6dbe9 100644
--- a/pkgs/development/tools/detekt/default.nix
+++ b/pkgs/development/tools/detekt/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Static code analysis for Kotlin";
+    mainProgram = "detekt";
     homepage = "https://detekt.dev/";
     license = licenses.asl20;
     platforms = jre_headless.meta.platforms;
diff --git a/pkgs/development/tools/devd/default.nix b/pkgs/development/tools/devd/default.nix
index 05ed14dfcd6e7..5d2e0a83b4415 100644
--- a/pkgs/development/tools/devd/default.nix
+++ b/pkgs/development/tools/devd/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A local webserver for developers";
+    mainProgram = "devd";
     homepage = "https://github.com/cortesi/devd";
     license = licenses.mit;
     maintainers = with maintainers; [ brianhicks ];
diff --git a/pkgs/development/tools/devpi-client/default.nix b/pkgs/development/tools/devpi-client/default.nix
index a481bf8804fef..66d84e5a3b127 100644
--- a/pkgs/development/tools/devpi-client/default.nix
+++ b/pkgs/development/tools/devpi-client/default.nix
@@ -74,6 +74,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Client for devpi, a pypi index server and packaging meta tool";
+    mainProgram = "devpi";
     homepage = "http://doc.devpi.net";
     changelog = "https://github.com/devpi/devpi/blob/client-${version}/client/CHANGELOG";
     license = licenses.mit;
diff --git a/pkgs/development/tools/devpod/default.nix b/pkgs/development/tools/devpod/default.nix
index e4fbfcc9bd5e7..6b66869828d10 100644
--- a/pkgs/development/tools/devpod/default.nix
+++ b/pkgs/development/tools/devpod/default.nix
@@ -34,6 +34,7 @@ let
 
   meta = with lib; {
     description = "Codespaces but open-source, client-only and unopinionated: Works with any IDE and lets you use any cloud, kubernetes or just localhost docker";
+    mainProgram = "devpod";
     homepage = "https://devpod.sh";
     license = licenses.mpl20;
     maintainers = with maintainers; [ maxbrunet ];
diff --git a/pkgs/development/tools/distgen/default.nix b/pkgs/development/tools/distgen/default.nix
index 083bc3ed854c4..c405aa3fd354e 100644
--- a/pkgs/development/tools/distgen/default.nix
+++ b/pkgs/development/tools/distgen/default.nix
@@ -25,6 +25,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Templating system/generator for distributions";
+    mainProgram = "dg";
     license = licenses.gpl2Plus;
     homepage = "https://distgen.readthedocs.io/";
     maintainers = with maintainers; [ bachp ];
diff --git a/pkgs/development/tools/dive/default.nix b/pkgs/development/tools/dive/default.nix
index 6981e83f7086c..6bba0c97cc4e8 100644
--- a/pkgs/development/tools/dive/default.nix
+++ b/pkgs/development/tools/dive/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool for exploring each layer in a docker image";
+    mainProgram = "dive";
     homepage = "https://github.com/wagoodman/dive";
     changelog = "https://github.com/wagoodman/dive/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/djlint/default.nix b/pkgs/development/tools/djlint/default.nix
index cbba45b686b90..d84afa203e5b3 100644
--- a/pkgs/development/tools/djlint/default.nix
+++ b/pkgs/development/tools/djlint/default.nix
@@ -43,6 +43,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "HTML Template Linter and Formatter. Django - Jinja - Nunjucks - Handlebars - GoLang";
+    mainProgram = "djlint";
     homepage = "https://github.com/Riverside-Healthcare/djlint";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ traxys ];
diff --git a/pkgs/development/tools/doc2go/default.nix b/pkgs/development/tools/doc2go/default.nix
index fc2e2e8151c08..68b0f7f5e1e80 100644
--- a/pkgs/development/tools/doc2go/default.nix
+++ b/pkgs/development/tools/doc2go/default.nix
@@ -35,6 +35,7 @@ buildGoModule rec {
     homepage = "https://github.com/abhinav/doc2go";
     changelog = "https://github.com/abhinav/doc2go/blob/${src.rev}/CHANGELOG.md";
     description = "Your Go project's documentation, to-go";
+    mainProgram = "doc2go";
     longDescription = ''
       doc2go is a command line tool that generates static HTML documentation
       from your Go code. It is a self-hosted static alternative to
diff --git a/pkgs/development/tools/dockfmt/default.nix b/pkgs/development/tools/dockfmt/default.nix
index e2a2210fa6497..3ca4fc9a16244 100644
--- a/pkgs/development/tools/dockfmt/default.nix
+++ b/pkgs/development/tools/dockfmt/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Dockerfile format";
+    mainProgram = "dockfmt";
     homepage = "https://github.com/jessfraz/dockfmt";
     license = licenses.mit;
     maintainers = with maintainers; [ cpcloud ];
diff --git a/pkgs/development/tools/dockle/default.nix b/pkgs/development/tools/dockle/default.nix
index a1f5d433646cc..6dc04fef038b7 100644
--- a/pkgs/development/tools/dockle/default.nix
+++ b/pkgs/development/tools/dockle/default.nix
@@ -39,6 +39,7 @@ buildGoModule rec {
     homepage = "https://containers.goodwith.tech";
     changelog = "https://github.com/goodwithtech/dockle/releases/tag/v${version}";
     description = "Container Image Linter for Security";
+    mainProgram = "dockle";
     longDescription = ''
       Container Image Linter for Security.
       Helping build the Best-Practice Docker Image.
diff --git a/pkgs/development/tools/doctl/default.nix b/pkgs/development/tools/doctl/default.nix
index d82c24979dfb5..5f70e6a489d3b 100644
--- a/pkgs/development/tools/doctl/default.nix
+++ b/pkgs/development/tools/doctl/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A command line tool for DigitalOcean services";
+    mainProgram = "doctl";
     homepage = "https://github.com/digitalocean/doctl";
     license = licenses.asl20;
     maintainers = [ maintainers.siddharthist ];
diff --git a/pkgs/development/tools/documentation/antora/default.nix b/pkgs/development/tools/documentation/antora/default.nix
index 6ac43313e962f..34625022df6bf 100644
--- a/pkgs/development/tools/documentation/antora/default.nix
+++ b/pkgs/development/tools/documentation/antora/default.nix
@@ -26,6 +26,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "A modular documentation site generator. Designed for users of Asciidoctor.";
+    mainProgram = "antora";
     homepage = "https://antora.org";
     license = licenses.mpl20;
     maintainers = [ maintainers.ehllie ];
diff --git a/pkgs/development/tools/documentation/doxygen/default.nix b/pkgs/development/tools/documentation/doxygen/default.nix
index ddf27b35dbd05..c1c3bac48ad66 100644
--- a/pkgs/development/tools/documentation/doxygen/default.nix
+++ b/pkgs/development/tools/documentation/doxygen/default.nix
@@ -52,6 +52,7 @@ stdenv.mkDerivation rec {
     homepage = "https://www.doxygen.nl/";
     changelog = "https://www.doxygen.nl/manual/changelog.html";
     description = "Source code documentation generator tool";
+    mainProgram = "doxygen";
 
     longDescription = ''
       Doxygen is the de facto standard tool for generating documentation from
diff --git a/pkgs/development/tools/documentation/gi-docgen/default.nix b/pkgs/development/tools/documentation/gi-docgen/default.nix
index bed6606151791..b2652f6ca9fd5 100644
--- a/pkgs/development/tools/documentation/gi-docgen/default.nix
+++ b/pkgs/development/tools/documentation/gi-docgen/default.nix
@@ -52,6 +52,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Documentation generator for GObject-based libraries";
+    mainProgram = "gi-docgen";
     homepage = "https://gitlab.gnome.org/GNOME/gi-docgen";
     license = licenses.asl20; # OR GPL-3.0-or-later
     maintainers = teams.gnome.members;
diff --git a/pkgs/development/tools/drm_info/default.nix b/pkgs/development/tools/drm_info/default.nix
index 26124b1054fbd..e4f81e56456e0 100644
--- a/pkgs/development/tools/drm_info/default.nix
+++ b/pkgs/development/tools/drm_info/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Small utility to dump info about DRM devices";
+    mainProgram = "drm_info";
     homepage = "https://github.com/ascent12/drm_info";
     license = licenses.mit;
     maintainers = with maintainers; [ tadeokondrak ];
diff --git a/pkgs/development/tools/dstp/default.nix b/pkgs/development/tools/dstp/default.nix
index 15093060d6289..bbfac9b19941b 100644
--- a/pkgs/development/tools/dstp/default.nix
+++ b/pkgs/development/tools/dstp/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Run common networking tests against your site";
+    mainProgram = "dstp";
     homepage = "https://github.com/ycd/dstp";
     license = licenses.mit;
     maintainers = with maintainers; [ jlesquembre ];
diff --git a/pkgs/development/tools/dum/default.nix b/pkgs/development/tools/dum/default.nix
index f9683f2e821f9..85b89979960dc 100644
--- a/pkgs/development/tools/dum/default.nix
+++ b/pkgs/development/tools/dum/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An npm scripts runner written in Rust";
+    mainProgram = "dum";
     homepage = "https://github.com/egoist/dum";
     changelog = "https://github.com/egoist/dum/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/dump_syms/default.nix b/pkgs/development/tools/dump_syms/default.nix
index e9b92fd117d8a..1445a41a227b0 100644
--- a/pkgs/development/tools/dump_syms/default.nix
+++ b/pkgs/development/tools/dump_syms/default.nix
@@ -61,6 +61,7 @@ rustPlatform.buildRustPackage {
   meta = with lib; {
     changelog = "https://github.com/mozilla/dump_syms/releases/tag/v${version}";
     description = "Command-line utility for parsing the debugging information the compiler provides in ELF or stand-alone PDB files";
+    mainProgram = "dump_syms";
     license = licenses.asl20;
     homepage = "https://github.com/mozilla/dump_syms/";
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/tools/dyff/default.nix b/pkgs/development/tools/dyff/default.nix
index 0e16e37e274d7..7557af0d97357 100644
--- a/pkgs/development/tools/dyff/default.nix
+++ b/pkgs/development/tools/dyff/default.nix
@@ -42,6 +42,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A diff tool for YAML files, and sometimes JSON";
+    mainProgram = "dyff";
     longDescription = ''
       dyff is inspired by the way the old BOSH v1 deployment output reported
       changes from one version to another by only showing the parts of a YAML
diff --git a/pkgs/development/tools/easyjson/default.nix b/pkgs/development/tools/easyjson/default.nix
index b724dd213ab00..6b97424e0e46f 100644
--- a/pkgs/development/tools/easyjson/default.nix
+++ b/pkgs/development/tools/easyjson/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/mailru/easyjson";
     description = "Fast JSON serializer for Go";
+    mainProgram = "easyjson";
     license = licenses.mit;
     maintainers = with maintainers; [ Madouura ];
   };
diff --git a/pkgs/development/tools/ec2-metadata-mock/default.nix b/pkgs/development/tools/ec2-metadata-mock/default.nix
index 968656fa9da2d..4b398629cab1a 100644
--- a/pkgs/development/tools/ec2-metadata-mock/default.nix
+++ b/pkgs/development/tools/ec2-metadata-mock/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Amazon EC2 Metadata Mock";
+    mainProgram = "ec2-metadata-mock";
     homepage = "https://github.com/aws/amazon-ec2-metadata-mock";
     license = licenses.asl20;
     maintainers = with maintainers; [ ymatsiuk ];
diff --git a/pkgs/development/tools/eclint/default.nix b/pkgs/development/tools/eclint/default.nix
index 933a19fc12c16..3f449489743a1 100644
--- a/pkgs/development/tools/eclint/default.nix
+++ b/pkgs/development/tools/eclint/default.nix
@@ -22,6 +22,7 @@ rec {
   meta = with lib; {
     homepage = "https://gitlab.com/greut/eclint";
     description = "EditorConfig linter written in Go";
+    mainProgram = "eclint";
     license = licenses.mit;
     maintainers = with maintainers; [ lucperkins ];
   };
diff --git a/pkgs/development/tools/eclipse-mat/default.nix b/pkgs/development/tools/eclipse-mat/default.nix
index 309a3e02bd6f7..5aea91699a22e 100644
--- a/pkgs/development/tools/eclipse-mat/default.nix
+++ b/pkgs/development/tools/eclipse-mat/default.nix
@@ -99,6 +99,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Fast and feature-rich Java heap analyzer";
+    mainProgram = "eclipse-mat";
     longDescription = ''
       The Eclipse Memory Analyzer is a tool that helps you find memory
       leaks and reduce memory consumption. Use the Memory Analyzer to
diff --git a/pkgs/development/tools/efm-langserver/default.nix b/pkgs/development/tools/efm-langserver/default.nix
index ad095a763167b..3bf9d0a1eb622 100644
--- a/pkgs/development/tools/efm-langserver/default.nix
+++ b/pkgs/development/tools/efm-langserver/default.nix
@@ -16,6 +16,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "General purpose Language Server";
+    mainProgram = "efm-langserver";
     maintainers = with maintainers; [ Philipp-M ];
     homepage = "https://github.com/mattn/efm-langserver";
     license = licenses.mit;
diff --git a/pkgs/development/tools/ejson/default.nix b/pkgs/development/tools/ejson/default.nix
index 5c2efc0ab9a68..c6ec3e3b6b25a 100644
--- a/pkgs/development/tools/ejson/default.nix
+++ b/pkgs/development/tools/ejson/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A small library to manage encrypted secrets using asymmetric encryption";
+    mainProgram = "ejson";
     license = licenses.mit;
     homepage = "https://github.com/Shopify/ejson";
     maintainers = [ maintainers.manveru ];
diff --git a/pkgs/development/tools/eliot-tree/default.nix b/pkgs/development/tools/eliot-tree/default.nix
index 21dfccd33e421..9a1a8978598b8 100644
--- a/pkgs/development/tools/eliot-tree/default.nix
+++ b/pkgs/development/tools/eliot-tree/default.nix
@@ -32,6 +32,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/jonathanj/eliottree";
     description = "Render Eliot logs as an ASCII tree";
+    mainProgram = "eliot-tree";
     license = licenses.mit;
     maintainers = [ maintainers.dpausp ];
   };
diff --git a/pkgs/development/tools/enochecker-test/default.nix b/pkgs/development/tools/enochecker-test/default.nix
index ae1fb411861a1..7e0f25317eac4 100644
--- a/pkgs/development/tools/enochecker-test/default.nix
+++ b/pkgs/development/tools/enochecker-test/default.nix
@@ -61,6 +61,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Automatically test services/checker using the enochecker API";
+    mainProgram = "enochecker_test";
     homepage = "https://github.com/enowars/enochecker_test";
     changelog = "https://github.com/enowars/enochecker_test/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/errcheck/default.nix b/pkgs/development/tools/errcheck/default.nix
index 4ebcb81695277..be79ea2f574d5 100644
--- a/pkgs/development/tools/errcheck/default.nix
+++ b/pkgs/development/tools/errcheck/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Checks for unchecked errors in go programs";
+    mainProgram = "errcheck";
     homepage = "https://github.com/kisielk/errcheck";
     license = licenses.mit;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/evans/default.nix b/pkgs/development/tools/evans/default.nix
index a9ea7bc2f8a43..89ed0fbfb1737 100644
--- a/pkgs/development/tools/evans/default.nix
+++ b/pkgs/development/tools/evans/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "More expressive universal gRPC client";
+    mainProgram = "evans";
     homepage = "https://evans.syfm.me/";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ diogox ];
diff --git a/pkgs/development/tools/exhaustive/default.nix b/pkgs/development/tools/exhaustive/default.nix
index 7445ae5236dbb..078d886b09734 100644
--- a/pkgs/development/tools/exhaustive/default.nix
+++ b/pkgs/development/tools/exhaustive/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Check exhaustiveness of switch statements of enum-like constants in Go code";
+    mainProgram = "exhaustive";
     homepage = "https://github.com/nishanths/exhaustive";
     license = licenses.bsd2;
     maintainers = with maintainers; [ meain ];
diff --git a/pkgs/development/tools/explain/default.nix b/pkgs/development/tools/explain/default.nix
index 47a9622be9441..66334b12d9966 100644
--- a/pkgs/development/tools/explain/default.nix
+++ b/pkgs/development/tools/explain/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Library and utility to explain system call errors";
+    mainProgram = "explain";
     homepage = "https://libexplain.sourceforge.net";
     license = licenses.lgpl3Plus;
     maintainers = with maintainers; [ McSinyx ];
diff --git a/pkgs/development/tools/faas-cli/default.nix b/pkgs/development/tools/faas-cli/default.nix
index 9eaadd43cedb6..35db119791cc8 100644
--- a/pkgs/development/tools/faas-cli/default.nix
+++ b/pkgs/development/tools/faas-cli/default.nix
@@ -58,6 +58,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Official CLI for OpenFaaS ";
+    mainProgram = "faas-cli";
     homepage = "https://github.com/openfaas/faas-cli";
     license = licenses.mit;
     maintainers = with maintainers; [ welteki techknowlogick ];
diff --git a/pkgs/development/tools/fable/default.nix b/pkgs/development/tools/fable/default.nix
index 28eda474ce322..999b9c5f9df07 100644
--- a/pkgs/development/tools/fable/default.nix
+++ b/pkgs/development/tools/fable/default.nix
@@ -9,6 +9,7 @@ buildDotnetGlobalTool {
 
   meta = with lib; {
     description = "Fable is an F# to JavaScript compiler";
+    mainProgram = "fable";
     homepage = "https://github.com/fable-compiler/fable";
     changelog = "https://github.com/fable-compiler/fable/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/faq/default.nix b/pkgs/development/tools/faq/default.nix
index 6a36ba73570bd..c955174a4affa 100644
--- a/pkgs/development/tools/faq/default.nix
+++ b/pkgs/development/tools/faq/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "faq is a tool intended to be a more flexible jq, supporting additional formats";
+    mainProgram = "faq";
     homepage = "https://github.com/jzelinskie/faq";
     license = licenses.asl20;
     maintainers = with maintainers; [ quentin-m ];
diff --git a/pkgs/development/tools/fastddsgen/default.nix b/pkgs/development/tools/fastddsgen/default.nix
index b5a436d3be9fe..ec4523e270c28 100644
--- a/pkgs/development/tools/fastddsgen/default.nix
+++ b/pkgs/development/tools/fastddsgen/default.nix
@@ -83,6 +83,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Fast-DDS IDL code generator tool";
+    mainProgram = "fastddsgen";
     homepage = "https://github.com/eProsima/Fast-DDS-Gen";
     license = licenses.asl20;
     longDescription = ''
diff --git a/pkgs/development/tools/fastgron/default.nix b/pkgs/development/tools/fastgron/default.nix
index 3e30d87d0ddea..5b5796cc7014c 100644
--- a/pkgs/development/tools/fastgron/default.nix
+++ b/pkgs/development/tools/fastgron/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation (finalAttrs: {
   meta = with lib; {
     changelog = "https://github.com/adamritter/fastgron/releases/tag/${finalAttrs.src.rev}";
     description = "High-performance JSON to GRON (greppable, flattened JSON) converter";
+    mainProgram = "fastgron";
     homepage = "https://github.com/adamritter/fastgron";
     license = licenses.mit;
     maintainers = with maintainers; [ zowoq ];
diff --git a/pkgs/development/tools/fatcat/default.nix b/pkgs/development/tools/fatcat/default.nix
index d5caaea08a4b8..fe333dc9e10dc 100644
--- a/pkgs/development/tools/fatcat/default.nix
+++ b/pkgs/development/tools/fatcat/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "FAT filesystems explore, extract, repair, and forensic tool";
+    mainProgram = "fatcat";
     homepage = "https://github.com/Gregwar/fatcat";
     license = licenses.mit;
     maintainers = with maintainers; [ cynerd ];
diff --git a/pkgs/development/tools/fblog/default.nix b/pkgs/development/tools/fblog/default.nix
index b24981ffc49c0..7294b199273c2 100644
--- a/pkgs/development/tools/fblog/default.nix
+++ b/pkgs/development/tools/fblog/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A small command-line JSON log viewer";
+    mainProgram = "fblog";
     homepage = "https://github.com/brocode/fblog";
     license = licenses.wtfpl;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/flatpak-builder/default.nix b/pkgs/development/tools/flatpak-builder/default.nix
index c3c59f1b2ba80..9e0d5ed15468b 100644
--- a/pkgs/development/tools/flatpak-builder/default.nix
+++ b/pkgs/development/tools/flatpak-builder/default.nix
@@ -150,6 +150,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tool to build flatpaks from source";
+    mainProgram = "flatpak-builder";
     homepage = "https://github.com/flatpak/flatpak-builder";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/flawfinder/default.nix b/pkgs/development/tools/flawfinder/default.nix
index 0129cf73741bf..09560acc1d21e 100644
--- a/pkgs/development/tools/flawfinder/default.nix
+++ b/pkgs/development/tools/flawfinder/default.nix
@@ -19,6 +19,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to examines C/C++ source code for security flaws";
+    mainProgram = "flawfinder";
     homepage = "https://dwheeler.com/flawfinder/";
     license = with licenses; [ gpl2Only ];
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/tools/flip-link/default.nix b/pkgs/development/tools/flip-link/default.nix
index 794d87a482d37..deb13d050b491 100644
--- a/pkgs/development/tools/flip-link/default.nix
+++ b/pkgs/development/tools/flip-link/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Adds zero-cost stack overflow protection to your embedded programs";
+    mainProgram = "flip-link";
     homepage = "https://github.com/knurling-rs/flip-link";
     changelog = "https://github.com/knurling-rs/flip-link/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/flootty/default.nix b/pkgs/development/tools/flootty/default.nix
index 42829649c6057..9440b0b619462 100644
--- a/pkgs/development/tools/flootty/default.nix
+++ b/pkgs/development/tools/flootty/default.nix
@@ -11,6 +11,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A collaborative terminal. In practice, it's similar to a shared screen or tmux session";
+    mainProgram = "flootty";
     homepage = "https://floobits.com/help/flootty";
     license = licenses.asl20;
     maintainers = with maintainers; [ sellout ];
diff --git a/pkgs/development/tools/fnm/default.nix b/pkgs/development/tools/fnm/default.nix
index 3cb367e820fe0..75bde74896783 100644
--- a/pkgs/development/tools/fnm/default.nix
+++ b/pkgs/development/tools/fnm/default.nix
@@ -36,6 +36,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Fast and simple Node.js version manager";
+    mainProgram = "fnm";
     homepage = "https://github.com/Schniz/fnm";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ kidonng ];
diff --git a/pkgs/development/tools/fprettify/default.nix b/pkgs/development/tools/fprettify/default.nix
index a5eed6bdc28cf..b2c37f163b26e 100644
--- a/pkgs/development/tools/fprettify/default.nix
+++ b/pkgs/development/tools/fprettify/default.nix
@@ -21,6 +21,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "An auto-formatter for modern Fortran code that imposes strict whitespace formatting, written in Python.";
+    mainProgram = "fprettify";
     homepage = "https://pypi.org/project/fprettify/";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ fabiangd ];
diff --git a/pkgs/development/tools/fq/default.nix b/pkgs/development/tools/fq/default.nix
index 69aa0299c931a..661757d1513db 100644
--- a/pkgs/development/tools/fq/default.nix
+++ b/pkgs/development/tools/fq/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "jq for binary formats";
+    mainProgram = "fq";
     homepage = "https://github.com/wader/fq";
     license = licenses.mit;
     maintainers = with maintainers; [ siraben ];
diff --git a/pkgs/development/tools/frece/default.nix b/pkgs/development/tools/frece/default.nix
index 64de6d162f0a0..c8b6a3a85f9c5 100644
--- a/pkgs/development/tools/frece/default.nix
+++ b/pkgs/development/tools/frece/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Maintain a database sorted by frecency (frequency + recency)";
+    mainProgram = "frece";
     homepage = "https://github.com/YodaEmbedding/frece";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/frugal/default.nix b/pkgs/development/tools/frugal/default.nix
index 8e8db3bc20456..0bea6b4e5785f 100644
--- a/pkgs/development/tools/frugal/default.nix
+++ b/pkgs/development/tools/frugal/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Thrift improved";
+    mainProgram = "frugal";
     homepage = "https://github.com/Workiva/frugal";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ diogox ];
diff --git a/pkgs/development/tools/fsautocomplete/default.nix b/pkgs/development/tools/fsautocomplete/default.nix
index a1e846f482f89..b6f174bd5c704 100644
--- a/pkgs/development/tools/fsautocomplete/default.nix
+++ b/pkgs/development/tools/fsautocomplete/default.nix
@@ -30,6 +30,7 @@ buildDotnetModule rec {
 
   meta = with lib; {
     description = "The FsAutoComplete project (FSAC) provides a backend service for rich editing or intellisense features for editors.";
+    mainProgram = "fsautocomplete";
     homepage = "https://github.com/fsharp/FsAutoComplete";
     changelog = "https://github.com/fsharp/FsAutoComplete/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/fundoc/default.nix b/pkgs/development/tools/fundoc/default.nix
index b53298046a214..72c572e3e4f19 100644
--- a/pkgs/development/tools/fundoc/default.nix
+++ b/pkgs/development/tools/fundoc/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Language agnostic documentation generator";
+    mainProgram = "fundoc";
     homepage = "https://github.com/daynin/fundoc";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/fusee-launcher/default.nix b/pkgs/development/tools/fusee-launcher/default.nix
index 117bd0c9450e2..776f5c064aefb 100644
--- a/pkgs/development/tools/fusee-launcher/default.nix
+++ b/pkgs/development/tools/fusee-launcher/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://github.com/Cease-and-DeSwitch/fusee-launcher";
     description = "Work-in-progress launcher for one of the Tegra X1 bootROM exploits";
+    mainProgram = "fusee-launcher";
     license = licenses.gpl2;
     maintainers = with maintainers; [ pneumaticat ];
   };
diff --git a/pkgs/development/tools/fusee-nano/default.nix b/pkgs/development/tools/fusee-nano/default.nix
index e1c5520026199..67706b726f977 100644
--- a/pkgs/development/tools/fusee-nano/default.nix
+++ b/pkgs/development/tools/fusee-nano/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "A minimalist re-implementation of the Fusée Gelée exploit";
+    mainProgram = "fusee-nano";
     homepage = "https://github.com/DavidBuchanan314/fusee-nano";
     license = lib.licenses.mit;
     platforms = lib.platforms.linux;
diff --git a/pkgs/development/tools/fx/default.nix b/pkgs/development/tools/fx/default.nix
index 30c9d92b3670d..3448a41378eaa 100644
--- a/pkgs/development/tools/fx/default.nix
+++ b/pkgs/development/tools/fx/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Terminal JSON viewer";
+    mainProgram = "fx";
     homepage = "https://github.com/antonmedv/fx";
     changelog = "https://github.com/antonmedv/fx/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/galen/default.nix b/pkgs/development/tools/galen/default.nix
index d1e02f411cd36..581a6f99374e0 100644
--- a/pkgs/development/tools/galen/default.nix
+++ b/pkgs/development/tools/galen/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://galenframework.com";
     description = "Automated layout testing for websites";
+    mainProgram = "galen";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.asl20;
     maintainers = [ ];
diff --git a/pkgs/development/tools/gauge/default.nix b/pkgs/development/tools/gauge/default.nix
index 5998e3254d344..865588fcd1b2d 100644
--- a/pkgs/development/tools/gauge/default.nix
+++ b/pkgs/development/tools/gauge/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Light weight cross-platform test automation";
+    mainProgram = "gauge";
     homepage = "https://gauge.org";
     license = licenses.asl20;
     maintainers = [ maintainers.vdemeester ];
diff --git a/pkgs/development/tools/gcov2lcov/default.nix b/pkgs/development/tools/gcov2lcov/default.nix
index 5ee3476eac2ce..0ac499923f2aa 100644
--- a/pkgs/development/tools/gcov2lcov/default.nix
+++ b/pkgs/development/tools/gcov2lcov/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Convert go coverage files to lcov format";
+    mainProgram = "gcov2lcov";
     homepage = "https://github.com/jandelgado/gcov2lcov";
     changelog = "https://github.com/jandelgado/gcov2lcov/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/gdlv/default.nix b/pkgs/development/tools/gdlv/default.nix
index 0992dc90b6866..0d2cc49c9e028 100644
--- a/pkgs/development/tools/gdlv/default.nix
+++ b/pkgs/development/tools/gdlv/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "GUI frontend for Delve";
+    mainProgram = "gdlv";
     homepage = "https://github.com/aarzilli/gdlv";
     maintainers = with maintainers; [ mmlb ];
     license = licenses.gpl3;
diff --git a/pkgs/development/tools/gen-license/default.nix b/pkgs/development/tools/gen-license/default.nix
index a3495866576d8..fda5322d4cca3 100644
--- a/pkgs/development/tools/gen-license/default.nix
+++ b/pkgs/development/tools/gen-license/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Create licenses for your projects right from your terminal";
+    mainProgram = "gen-license";
     homepage = "https://github.com/nexxeln/license-generator";
     license = licenses.mit;
     maintainers = [ maintainers.ryanccn ];
diff --git a/pkgs/development/tools/gendef/default.nix b/pkgs/development/tools/gendef/default.nix
index d799a33f31274..431c2a644b121 100644
--- a/pkgs/development/tools/gendef/default.nix
+++ b/pkgs/development/tools/gendef/default.nix
@@ -14,6 +14,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     description = "A tool which generate def files from DLLs";
+    mainProgram = "gendef";
     homepage = "https://sourceforge.net/p/mingw-w64/wiki2/gendef/";
     license = lib.licenses.gpl3Plus;
     maintainers = with lib.maintainers; [ hughobrien ];
diff --git a/pkgs/development/tools/ginkgo/default.nix b/pkgs/development/tools/ginkgo/default.nix
index bd5b0df849f9b..b5472d796e7a2 100644
--- a/pkgs/development/tools/ginkgo/default.nix
+++ b/pkgs/development/tools/ginkgo/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
     homepage = "https://onsi.github.io/ginkgo/";
     changelog = "https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md";
     description = "A Modern Testing Framework for Go";
+    mainProgram = "ginkgo";
     longDescription = ''
       Ginkgo is a testing framework for Go designed to help you write expressive
       tests. It is best paired with the Gomega matcher library. When combined,
diff --git a/pkgs/development/tools/git-ps-rs/default.nix b/pkgs/development/tools/git-ps-rs/default.nix
index 5ca3686baee75..6d4a5be75418e 100644
--- a/pkgs/development/tools/git-ps-rs/default.nix
+++ b/pkgs/development/tools/git-ps-rs/default.nix
@@ -27,6 +27,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Tool for working with a stack of patches";
+    mainProgram = "gps";
     homepage = "https://git-ps.sh/";
     license = licenses.mit;
     maintainers = with maintainers; [ alizter ];
diff --git a/pkgs/development/tools/github-commenter/default.nix b/pkgs/development/tools/github-commenter/default.nix
index e40a3117e91bd..1e6c3e7ed0578 100644
--- a/pkgs/development/tools/github-commenter/default.nix
+++ b/pkgs/development/tools/github-commenter/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Command line utility for creating GitHub comments on Commits, Pull Request Reviews or Issues";
+    mainProgram = "github-commenter";
     license = licenses.asl20;
     homepage = "https://github.com/cloudposse/github-commenter";
     maintainers = [ maintainers.mmahut ];
diff --git a/pkgs/development/tools/github/bump/default.nix b/pkgs/development/tools/github/bump/default.nix
index 2ba546699f174..52c3117b1ef96 100644
--- a/pkgs/development/tools/github/bump/default.nix
+++ b/pkgs/development/tools/github/bump/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
     license = licenses.mit;
     homepage = "https://github.com/mroth/bump";
     description = "CLI tool to draft a GitHub Release for the next semantic version";
+    mainProgram = "bump";
     maintainers = with maintainers; [ doronbehar ];
   };
 }
diff --git a/pkgs/development/tools/github/cligh/default.nix b/pkgs/development/tools/github/cligh/default.nix
index 426a9735a90eb..29976464479b5 100644
--- a/pkgs/development/tools/github/cligh/default.nix
+++ b/pkgs/development/tools/github/cligh/default.nix
@@ -18,6 +18,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "http://the-brannons.com/software/cligh.html";
     description = "A simple command-line interface to the facilities of Github";
+    mainProgram = "cligh";
     longDescription = ''
         Cligh is a simple command-line interface to the facilities of GitHub.
         It is written by Christopher Brannon chris@the-brannons.com. The
diff --git a/pkgs/development/tools/github/github-release/default.nix b/pkgs/development/tools/github/github-release/default.nix
index 40fe1575d0450..6960c6dada55b 100644
--- a/pkgs/development/tools/github/github-release/default.nix
+++ b/pkgs/development/tools/github/github-release/default.nix
@@ -37,6 +37,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Commandline app to create and edit releases on Github (and upload artifacts)";
+    mainProgram = "github-release";
     longDescription = ''
       A small commandline app written in Go that allows you to easily create and
       delete releases of your projects on Github.
diff --git a/pkgs/development/tools/glock/default.nix b/pkgs/development/tools/glock/default.nix
index b2d1e09e74f37..503877328973a 100644
--- a/pkgs/development/tools/glock/default.nix
+++ b/pkgs/development/tools/glock/default.nix
@@ -19,6 +19,7 @@ buildGoPackage rec {
   meta = with lib; {
     homepage = "https://github.com/robfig/glock";
     description = "A command-line tool to lock Go dependencies to specific revisions";
+    mainProgram = "glock";
     license = licenses.mit;
     maintainers = [ maintainers.rushmorem ];
   };
diff --git a/pkgs/development/tools/glpaper/default.nix b/pkgs/development/tools/glpaper/default.nix
index 3a2cb1c63c6e1..f6f285d45a0bd 100644
--- a/pkgs/development/tools/glpaper/default.nix
+++ b/pkgs/development/tools/glpaper/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     description =
       "Wallpaper program for wlroots based Wayland compositors such as sway that allows you to render glsl shaders as your wallpaper";
+    mainProgram = "glpaper";
     homepage = "https://hg.sr.ht/~scoopta/glpaper";
     license = licenses.gpl3Plus;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/go-bindata-assetfs/default.nix b/pkgs/development/tools/go-bindata-assetfs/default.nix
index dff78895fa575..0218870776021 100644
--- a/pkgs/development/tools/go-bindata-assetfs/default.nix
+++ b/pkgs/development/tools/go-bindata-assetfs/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Serve embedded files from jteeuwen/go-bindata";
+    mainProgram = "go-bindata-assetfs";
     license = licenses.bsd2;
     maintainers = with maintainers; [ avnik ];
   };
diff --git a/pkgs/development/tools/go-bindata/default.nix b/pkgs/development/tools/go-bindata/default.nix
index 5d3e5d714f255..c5d25a7a949e4 100644
--- a/pkgs/development/tools/go-bindata/default.nix
+++ b/pkgs/development/tools/go-bindata/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
     homepage = "https://github.com/kevinburke/go-bindata";
     changelog = "https://github.com/kevinburke/go-bindata/blob/v${version}/CHANGELOG.md";
     description = "A small utility which generates Go code from any file, useful for embedding binary data in a Go program";
+    mainProgram = "go-bindata";
     maintainers = with maintainers; [ ];
     license = licenses.cc0;
   };
diff --git a/pkgs/development/tools/go-callvis/default.nix b/pkgs/development/tools/go-callvis/default.nix
index d45ebc4ab60b4..a954781fb28f9 100644
--- a/pkgs/development/tools/go-callvis/default.nix
+++ b/pkgs/development/tools/go-callvis/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Visualize call graph of a Go program using Graphviz";
+    mainProgram = "go-callvis";
     homepage = "https://github.com/ofabry/go-callvis";
     license = licenses.mit;
     maintainers = with maintainers; [ meain ];
diff --git a/pkgs/development/tools/go-junit-report/default.nix b/pkgs/development/tools/go-junit-report/default.nix
index 2a7379db08474..c8a7322b42c53 100644
--- a/pkgs/development/tools/go-junit-report/default.nix
+++ b/pkgs/development/tools/go-junit-report/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Convert go test output to junit xml";
+    mainProgram = "go-junit-report";
     homepage = "https://github.com/jstemmer/go-junit-report";
     license = licenses.mit;
     maintainers = with maintainers; [ cryptix ];
diff --git a/pkgs/development/tools/go-motion/default.nix b/pkgs/development/tools/go-motion/default.nix
index 7505522d46fdb..3db974affe13d 100644
--- a/pkgs/development/tools/go-motion/default.nix
+++ b/pkgs/development/tools/go-motion/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Navigation and insight in Go";
+    mainProgram = "motion";
     longDescription = ''
       Motion is a tool that was designed to work with editors. It is providing
       contextual information for a given offset(option) from a file or
diff --git a/pkgs/development/tools/go-outline/default.nix b/pkgs/development/tools/go-outline/default.nix
index 1d23818a96fb4..c8f7f4efa5020 100644
--- a/pkgs/development/tools/go-outline/default.nix
+++ b/pkgs/development/tools/go-outline/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Utility to extract JSON representation of declarations from a Go source file";
+    mainProgram = "go-outline";
     homepage = "https://github.com/ramya-rao-a/go-outline";
     maintainers = with maintainers; [ vdemeester ];
     license = licenses.mit;
diff --git a/pkgs/development/tools/go-symbols/default.nix b/pkgs/development/tools/go-symbols/default.nix
index a259b768561b4..c6683c067a345 100644
--- a/pkgs/development/tools/go-symbols/default.nix
+++ b/pkgs/development/tools/go-symbols/default.nix
@@ -16,6 +16,7 @@ buildGoPackage rec {
 
   meta = {
     description = "A utility for extracting a JSON representation of the package symbols from a go source tree";
+    mainProgram = "go-symbols";
     homepage = "https://github.com/acroca/go-symbols";
     maintainers = with lib.maintainers; [ vdemeester ];
     license = lib.licenses.mit;
diff --git a/pkgs/development/tools/goa/default.nix b/pkgs/development/tools/goa/default.nix
index 2519dff139b40..6b96bbcc696a0 100644
--- a/pkgs/development/tools/goa/default.nix
+++ b/pkgs/development/tools/goa/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Design-based APIs and microservices in Go";
+    mainProgram = "goa";
     homepage = "https://goa.design";
     license = licenses.mit;
     maintainers = with maintainers; [ rushmorem ];
diff --git a/pkgs/development/tools/gocode-gomod/default.nix b/pkgs/development/tools/gocode-gomod/default.nix
index 9c1752b9ad117..cf10eda0d1f42 100644
--- a/pkgs/development/tools/gocode-gomod/default.nix
+++ b/pkgs/development/tools/gocode-gomod/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "An autocompletion daemon for the Go programming language";
+    mainProgram = "gocode-gomod";
     longDescription = ''
       Gocode is a helper tool which is intended to be integrated with your
       source code editor, like vim, neovim and emacs. It provides several
diff --git a/pkgs/development/tools/goconst/default.nix b/pkgs/development/tools/goconst/default.nix
index da4e9e90ef8b5..e564d8bcb3c46 100644
--- a/pkgs/development/tools/goconst/default.nix
+++ b/pkgs/development/tools/goconst/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Find in Go repeated strings that could be replaced by a constant";
+    mainProgram = "goconst";
     homepage = "https://github.com/jgautheron/goconst";
     license = licenses.mit;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/goconvey/default.nix b/pkgs/development/tools/goconvey/default.nix
index c7477d48e55a9..66b913c1d6427 100644
--- a/pkgs/development/tools/goconvey/default.nix
+++ b/pkgs/development/tools/goconvey/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = {
     description = "Go testing in the browser. Integrates with `go test`. Write behavioral tests in Go";
+    mainProgram = "goconvey";
     homepage = "https://github.com/smartystreets/goconvey";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ vdemeester ];
diff --git a/pkgs/development/tools/gocover-cobertura/default.nix b/pkgs/development/tools/gocover-cobertura/default.nix
index 78f69d3b260d1..f1d005a47059e 100644
--- a/pkgs/development/tools/gocover-cobertura/default.nix
+++ b/pkgs/development/tools/gocover-cobertura/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/boumenot/gocover-cobertura";
     description = "This is a simple helper tool for generating XML output in Cobertura format for CIs like Jenkins and others from go tool cover output.";
+    mainProgram = "gocover-cobertura";
     license = licenses.mit;
     maintainers = with maintainers; [ hmajid2301 ];
   };
diff --git a/pkgs/development/tools/gocyclo/default.nix b/pkgs/development/tools/gocyclo/default.nix
index 6dc87ccdc91c6..49aa20f2be705 100644
--- a/pkgs/development/tools/gocyclo/default.nix
+++ b/pkgs/development/tools/gocyclo/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Calculate cyclomatic complexities of functions in Go source code";
+    mainProgram = "gocyclo";
     homepage = "https://github.com/fzipp/gocyclo";
     license = licenses.bsd3;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/godef/default.nix b/pkgs/development/tools/godef/default.nix
index 085e996f350f3..d79406a2ac43e 100644
--- a/pkgs/development/tools/godef/default.nix
+++ b/pkgs/development/tools/godef/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = {
     description = "Print where symbols are defined in Go source code";
+    mainProgram = "godef";
     homepage = "https://github.com/rogpeppe/godef/";
     maintainers = with lib.maintainers; [ vdemeester rvolosatovs ];
     license = lib.licenses.bsd3;
diff --git a/pkgs/development/tools/gogetdoc/default.nix b/pkgs/development/tools/gogetdoc/default.nix
index adbb01ea7e3db..ed6f586a01ba1 100644
--- a/pkgs/development/tools/gogetdoc/default.nix
+++ b/pkgs/development/tools/gogetdoc/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Gets documentation for items in Go source code";
+    mainProgram = "gogetdoc";
     homepage = "https://github.com/zmb3/gogetdoc";
     license = licenses.bsd3;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/goimports-reviser/default.nix b/pkgs/development/tools/goimports-reviser/default.nix
index 30cf393334c9c..437b27ce8435b 100644
--- a/pkgs/development/tools/goimports-reviser/default.nix
+++ b/pkgs/development/tools/goimports-reviser/default.nix
@@ -38,6 +38,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Right imports sorting & code formatting tool (goimports alternative)";
+    mainProgram = "goimports-reviser";
     homepage = "https://github.com/incu6us/goimports-reviser";
     license = licenses.mit;
     maintainers = with maintainers; [ jk ];
diff --git a/pkgs/development/tools/gojsontoyaml/default.nix b/pkgs/development/tools/gojsontoyaml/default.nix
index 88708f5b19fb2..f05d0405aebf1 100644
--- a/pkgs/development/tools/gojsontoyaml/default.nix
+++ b/pkgs/development/tools/gojsontoyaml/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Simply tool to convert json to yaml written in Go";
+    mainProgram = "gojsontoyaml";
     homepage = "https://github.com/brancz/gojsontoyaml";
     license = licenses.mit;
     maintainers = [ maintainers.bryanasdev000 ];
diff --git a/pkgs/development/tools/gokart/default.nix b/pkgs/development/tools/gokart/default.nix
index 9521fcad96a4b..11e68b9bede17 100644
--- a/pkgs/development/tools/gokart/default.nix
+++ b/pkgs/development/tools/gokart/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Static analysis tool for securing Go code";
+    mainProgram = "gokart";
     homepage = "https://github.com/praetorian-inc/gokart";
     license = licenses.asl20;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/tools/golint/default.nix b/pkgs/development/tools/golint/default.nix
index 34876a1e64008..47e1ee0a54556 100644
--- a/pkgs/development/tools/golint/default.nix
+++ b/pkgs/development/tools/golint/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://golang.org";
     description = "Linter for Go source code";
+    mainProgram = "golint";
     license = licenses.bsd3;
     maintainers = with maintainers; [ jhillyerd tomberek ];
   };
diff --git a/pkgs/development/tools/gomacro/default.nix b/pkgs/development/tools/gomacro/default.nix
index c172945b9067f..0317f40712eb9 100644
--- a/pkgs/development/tools/gomacro/default.nix
+++ b/pkgs/development/tools/gomacro/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Interactive Go interpreter and debugger with generics and macros";
+    mainProgram = "gomacro";
     homepage = "https://github.com/cosmos72/gomacro";
     license = licenses.mpl20;
     maintainers = with maintainers; [ shofius ];
diff --git a/pkgs/development/tools/gomodifytags/default.nix b/pkgs/development/tools/gomodifytags/default.nix
index 08f95346306e2..2d256bbf72800 100644
--- a/pkgs/development/tools/gomodifytags/default.nix
+++ b/pkgs/development/tools/gomodifytags/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = {
     description = "Go tool to modify struct field tags";
+    mainProgram = "gomodifytags";
     homepage = "https://github.com/fatih/gomodifytags";
     maintainers = with lib.maintainers; [ vdemeester ];
     license = lib.licenses.bsd3;
diff --git a/pkgs/development/tools/gomplate/default.nix b/pkgs/development/tools/gomplate/default.nix
index d9268a40386bf..9be7b5a87fc7d 100644
--- a/pkgs/development/tools/gomplate/default.nix
+++ b/pkgs/development/tools/gomplate/default.nix
@@ -39,6 +39,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A flexible commandline tool for template rendering";
+    mainProgram = "gomplate";
     homepage = "https://gomplate.ca/";
     changelog = "https://github.com/hairyhenderson/gomplate/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/google-clasp/default.nix b/pkgs/development/tools/google-clasp/default.nix
index 99520de7349cf..2b2d6758410bf 100644
--- a/pkgs/development/tools/google-clasp/default.nix
+++ b/pkgs/development/tools/google-clasp/default.nix
@@ -21,6 +21,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "Develop Apps Script Projects locally";
+    mainProgram = "clasp";
     homepage = "https://github.com/google/clasp#readme";
     changelog = "https://github.com/google/clasp/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/gopkgs/default.nix b/pkgs/development/tools/gopkgs/default.nix
index 7b57354e3ea74..ba7d9ffccde3f 100644
--- a/pkgs/development/tools/gopkgs/default.nix
+++ b/pkgs/development/tools/gopkgs/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = {
     description = "Tool to get list available Go packages";
+    mainProgram = "gopkgs";
     homepage = "https://github.com/uudashr/gopkgs";
     maintainers = with lib.maintainers; [ vdemeester ];
     license = lib.licenses.mit;
diff --git a/pkgs/development/tools/gops/default.nix b/pkgs/development/tools/gops/default.nix
index 6b191d00bf3bb..853be3e71caa2 100644
--- a/pkgs/development/tools/gops/default.nix
+++ b/pkgs/development/tools/gops/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool to list and diagnose Go processes currently running on your system";
+    mainProgram = "gops";
     homepage = "https://github.com/google/gops";
     license = licenses.bsd3;
     maintainers = with maintainers; [ pborzenkov ];
diff --git a/pkgs/development/tools/gore/default.nix b/pkgs/development/tools/gore/default.nix
index 4c6eac9f652a3..af9b48e85a382 100644
--- a/pkgs/development/tools/gore/default.nix
+++ b/pkgs/development/tools/gore/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Yet another Go REPL that works nicely";
+    mainProgram = "gore";
     homepage = "https://github.com/motemen/gore";
     license = licenses.mit;
     maintainers = with maintainers; [ offline ];
diff --git a/pkgs/development/tools/goresym/default.nix b/pkgs/development/tools/goresym/default.nix
index 14d4d959020c4..feec2b1aecb10 100644
--- a/pkgs/development/tools/goresym/default.nix
+++ b/pkgs/development/tools/goresym/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Go symbol recovery tool";
+    mainProgram = "GoReSym";
     homepage = "https://github.com/mandiant/GoReSym";
     license = licenses.mit;
     maintainers = with maintainers; [ thehedgeh0g ];
diff --git a/pkgs/development/tools/gosec/default.nix b/pkgs/development/tools/gosec/default.nix
index a59a331d23603..34d26d853e6b2 100644
--- a/pkgs/development/tools/gosec/default.nix
+++ b/pkgs/development/tools/gosec/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/securego/gosec";
     description = "Golang security checker";
+    mainProgram = "gosec";
     license = licenses.asl20;
     maintainers = with maintainers; [ kalbasit nilp0inter ];
   };
diff --git a/pkgs/development/tools/gotags/default.nix b/pkgs/development/tools/gotags/default.nix
index 9fa71187aa31f..f73bfa69693dc 100644
--- a/pkgs/development/tools/gotags/default.nix
+++ b/pkgs/development/tools/gotags/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "ctags-compatible tag generator for Go";
+    mainProgram = "gotags";
     homepage = "https://github.com/jstemmer/gotags";
     license = licenses.mit;
     maintainers = with maintainers; [ urandom ];
diff --git a/pkgs/development/tools/gotemplate/default.nix b/pkgs/development/tools/gotemplate/default.nix
index 706fa7312d54d..57dbba5db01e9 100644
--- a/pkgs/development/tools/gotemplate/default.nix
+++ b/pkgs/development/tools/gotemplate/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI for go text/template";
+    mainProgram = "gotemplate";
     changelog = "https://github.com/coveooss/gotemplate/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ giorgiga ];
diff --git a/pkgs/development/tools/gotest/default.nix b/pkgs/development/tools/gotest/default.nix
index e618b3e9532d4..172d2eb12edfe 100644
--- a/pkgs/development/tools/gotest/default.nix
+++ b/pkgs/development/tools/gotest/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "go test with colors";
+    mainProgram = "gotest";
     homepage = "https://github.com/rakyll/gotest";
     license = licenses.bsd3;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/gotests/default.nix b/pkgs/development/tools/gotests/default.nix
index 70d1861e74160..2086df1051bae 100644
--- a/pkgs/development/tools/gotests/default.nix
+++ b/pkgs/development/tools/gotests/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Generate Go tests from your source code";
+    mainProgram = "gotests";
     homepage = "https://github.com/cweill/gotests";
     maintainers = with maintainers; [ vdemeester ];
     license = licenses.asl20;
diff --git a/pkgs/development/tools/gotestsum/default.nix b/pkgs/development/tools/gotestsum/default.nix
index a944f344470cc..b5baad2037e4e 100644
--- a/pkgs/development/tools/gotestsum/default.nix
+++ b/pkgs/development/tools/gotestsum/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
     homepage = "https://github.com/gotestyourself/gotestsum";
     changelog = "https://github.com/gotestyourself/gotestsum/releases/tag/v${version}";
     description = "A human friendly `go test` runner";
+    mainProgram = "gotestsum";
     platforms = platforms.linux ++ platforms.darwin;
     license = licenses.asl20;
     maintainers = with maintainers; [ endocrimes ];
diff --git a/pkgs/development/tools/gotraceui/default.nix b/pkgs/development/tools/gotraceui/default.nix
index 15cc09ffebd2e..8f1bbb6a601e8 100644
--- a/pkgs/development/tools/gotraceui/default.nix
+++ b/pkgs/development/tools/gotraceui/default.nix
@@ -37,6 +37,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "An efficient frontend for Go execution traces";
+    mainProgram = "gotraceui";
     homepage = "https://github.com/dominikh/gotraceui";
     platforms = platforms.linux;
     license = licenses.mit;
diff --git a/pkgs/development/tools/govers/default.nix b/pkgs/development/tools/govers/default.nix
index eb234c82fc088..dbcb38e08e18d 100644
--- a/pkgs/development/tools/govers/default.nix
+++ b/pkgs/development/tools/govers/default.nix
@@ -17,4 +17,5 @@ buildGoPackage rec {
 
   doCheck = false; # fails, silently
 
+  meta.mainProgram = "govers";
 }
diff --git a/pkgs/development/tools/gox/default.nix b/pkgs/development/tools/gox/default.nix
index 2cd8bbd8e06cd..f36c546a1fe56 100644
--- a/pkgs/development/tools/gox/default.nix
+++ b/pkgs/development/tools/gox/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/mitchellh/gox";
     description = "A dead simple, no frills Go cross compile tool";
+    mainProgram = "gox";
     license = licenses.mpl20;
     maintainers = with maintainers; [ azahi ];
   };
diff --git a/pkgs/development/tools/gpp/default.nix b/pkgs/development/tools/gpp/default.nix
index 9e49b0c0284fd..902c0bbf02b53 100644
--- a/pkgs/development/tools/gpp/default.nix
+++ b/pkgs/development/tools/gpp/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "General-purpose preprocessor with customizable syntax";
+    mainProgram = "gpp";
     homepage = "https://logological.org/gpp";
     license = licenses.lgpl3;
     maintainers = with maintainers; [ nmattia ];
diff --git a/pkgs/development/tools/gptcommit/default.nix b/pkgs/development/tools/gptcommit/default.nix
index 19d18edf1c42b..2d5251a4126c8 100644
--- a/pkgs/development/tools/gptcommit/default.nix
+++ b/pkgs/development/tools/gptcommit/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage {
 
   meta = with lib; {
     description = "A git prepare-commit-msg hook for authoring commit messages with GPT-3. ";
+    mainProgram = "gptcommit";
     homepage = "https://github.com/zurawiki/gptcommit";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ happysalada ];
diff --git a/pkgs/development/tools/gqlgenc/default.nix b/pkgs/development/tools/gqlgenc/default.nix
index 252713e6848ec..fff705c4051a5 100644
--- a/pkgs/development/tools/gqlgenc/default.nix
+++ b/pkgs/development/tools/gqlgenc/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Go tool for building GraphQL client with gqlgen";
+    mainProgram = "gqlgenc";
     homepage = "https://github.com/Yamashou/gqlgenc";
     license = licenses.mit;
     maintainers = with maintainers; [ milran ];
diff --git a/pkgs/development/tools/grabserial/default.nix b/pkgs/development/tools/grabserial/default.nix
index 2ce3ff49c417b..e26dcf63f77b7 100644
--- a/pkgs/development/tools/grabserial/default.nix
+++ b/pkgs/development/tools/grabserial/default.nix
@@ -18,6 +18,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Python based serial dump and timing program";
+    mainProgram = "grabserial";
     homepage = "https://github.com/tbird20d/grabserial";
     license = licenses.gpl2;
     maintainers = with maintainers; [ vmandela ];
diff --git a/pkgs/development/tools/graphql-client/default.nix b/pkgs/development/tools/graphql-client/default.nix
index b41a7a02bdc6b..428ebf9080da9 100644
--- a/pkgs/development/tools/graphql-client/default.nix
+++ b/pkgs/development/tools/graphql-client/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A GraphQL tool for Rust projects";
+    mainProgram = "graphql-client";
     homepage = "https://github.com/graphql-rust/graphql-client";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ bbigras ];
diff --git a/pkgs/development/tools/gron/default.nix b/pkgs/development/tools/gron/default.nix
index cc8a721902773..4ef6216c370b9 100644
--- a/pkgs/development/tools/gron/default.nix
+++ b/pkgs/development/tools/gron/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Make JSON greppable!";
+    mainProgram = "gron";
     longDescription = ''
       gron transforms JSON into discrete assignments to make it easier to grep
       for what you want and see the absolute 'path' to it. It eases the
diff --git a/pkgs/development/tools/guile/g-wrap/default.nix b/pkgs/development/tools/guile/g-wrap/default.nix
index 516076012423d..30aa5d12a849a 100644
--- a/pkgs/development/tools/guile/g-wrap/default.nix
+++ b/pkgs/development/tools/guile/g-wrap/default.nix
@@ -23,6 +23,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A wrapper generator for Guile";
+    mainProgram = "g-wrap-config";
     longDescription = ''
       G-Wrap is a tool (and Guile library) for generating function wrappers for
       inter-language calls.  It currently only supports generating Guile
diff --git a/pkgs/development/tools/guile/guile-hall/default.nix b/pkgs/development/tools/guile/guile-hall/default.nix
index b786a3427373e..3c57fb4da8ce0 100644
--- a/pkgs/development/tools/guile/guile-hall/default.nix
+++ b/pkgs/development/tools/guile/guile-hall/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Project manager and build tool for GNU guile";
+    mainProgram = "hall";
     homepage = "https://gitlab.com/a-sassmannshausen/guile-hall";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ sikmir ];
diff --git a/pkgs/development/tools/halfempty/default.nix b/pkgs/development/tools/halfempty/default.nix
index 113647da9ff88..62b0d161b4123 100644
--- a/pkgs/development/tools/halfempty/default.nix
+++ b/pkgs/development/tools/halfempty/default.nix
@@ -40,6 +40,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Fast, parallel test case minimization tool";
+    mainProgram = "halfempty";
     homepage = "https://github.com/googleprojectzero/halfempty/";
     maintainers = with lib.maintainers; [ fpletz ];
     license = with lib.licenses; [ asl20 ];
diff --git a/pkgs/development/tools/haskell/mueval/default.nix b/pkgs/development/tools/haskell/mueval/default.nix
index 0cbe573872825..aaa3ad98e7e1a 100644
--- a/pkgs/development/tools/haskell/mueval/default.nix
+++ b/pkgs/development/tools/haskell/mueval/default.nix
@@ -25,4 +25,5 @@ in stdenv.mkDerivation {
   '';
 
   passthru = { inherit defaultPkgs; };
+  meta.mainProgram = "mueval";
 }
diff --git a/pkgs/development/tools/hatch/default.nix b/pkgs/development/tools/hatch/default.nix
index 2e967097d065f..4f3dec85ff67d 100644
--- a/pkgs/development/tools/hatch/default.nix
+++ b/pkgs/development/tools/hatch/default.nix
@@ -94,6 +94,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Modern, extensible Python project manager";
+    mainProgram = "hatch";
     homepage = "https://hatch.pypa.io/latest/";
     changelog = "https://github.com/pypa/hatch/blob/hatch-v${version}/docs/history/hatch.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/hcloud/default.nix b/pkgs/development/tools/hcloud/default.nix
index 6cfebf31ec898..621defa3e455b 100644
--- a/pkgs/development/tools/hcloud/default.nix
+++ b/pkgs/development/tools/hcloud/default.nix
@@ -35,6 +35,7 @@ buildGoModule rec {
   meta = with lib; {
     changelog = "https://github.com/hetznercloud/cli/releases/tag/v${version}";
     description = "A command-line interface for Hetzner Cloud, a provider for cloud virtual private servers";
+    mainProgram = "hcloud";
     homepage = "https://github.com/hetznercloud/cli";
     license = licenses.mit;
     maintainers = with maintainers; [ zauberpony techknowlogick ];
diff --git a/pkgs/development/tools/headache/default.nix b/pkgs/development/tools/headache/default.nix
index 7ed2492901361..52e7da939b222 100644
--- a/pkgs/development/tools/headache/default.nix
+++ b/pkgs/development/tools/headache/default.nix
@@ -22,6 +22,7 @@ buildDunePackage rec {
   meta = with lib; {
     homepage = "https://github.com/frama-c/${pname}";
     description = "Lightweight tool for managing headers in source code files";
+    mainProgram = "headache";
     license = licenses.lgpl2Plus;
     maintainers = with maintainers; [ niols ];
   };
diff --git a/pkgs/development/tools/heroku/default.nix b/pkgs/development/tools/heroku/default.nix
index 1958517a95c94..d2257d7af25df 100644
--- a/pkgs/development/tools/heroku/default.nix
+++ b/pkgs/development/tools/heroku/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation {
   meta = {
     homepage = "https://devcenter.heroku.com/articles/heroku-cli";
     description = "Everything you need to get started using Heroku";
+    mainProgram = "heroku";
     maintainers = with lib.maintainers; [ aflatter mirdhyn marsam ];
     license = lib.licenses.mit;
     platforms = with lib.platforms; unix;
diff --git a/pkgs/development/tools/hors/default.nix b/pkgs/development/tools/hors/default.nix
index 579a2a27922f2..39710ad74acdb 100644
--- a/pkgs/development/tools/hors/default.nix
+++ b/pkgs/development/tools/hors/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Instant coding answers via the command line";
+    mainProgram = "hors";
     homepage = "https://github.com/windsoilder/hors";
     changelog = "https://github.com/WindSoilder/hors/blob/v${version}/CHANGELOG.md";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/tools/hostess/default.nix b/pkgs/development/tools/hostess/default.nix
index 7bf78c403318c..f15f67e3b7cb5 100644
--- a/pkgs/development/tools/hostess/default.nix
+++ b/pkgs/development/tools/hostess/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "An idempotent command-line utility for managing your /etc/hosts* file.";
+    mainProgram = "hostess";
     license = licenses.mit;
     maintainers = with maintainers; [ edlimerkaj ];
   };
diff --git a/pkgs/development/tools/hred/default.nix b/pkgs/development/tools/hred/default.nix
index 5e9b7f9122b90..040035dbe0dc4 100644
--- a/pkgs/development/tools/hred/default.nix
+++ b/pkgs/development/tools/hred/default.nix
@@ -25,6 +25,7 @@ buildNpmPackage rec {
 
   meta = {
     description = "A command-line tool to extract data from HTML";
+    mainProgram = "hred";
     license = lib.licenses.mit;
     homepage = "https://github.com/danburzo/hred";
     maintainers = with lib.maintainers; [ tejing ];
diff --git a/pkgs/development/tools/htmltest/default.nix b/pkgs/development/tools/htmltest/default.nix
index 4d9db942cdbc3..cbb82695a46e1 100644
--- a/pkgs/development/tools/htmltest/default.nix
+++ b/pkgs/development/tools/htmltest/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to test generated HTML output";
+    mainProgram = "htmltest";
     longDescription = ''
       htmltest runs your HTML output through a series of checks to ensure all your
       links, images, scripts references work, your alt tags are filled in, etc.
diff --git a/pkgs/development/tools/icr/default.nix b/pkgs/development/tools/icr/default.nix
index 7f6b0440b9495..21c1b53244595 100644
--- a/pkgs/development/tools/icr/default.nix
+++ b/pkgs/development/tools/icr/default.nix
@@ -38,6 +38,7 @@ crystal.buildCrystalPackage rec {
 
   meta = with lib; {
     description = "Interactive console for the Crystal programming language";
+    mainProgram = "icr";
     homepage = "https://github.com/crystal-community/icr";
     license = licenses.mit;
     maintainers = with maintainers; [ peterhoeg ];
diff --git a/pkgs/development/tools/iferr/default.nix b/pkgs/development/tools/iferr/default.nix
index 0e8f797f77ce2..9a7b25a4cb40a 100644
--- a/pkgs/development/tools/iferr/default.nix
+++ b/pkgs/development/tools/iferr/default.nix
@@ -20,6 +20,7 @@ buildGoPackage rec {
 
   meta = with lib; {
     description = ''Generate "if err != nil {" block'';
+    mainProgram = "iferr";
     homepage = "https://github.com/koron/iferr";
     license = licenses.mit;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/ijq/default.nix b/pkgs/development/tools/ijq/default.nix
index 45a8ca79d2363..aa7d7724acba3 100644
--- a/pkgs/development/tools/ijq/default.nix
+++ b/pkgs/development/tools/ijq/default.nix
@@ -29,6 +29,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Interactive wrapper for jq";
+    mainProgram = "ijq";
     homepage = "https://git.sr.ht/~gpanders/ijq";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ justinas SuperSandro2000 ];
diff --git a/pkgs/development/tools/ilspycmd/default.nix b/pkgs/development/tools/ilspycmd/default.nix
index 265a17f224d9b..b04bb86f4443f 100644
--- a/pkgs/development/tools/ilspycmd/default.nix
+++ b/pkgs/development/tools/ilspycmd/default.nix
@@ -34,6 +34,7 @@ buildDotnetModule rec {
 
   meta = with lib; {
     description = "Tool for decompiling .NET assemblies and generating portable PDBs";
+    mainProgram = "ilspycmd";
     homepage = "https://github.com/icsharpcode/ILSpy";
     changelog = "https://github.com/icsharpcode/ILSpy/releases/tag/${src.rev}";
     license = with licenses; [
diff --git a/pkgs/development/tools/img/default.nix b/pkgs/development/tools/img/default.nix
index b14e6e3b2615c..0dab6b28dc741 100644
--- a/pkgs/development/tools/img/default.nix
+++ b/pkgs/development/tools/img/default.nix
@@ -48,6 +48,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Standalone, daemon-less, unprivileged Dockerfile and OCI compatible container image builder. ";
+    mainProgram = "img";
     license = licenses.mit;
     homepage = "https://github.com/genuinetools/img";
     maintainers = with maintainers; [ bryanasdev000 ];
diff --git a/pkgs/development/tools/impl/default.nix b/pkgs/development/tools/impl/default.nix
index bec08cb7e90ce..c4f5ec41c4ad6 100644
--- a/pkgs/development/tools/impl/default.nix
+++ b/pkgs/development/tools/impl/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Generate method stubs for implementing an interface";
+    mainProgram = "impl";
     homepage = "https://github.com/josharian/impl";
     license = licenses.mit;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/ineffassign/default.nix b/pkgs/development/tools/ineffassign/default.nix
index cd4f41ad670eb..0febc4db51e7b 100644
--- a/pkgs/development/tools/ineffassign/default.nix
+++ b/pkgs/development/tools/ineffassign/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Detect ineffectual assignments in Go code";
+    mainProgram = "ineffassign";
     homepage = "https://github.com/gordonklaus/ineffassign";
     license = licenses.mit;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/initool/default.nix b/pkgs/development/tools/initool/default.nix
index 5658ba1eafdf5..a37d74afbd6a2 100644
--- a/pkgs/development/tools/initool/default.nix
+++ b/pkgs/development/tools/initool/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
     inherit (mlton.meta) platforms;
 
     description = "Manipulate INI files from the command line";
+    mainProgram = "initool";
     homepage = "https://github.com/dbohdan/initool";
     license = licenses.mit;
     maintainers = with maintainers; [ e1mo ];
diff --git a/pkgs/development/tools/irony-server/default.nix b/pkgs/development/tools/irony-server/default.nix
index 192a33ad7ca75..d3c0818a829c5 100644
--- a/pkgs/development/tools/irony-server/default.nix
+++ b/pkgs/development/tools/irony-server/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "The server part of irony";
+    mainProgram = "irony-server";
     homepage = "https://melpa.org/#/irony";
     maintainers = [ maintainers.deepfire ];
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/java/cfr/default.nix b/pkgs/development/tools/java/cfr/default.nix
index 7dfd1a0841623..9604b8df2ff18 100644
--- a/pkgs/development/tools/java/cfr/default.nix
+++ b/pkgs/development/tools/java/cfr/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Another java decompiler";
+    mainProgram = "cfr";
     longDescription = ''
       CFR will decompile modern Java features - Java 8 lambdas (pre and post
       Java beta 103 changes), Java 7 String switches etc, but is written
diff --git a/pkgs/development/tools/java/java-language-server/default.nix b/pkgs/development/tools/java/java-language-server/default.nix
index d1f050f326f15..0cca4d4ca56ed 100644
--- a/pkgs/development/tools/java/java-language-server/default.nix
+++ b/pkgs/development/tools/java/java-language-server/default.nix
@@ -53,6 +53,7 @@ maven.buildMavenPackage rec {
 
   meta = with lib; {
     description = "A Java language server based on v3.0 of the protocol and implemented using the Java compiler API";
+    mainProgram = "java-language-server";
     homepage = "https://github.com/georgewfraser/java-language-server";
     license = licenses.mit;
     maintainers = with maintainers; [ hqurve ];
diff --git a/pkgs/development/tools/java/jextract/default.nix b/pkgs/development/tools/java/jextract/default.nix
index d4b514d43fef2..45879c8c64cc9 100644
--- a/pkgs/development/tools/java/jextract/default.nix
+++ b/pkgs/development/tools/java/jextract/default.nix
@@ -89,6 +89,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A tool which mechanically generates Java bindings from a native library headers";
+    mainProgram = "jextract";
     homepage = "https://github.com/openjdk/jextract";
     license = licenses.gpl2Only;
     maintainers = with maintainers; [ sharzy ];
diff --git a/pkgs/development/tools/java/sawjap/default.nix b/pkgs/development/tools/java/sawjap/default.nix
index 0686d4fb2ed46..bc48b0342ab2b 100644
--- a/pkgs/development/tools/java/sawjap/default.nix
+++ b/pkgs/development/tools/java/sawjap/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation {
 
   meta = sawja.meta // {
     description = "Pretty-print .class files";
+    mainProgram = "sawjap";
   };
 
 }
diff --git a/pkgs/development/tools/java/visualvm/default.nix b/pkgs/development/tools/java/visualvm/default.nix
index 04b74bc525706..6b5a53e92105f 100644
--- a/pkgs/development/tools/java/visualvm/default.nix
+++ b/pkgs/development/tools/java/visualvm/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A visual interface for viewing information about Java applications";
+    mainProgram = "visualvm";
     longDescription = ''
       VisualVM is a visual tool integrating several commandline JDK
       tools and lightweight profiling capabilities. Designed for both
diff --git a/pkgs/development/tools/jbang/default.nix b/pkgs/development/tools/jbang/default.nix
index 836847350e7bc..4722180150391 100644
--- a/pkgs/development/tools/jbang/default.nix
+++ b/pkgs/development/tools/jbang/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Run java as scripts anywhere";
+    mainProgram = "jbang";
     longDescription = ''
       jbang uses the java language to build scripts similar to groovy scripts. Dependencies are automatically
       downloaded and the java code runs.
diff --git a/pkgs/development/tools/jf/default.nix b/pkgs/development/tools/jf/default.nix
index f28a02bbb24cf..2c32a888f34e1 100644
--- a/pkgs/development/tools/jf/default.nix
+++ b/pkgs/development/tools/jf/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A small utility to safely format and print JSON objects in the commandline";
+    mainProgram = "jf";
     homepage = "https://github.com/sayanarijit/jf";
     license = licenses.mit;
     maintainers = [ maintainers.sayanarijit ];
diff --git a/pkgs/development/tools/jfmt/default.nix b/pkgs/development/tools/jfmt/default.nix
index 45a18edfffbef..98fe184e0329e 100644
--- a/pkgs/development/tools/jfmt/default.nix
+++ b/pkgs/development/tools/jfmt/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "CLI utility to format json files";
+    mainProgram = "jfmt";
     homepage = "https://github.com/scruffystuffs/jfmt.rs";
     changelog = "https://github.com/scruffystuffs/jfmt.rs/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/jid/default.nix b/pkgs/development/tools/jid/default.nix
index c4c891778114c..cecb179c467ec 100644
--- a/pkgs/development/tools/jid/default.nix
+++ b/pkgs/development/tools/jid/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = {
     description = "A command-line tool to incrementally drill down JSON";
+    mainProgram = "jid";
     homepage = "https://github.com/simeji/jid";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ stesie ];
diff --git a/pkgs/development/tools/jless/default.nix b/pkgs/development/tools/jless/default.nix
index 6c6c70f89092e..a07db6781ef34 100644
--- a/pkgs/development/tools/jless/default.nix
+++ b/pkgs/development/tools/jless/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command-line pager for JSON data";
+    mainProgram = "jless";
     homepage = "https://jless.io";
     changelog = "https://github.com/PaulJuliusMartinez/jless/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/jp/default.nix b/pkgs/development/tools/jp/default.nix
index f606fd19d48fd..7c59234f6f937 100644
--- a/pkgs/development/tools/jp/default.nix
+++ b/pkgs/development/tools/jp/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A command line interface to the JMESPath expression language for JSON";
+    mainProgram = "jp";
     homepage = "https://github.com/jmespath/jp";
     maintainers = with maintainers; [ cransom ];
     license = licenses.asl20;
diff --git a/pkgs/development/tools/jpexs/default.nix b/pkgs/development/tools/jpexs/default.nix
index c61246016a8b0..f9ba57b10e8bd 100644
--- a/pkgs/development/tools/jpexs/default.nix
+++ b/pkgs/development/tools/jpexs/default.nix
@@ -42,6 +42,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Flash SWF decompiler and editor";
+    mainProgram = "ffdec";
     longDescription = ''
       Open-source Flash SWF decompiler and editor. Extract resources,
       convert SWF to FLA, edit ActionScript, replace images, sounds,
diff --git a/pkgs/development/tools/jqp/default.nix b/pkgs/development/tools/jqp/default.nix
index 58902f43d31b6..9c604d5cab4c1 100644
--- a/pkgs/development/tools/jqp/default.nix
+++ b/pkgs/development/tools/jqp/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A TUI playground to experiment with jq";
+    mainProgram = "jqp";
     homepage = "https://github.com/noahgorstein/jqp";
     license = licenses.mit;
     maintainers = with maintainers; [ dit7ya ];
diff --git a/pkgs/development/tools/jsduck/default.nix b/pkgs/development/tools/jsduck/default.nix
index 5c11b87f76ff2..debd33c807457 100644
--- a/pkgs/development/tools/jsduck/default.nix
+++ b/pkgs/development/tools/jsduck/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Simple JavaScript Duckumentation generator";
+    mainProgram = "jsduck";
     homepage    = "https://github.com/senchalabs/jsduck";
     license     = with licenses; gpl3;
     maintainers = with maintainers; [ periklis nicknovitski ];
diff --git a/pkgs/development/tools/json2hcl/default.nix b/pkgs/development/tools/json2hcl/default.nix
index 47ee2cfe4bf14..39fa629df62b6 100644
--- a/pkgs/development/tools/json2hcl/default.nix
+++ b/pkgs/development/tools/json2hcl/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Convert JSON to HCL, and vice versa";
+    mainProgram = "json2hcl";
     homepage = "https://github.com/kvz/json2hcl";
     license = licenses.mit;
     maintainers = with maintainers; [ matthewbauer ];
diff --git a/pkgs/development/tools/jtc/default.nix b/pkgs/development/tools/jtc/default.nix
index c8a13c07cb607..399b9a0f70665 100644
--- a/pkgs/development/tools/jtc/default.nix
+++ b/pkgs/development/tools/jtc/default.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "JSON manipulation and transformation tool";
+    mainProgram = "jtc";
     homepage = "https://github.com/ldn-softdev/jtc";
     license = licenses.mit;
     maintainers = [ maintainers.marsam ];
diff --git a/pkgs/development/tools/k6/default.nix b/pkgs/development/tools/k6/default.nix
index c5c8f85e91265..407a7c79760eb 100644
--- a/pkgs/development/tools/k6/default.nix
+++ b/pkgs/development/tools/k6/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A modern load testing tool, using Go and JavaScript";
+    mainProgram = "k6";
     homepage = "https://k6.io/";
     changelog = "https://github.com/grafana/k6/releases/tag/v${version}";
     license = licenses.agpl3Plus;
diff --git a/pkgs/development/tools/kaf/default.nix b/pkgs/development/tools/kaf/default.nix
index 89ed7a8b276d8..eb098c2728734 100644
--- a/pkgs/development/tools/kaf/default.nix
+++ b/pkgs/development/tools/kaf/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Modern CLI for Apache Kafka, written in Go";
+    mainProgram = "kaf";
     homepage = "https://github.com/birdayz/kaf";
     license = licenses.asl20;
     maintainers = with maintainers; [ zarelit ];
diff --git a/pkgs/development/tools/kafka-delta-ingest/default.nix b/pkgs/development/tools/kafka-delta-ingest/default.nix
index 9f8983305f7cf..2af697dac6886 100644
--- a/pkgs/development/tools/kafka-delta-ingest/default.nix
+++ b/pkgs/development/tools/kafka-delta-ingest/default.nix
@@ -44,6 +44,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     broken = stdenv.isDarwin;
     description = "A highly efficient daemon for streaming data from Kafka into Delta Lake";
+    mainProgram = "kafka-delta-ingest";
     homepage = "https://github.com/delta-io/kafka-delta-ingest";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/kafkactl/default.nix b/pkgs/development/tools/kafkactl/default.nix
index ef5aafa501e62..f184eeb653a47 100644
--- a/pkgs/development/tools/kafkactl/default.nix
+++ b/pkgs/development/tools/kafkactl/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
     homepage = "https://github.com/deviceinsight/kafkactl";
     changelog = "https://github.com/deviceinsight/kafkactl/blob/v${version}/CHANGELOG.md";
     description = "Command Line Tool for managing Apache Kafka";
+    mainProgram = "kafkactl";
     longDescription = ''
       A command-line interface for interaction with Apache Kafka.
       Features:
diff --git a/pkgs/development/tools/karate/default.nix b/pkgs/development/tools/karate/default.nix
index bd99903e984f2..1b5a08d5e674c 100644
--- a/pkgs/development/tools/karate/default.nix
+++ b/pkgs/development/tools/karate/default.nix
@@ -20,6 +20,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "API Test Automation Made Simple";
+    mainProgram = "karate";
     longDescription = ''
       Karate is the only open-source tool to combine API
       test-automation, mocks, performance-testing and even UI
diff --git a/pkgs/development/tools/kcat/default.nix b/pkgs/development/tools/kcat/default.nix
index f363e4e51039e..8ece67da031e2 100644
--- a/pkgs/development/tools/kcat/default.nix
+++ b/pkgs/development/tools/kcat/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A generic non-JVM producer and consumer for Apache Kafka";
+    mainProgram = "kcat";
     homepage = "https://github.com/edenhill/kcat";
     license = licenses.bsd2;
     platforms = platforms.linux ++ platforms.darwin;
diff --git a/pkgs/development/tools/kdash/default.nix b/pkgs/development/tools/kdash/default.nix
index 73746875247dc..505aead90fd61 100644
--- a/pkgs/development/tools/kdash/default.nix
+++ b/pkgs/development/tools/kdash/default.nix
@@ -30,6 +30,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple and fast dashboard for Kubernetes";
+    mainProgram = "kdash";
     homepage = "https://github.com/kdash-rs/kdash";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ matthiasbeyer ];
diff --git a/pkgs/development/tools/kgt/default.nix b/pkgs/development/tools/kgt/default.nix
index cb716e317d6ff..e0ef6bd6d15d5 100644
--- a/pkgs/development/tools/kgt/default.nix
+++ b/pkgs/development/tools/kgt/default.nix
@@ -66,6 +66,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "BNF wrangling and railroad diagrams";
+    mainProgram = "kgt";
     longDescription = ''
       KGT: Kate's Grammar Tool
 
diff --git a/pkgs/development/tools/knightos/genkfs/default.nix b/pkgs/development/tools/knightos/genkfs/default.nix
index fc13b68258abe..c3bf1a1e7a75b 100644
--- a/pkgs/development/tools/knightos/genkfs/default.nix
+++ b/pkgs/development/tools/knightos/genkfs/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage    = "https://knightos.org/";
     description = "Utility to write a KFS filesystem into a ROM file";
+    mainProgram = "genkfs";
     license     = licenses.mit;
     maintainers = with maintainers; [ siraben ];
     platforms   = platforms.all;
diff --git a/pkgs/development/tools/knightos/kcc/default.nix b/pkgs/development/tools/knightos/kcc/default.nix
index 90a493697c8a5..3de660ce065c9 100644
--- a/pkgs/development/tools/knightos/kcc/default.nix
+++ b/pkgs/development/tools/knightos/kcc/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage    = "https://knightos.org/";
     description = "KnightOS C compiler";
+    mainProgram = "kcc";
     license     = licenses.gpl2Plus;
     maintainers = with maintainers; [ siraben ];
     platforms   = platforms.unix;
diff --git a/pkgs/development/tools/knightos/kimg/default.nix b/pkgs/development/tools/knightos/kimg/default.nix
index 70eea0f7b6a4f..b987d11ce4bd4 100644
--- a/pkgs/development/tools/knightos/kimg/default.nix
+++ b/pkgs/development/tools/knightos/kimg/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage    = "https://knightos.org/";
     description = "Converts image formats supported by stb_image to the KnightOS image format";
+    mainProgram = "kimg";
     license     = licenses.mit;
     maintainers = with maintainers; [ siraben ];
     platforms   = platforms.all;
diff --git a/pkgs/development/tools/knightos/kpack/default.nix b/pkgs/development/tools/knightos/kpack/default.nix
index 447959a1e6129..5035b064b6554 100644
--- a/pkgs/development/tools/knightos/kpack/default.nix
+++ b/pkgs/development/tools/knightos/kpack/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage    = "https://knightos.org/";
     description = "A tool to create or extract KnightOS packages";
+    mainProgram = "kpack";
     license     = licenses.lgpl2Only;
     maintainers = with maintainers; [ siraben ];
     platforms   = platforms.unix;
diff --git a/pkgs/development/tools/knightos/mkrom/default.nix b/pkgs/development/tools/knightos/mkrom/default.nix
index 21caa5b8b32a4..a95f9530992a0 100644
--- a/pkgs/development/tools/knightos/mkrom/default.nix
+++ b/pkgs/development/tools/knightos/mkrom/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage    = "https://knightos.org/";
     description = "Packages KnightOS distribution files into a ROM";
+    mainProgram = "mkrom";
     license     = licenses.mit;
     maintainers = with maintainers; [ siraben ];
     platforms   = platforms.all;
diff --git a/pkgs/development/tools/knightos/mktiupgrade/default.nix b/pkgs/development/tools/knightos/mktiupgrade/default.nix
index efe8d454b2c45..0cd8553458666 100644
--- a/pkgs/development/tools/knightos/mktiupgrade/default.nix
+++ b/pkgs/development/tools/knightos/mktiupgrade/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage    = "https://knightos.org/";
     description = "Makes TI calculator upgrade files from ROM dumps";
+    mainProgram = "mktiupgrade";
     license     = licenses.mit;
     maintainers = with maintainers; [ siraben ];
     platforms   = platforms.unix;
diff --git a/pkgs/development/tools/knightos/patchrom/default.nix b/pkgs/development/tools/knightos/patchrom/default.nix
index 67d7159e50215..6eb4e2b308b45 100644
--- a/pkgs/development/tools/knightos/patchrom/default.nix
+++ b/pkgs/development/tools/knightos/patchrom/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage    = "https://knightos.org/";
     description = "Patches jumptables into TI calculator ROM files and generates an include file";
+    mainProgram = "patchrom";
     license     = licenses.mit;
     maintainers = with maintainers; [ siraben ];
     platforms   = platforms.unix;
diff --git a/pkgs/development/tools/ko/default.nix b/pkgs/development/tools/ko/default.nix
index 26ce9b428cf1f..f8fa01526b9dd 100644
--- a/pkgs/development/tools/ko/default.nix
+++ b/pkgs/development/tools/ko/default.nix
@@ -59,6 +59,7 @@ buildGoModule rec {
     homepage = "https://github.com/ko-build/ko";
     changelog = "https://github.com/ko-build/ko/releases/tag/v${version}";
     description = "Build and deploy Go applications on Kubernetes";
+    mainProgram = "ko";
     longDescription = ''
       ko is a simple, fast container image builder for Go applications.
       It's ideal for use cases where your image contains a single Go application without any/many dependencies on the OS base image (e.g. no cgo, no OS package dependencies).
diff --git a/pkgs/development/tools/konf/default.nix b/pkgs/development/tools/konf/default.nix
index 5a1a4c7bc547c..bfbf71b6f5f14 100644
--- a/pkgs/development/tools/konf/default.nix
+++ b/pkgs/development/tools/konf/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Lightweight and blazing fast kubeconfig manager which allows to use different kubeconfigs at the same time";
+    mainProgram = "konf-go";
     homepage = "https://github.com/SimonTheLeg/konf-go";
     license = licenses.asl20;
     maintainers = with maintainers; [ arikgrahl ];
diff --git a/pkgs/development/tools/konstraint/default.nix b/pkgs/development/tools/konstraint/default.nix
index b60011095f448..8d6b4e6ac8de0 100644
--- a/pkgs/development/tools/konstraint/default.nix
+++ b/pkgs/development/tools/konstraint/default.nix
@@ -38,6 +38,7 @@ buildGoModule rec {
     homepage = "https://github.com/plexsystems/konstraint";
     changelog = "https://github.com/plexsystems/konstraint/releases/tag/v${version}";
     description = "A policy management tool for interacting with Gatekeeper";
+    mainProgram = "konstraint";
     longDescription = ''
       konstraint is a CLI tool to assist with the creation and management of templates and constraints when using
       Gatekeeper. Automatically copy Rego to the ConstraintTemplate. Automatically update all ConstraintTemplates with
diff --git a/pkgs/development/tools/krankerl/default.nix b/pkgs/development/tools/krankerl/default.nix
index 6951b358b6b06..0e04733e375e0 100644
--- a/pkgs/development/tools/krankerl/default.nix
+++ b/pkgs/development/tools/krankerl/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A CLI helper to manage, package and publish Nextcloud apps";
+    mainProgram = "krankerl";
     homepage = "https://github.com/ChristophWurst/krankerl";
     license = licenses.gpl3Only;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/krew/default.nix b/pkgs/development/tools/krew/default.nix
index 900698989a457..8fc0570800a97 100644
--- a/pkgs/development/tools/krew/default.nix
+++ b/pkgs/development/tools/krew/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Package manager for kubectl plugins";
+    mainProgram = "krew";
     homepage = "https://github.com/kubernetes-sigs/krew";
     maintainers = with maintainers; [ vdemeester ];
     license = lib.licenses.asl20;
diff --git a/pkgs/development/tools/kube-prompt/default.nix b/pkgs/development/tools/kube-prompt/default.nix
index 52449342630e4..cdf2632811fca 100644
--- a/pkgs/development/tools/kube-prompt/default.nix
+++ b/pkgs/development/tools/kube-prompt/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "An interactive kubernetes client featuring auto-complete";
+    mainProgram = "kube-prompt";
     license = licenses.mit;
     homepage = "https://github.com/c-bata/kube-prompt";
     maintainers = with maintainers; [ vdemeester ];
diff --git a/pkgs/development/tools/kubeprompt/default.nix b/pkgs/development/tools/kubeprompt/default.nix
index 28f628389d292..b1122ac69cb48 100644
--- a/pkgs/development/tools/kubeprompt/default.nix
+++ b/pkgs/development/tools/kubeprompt/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Kubernetes prompt";
+    mainProgram = "kubeprompt";
     homepage = "https://github.com/jlesquembre/kubeprompt";
     license = licenses.epl20;
     maintainers = with maintainers; [ jlesquembre ];
diff --git a/pkgs/development/tools/kubie/default.nix b/pkgs/development/tools/kubie/default.nix
index 550e99d97e08b..ee0e34f144c9e 100644
--- a/pkgs/development/tools/kubie/default.nix
+++ b/pkgs/development/tools/kubie/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Shell independent context and namespace switcher for kubectl";
+    mainProgram = "kubie";
     homepage = "https://github.com/sbstp/kubie";
     license = with licenses; [ zlib ];
     maintainers = with maintainers; [ illiusdope ];
diff --git a/pkgs/development/tools/kustomize/4.nix b/pkgs/development/tools/kustomize/4.nix
index bb31aeefc39ab..9b3b73e048684 100644
--- a/pkgs/development/tools/kustomize/4.nix
+++ b/pkgs/development/tools/kustomize/4.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Customization of kubernetes YAML configurations";
+    mainProgram = "kustomize";
     longDescription = ''
       kustomize lets you customize raw, template-free YAML files for
       multiple purposes, leaving the original YAML untouched and usable
diff --git a/pkgs/development/tools/kustomize/default.nix b/pkgs/development/tools/kustomize/default.nix
index 3906f98510bcf..153b211d95abc 100644
--- a/pkgs/development/tools/kustomize/default.nix
+++ b/pkgs/development/tools/kustomize/default.nix
@@ -34,6 +34,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Customization of kubernetes YAML configurations";
+    mainProgram = "kustomize";
     longDescription = ''
       kustomize lets you customize raw, template-free YAML files for
       multiple purposes, leaving the original YAML untouched and usable
diff --git a/pkgs/development/tools/language-servers/ansible-language-server/default.nix b/pkgs/development/tools/language-servers/ansible-language-server/default.nix
index 2f0907d36b7d0..a6287cc52c0da 100644
--- a/pkgs/development/tools/language-servers/ansible-language-server/default.nix
+++ b/pkgs/development/tools/language-servers/ansible-language-server/default.nix
@@ -36,6 +36,7 @@ buildNpmPackage rec {
   meta = with lib; {
     changelog = "https://github.com/ansible/ansible-language-server/releases/tag/v${version}";
     description = "Ansible Language Server";
+    mainProgram = "ansible-language-server";
     homepage = "https://github.com/ansible/ansible-language-server";
     license = licenses.mit;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/tools/language-servers/beancount-language-server/default.nix b/pkgs/development/tools/language-servers/beancount-language-server/default.nix
index 844bc89567d06..ac62bbb4b0639 100644
--- a/pkgs/development/tools/language-servers/beancount-language-server/default.nix
+++ b/pkgs/development/tools/language-servers/beancount-language-server/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Language Server Protocol (LSP) for beancount files";
+    mainProgram = "beancount-language-server";
     homepage = "https://github.com/polarmutex/beancount-language-server";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ polarmutex ];
diff --git a/pkgs/development/tools/language-servers/buf-language-server/default.nix b/pkgs/development/tools/language-servers/buf-language-server/default.nix
index 8cfa35a1639a4..012041064f215 100644
--- a/pkgs/development/tools/language-servers/buf-language-server/default.nix
+++ b/pkgs/development/tools/language-servers/buf-language-server/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Language server for protocol buffers";
+    mainProgram = "bufls";
     homepage = "https://github.com/bufbuild/buf-language-server";
     license = licenses.asl20;
     maintainers = with maintainers; [ svrana ];
diff --git a/pkgs/development/tools/language-servers/ccls/default.nix b/pkgs/development/tools/language-servers/ccls/default.nix
index 6afbc1d4d9abe..078d9129f58a2 100644
--- a/pkgs/development/tools/language-servers/ccls/default.nix
+++ b/pkgs/development/tools/language-servers/ccls/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A c/c++ language server powered by clang";
+    mainProgram = "ccls";
     homepage    = "https://github.com/MaskRay/ccls";
     license     = licenses.asl20;
     platforms   = platforms.linux ++ platforms.darwin;
diff --git a/pkgs/development/tools/language-servers/crystalline/default.nix b/pkgs/development/tools/language-servers/crystalline/default.nix
index 67ecfdcb7fb8d..7e0bc27faceb7 100644
--- a/pkgs/development/tools/language-servers/crystalline/default.nix
+++ b/pkgs/development/tools/language-servers/crystalline/default.nix
@@ -41,6 +41,7 @@ crystal.buildCrystalPackage {
 
   meta = with lib; {
     description = "A Language Server Protocol implementation for Crystal";
+    mainProgram = "crystalline";
     homepage = "https://github.com/elbywan/crystalline";
     license = licenses.mit;
     maintainers = with maintainers; [ donovanglover ];
diff --git a/pkgs/development/tools/language-servers/csharp-ls/default.nix b/pkgs/development/tools/language-servers/csharp-ls/default.nix
index f3c4122321360..ffe6d0cf15d1c 100644
--- a/pkgs/development/tools/language-servers/csharp-ls/default.nix
+++ b/pkgs/development/tools/language-servers/csharp-ls/default.nix
@@ -17,6 +17,7 @@ buildDotnetGlobalTool rec {
 
   meta = with lib; {
     description = "Roslyn-based LSP language server for C#";
+    mainProgram = "csharp-ls";
     homepage = "https://github.com/razzmatazz/csharp-language-server";
     changelog = "https://github.com/razzmatazz/csharp-language-server/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/language-servers/dot-language-server/default.nix b/pkgs/development/tools/language-servers/dot-language-server/default.nix
index d269b63ecf819..8d25faa611aed 100644
--- a/pkgs/development/tools/language-servers/dot-language-server/default.nix
+++ b/pkgs/development/tools/language-servers/dot-language-server/default.nix
@@ -17,6 +17,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "A language server for the DOT language";
+    mainProgram = "dot-language-server";
     homepage = "https://github.com/nikeee/dot-language-server";
     license = licenses.mit;
     maintainers = [ maintainers.marsam ];
diff --git a/pkgs/development/tools/language-servers/fortls/default.nix b/pkgs/development/tools/language-servers/fortls/default.nix
index 74f07f84ffc1f..1fc614150b542 100644
--- a/pkgs/development/tools/language-servers/fortls/default.nix
+++ b/pkgs/development/tools/language-servers/fortls/default.nix
@@ -26,6 +26,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "Fortran Language Server ";
+    mainProgram = "fortls";
     homepage = "https://github.com/fortran-lang/fortls";
     license = [ licenses.mit ];
     maintainers = [ maintainers.sheepforce ];
diff --git a/pkgs/development/tools/language-servers/fortran-language-server/default.nix b/pkgs/development/tools/language-servers/fortran-language-server/default.nix
index 2c606ab715b51..81ecf59c6d43b 100644
--- a/pkgs/development/tools/language-servers/fortran-language-server/default.nix
+++ b/pkgs/development/tools/language-servers/fortran-language-server/default.nix
@@ -14,6 +14,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "FORTRAN Language Server for the Language Server Protocol";
+    mainProgram = "fortls";
     homepage = "https://pypi.org/project/fortran-language-server/";
     license = [ licenses.mit ];
     maintainers = [ maintainers.sheepforce ];
diff --git a/pkgs/development/tools/language-servers/glslls/default.nix b/pkgs/development/tools/language-servers/glslls/default.nix
index 093f6c583b166..3c282f1a23d1a 100644
--- a/pkgs/development/tools/language-servers/glslls/default.nix
+++ b/pkgs/development/tools/language-servers/glslls/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     description = "A language server implementation for GLSL";
+    mainProgram = "glslls";
     homepage = "https://github.com/svenstaro/glsl-language-server";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ declan ];
diff --git a/pkgs/development/tools/language-servers/jsonnet-language-server/default.nix b/pkgs/development/tools/language-servers/jsonnet-language-server/default.nix
index 1331d02810fd6..5e3759aba06b8 100644
--- a/pkgs/development/tools/language-servers/jsonnet-language-server/default.nix
+++ b/pkgs/development/tools/language-servers/jsonnet-language-server/default.nix
@@ -25,6 +25,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Language Server Protocol server for Jsonnet";
+    mainProgram = "jsonnet-language-server";
     homepage = "https://github.com/grafana/jsonnet-language-server";
     changelog = "https://github.com/grafana/jsonnet-language-server/releases/tag/v${version}";
     license = licenses.agpl3Only;
diff --git a/pkgs/development/tools/language-servers/metals/default.nix b/pkgs/development/tools/language-servers/metals/default.nix
index 45c061ee439c6..956e1f0c60724 100644
--- a/pkgs/development/tools/language-servers/metals/default.nix
+++ b/pkgs/development/tools/language-servers/metals/default.nix
@@ -37,6 +37,7 @@ stdenv.mkDerivation rec {
     homepage = "https://scalameta.org/metals/";
     license = licenses.asl20;
     description = "Language server for Scala";
+    mainProgram = "metals";
     maintainers = with maintainers; [ fabianhjr tomahna ];
   };
 }
diff --git a/pkgs/development/tools/language-servers/openscad-lsp/default.nix b/pkgs/development/tools/language-servers/openscad-lsp/default.nix
index c09a801198972..5b93b979cf3d1 100644
--- a/pkgs/development/tools/language-servers/openscad-lsp/default.nix
+++ b/pkgs/development/tools/language-servers/openscad-lsp/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A LSP (Language Server Protocol) server for OpenSCAD";
+    mainProgram = "openscad-lsp";
     homepage = "https://github.com/Leathong/openscad-LSP";
     license = licenses.asl20;
     maintainers = with maintainers; [ c-h-johnson ];
diff --git a/pkgs/development/tools/language-servers/svls/default.nix b/pkgs/development/tools/language-servers/svls/default.nix
index 88cfac40bfb0a..fc4ebb51e1ca9 100644
--- a/pkgs/development/tools/language-servers/svls/default.nix
+++ b/pkgs/development/tools/language-servers/svls/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "SystemVerilog language server";
+    mainProgram = "svls";
     homepage = "https://github.com/dalance/svls";
     license = licenses.mit;
     maintainers = with maintainers; [ trepetti ];
diff --git a/pkgs/development/tools/language-servers/vala-language-server/default.nix b/pkgs/development/tools/language-servers/vala-language-server/default.nix
index 40710ad83da30..0a8b3ef124a5b 100644
--- a/pkgs/development/tools/language-servers/vala-language-server/default.nix
+++ b/pkgs/development/tools/language-servers/vala-language-server/default.nix
@@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Code Intelligence for Vala & Genie";
+    mainProgram = "vala-language-server";
     homepage = "https://github.com/vala-lang/vala-language-server";
     license = licenses.lgpl21Plus;
     maintainers = with maintainers; [ andreasfelix ];
diff --git a/pkgs/development/tools/language-servers/zls/default.nix b/pkgs/development/tools/language-servers/zls/default.nix
index 2188af2a11664..b8ef6ec8988d8 100644
--- a/pkgs/development/tools/language-servers/zls/default.nix
+++ b/pkgs/development/tools/language-servers/zls/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = {
     description = "Zig LSP implementation + Zig Language Server";
+    mainProgram = "zls";
     changelog = "https://github.com/zigtools/zls/releases/tag/${finalAttrs.version}";
     homepage = "https://github.com/zigtools/zls";
     license = lib.licenses.mit;
diff --git a/pkgs/development/tools/leaps/default.nix b/pkgs/development/tools/leaps/default.nix
index a0f99496a4384..57df58ebaf4a5 100644
--- a/pkgs/development/tools/leaps/default.nix
+++ b/pkgs/development/tools/leaps/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A pair programming tool and library written in Golang";
+    mainProgram = "leaps";
     homepage = "https://github.com/jeffail/leaps/";
     license = licenses.mit;
     maintainers = with lib.maintainers; [ qknight ];
diff --git a/pkgs/development/tools/legitify/default.nix b/pkgs/development/tools/legitify/default.nix
index 8a6e9387fed3b..24ef9d6a6dc05 100644
--- a/pkgs/development/tools/legitify/default.nix
+++ b/pkgs/development/tools/legitify/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to detect and remediate misconfigurations and security risks of GitHub assets";
+    mainProgram = "legitify";
     homepage = "https://github.com/Legit-Labs/legitify";
     changelog = "https://github.com/Legit-Labs/legitify/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/librarian-puppet-go/default.nix b/pkgs/development/tools/librarian-puppet-go/default.nix
index 411660a1f0bea..303f6ce2ebafa 100644
--- a/pkgs/development/tools/librarian-puppet-go/default.nix
+++ b/pkgs/development/tools/librarian-puppet-go/default.nix
@@ -18,6 +18,7 @@ buildGoPackage rec {
   meta = with lib; {
     inherit (src.meta) homepage;
     description = "librarian-puppet implementation in go";
+    mainProgram = "librarian-puppet-go";
     license = licenses.mit;
     maintainers = with maintainers; [ womfoo ];
     platforms = [ "x86_64-linux" ];
diff --git a/pkgs/development/tools/license-scanner/default.nix b/pkgs/development/tools/license-scanner/default.nix
index c1ea963f44b15..6fcb17e4f4b24 100644
--- a/pkgs/development/tools/license-scanner/default.nix
+++ b/pkgs/development/tools/license-scanner/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Utility that provides an API and CLI to identify licenses and legal terms";
+    mainProgram = "license-scanner";
     homepage = "https://github.com/CycloneDX/license-scanner";
     changelog = "https://github.com/CycloneDX/license-scanner/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/literate-programming/eweb/default.nix b/pkgs/development/tools/literate-programming/eweb/default.nix
index 7ad966c6b69f3..b0c897252b689 100644
--- a/pkgs/development/tools/literate-programming/eweb/default.nix
+++ b/pkgs/development/tools/literate-programming/eweb/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://eweb.sourceforge.net/";
     description = "An Asciidoc-based literate programming tool, written in Python";
+    mainProgram = "etangle.py";
     platforms = platforms.linux;
     license = licenses.gpl3Plus;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/development/tools/literate-programming/funnelweb/default.nix b/pkgs/development/tools/literate-programming/funnelweb/default.nix
index 56d53104a2061..94fbaa698b74d 100644
--- a/pkgs/development/tools/literate-programming/funnelweb/default.nix
+++ b/pkgs/development/tools/literate-programming/funnelweb/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     version = "3.20";
     description = "A simple, reliable literate-programming macro preprocessor";
+    mainProgram = "fw";
     homepage = "http://www.ross.net/funnelweb/";
     license = licenses.gpl2;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/literate-programming/md-tangle/default.nix b/pkgs/development/tools/literate-programming/md-tangle/default.nix
index fd895c96c0477..c9a0c01ea02d1 100644
--- a/pkgs/development/tools/literate-programming/md-tangle/default.nix
+++ b/pkgs/development/tools/literate-programming/md-tangle/default.nix
@@ -22,6 +22,7 @@ python3.pkgs.buildPythonPackage rec {
   meta = with lib;{
     homepage = "https://github.com/joakimmj/md-tangle/";
     description = "Generates (\"tangles\") source code from Markdown documents";
+    mainProgram = "md-tangle";
     license = licenses.mit;
     maintainers = with maintainers; [ AndersonTorres ];
   };
diff --git a/pkgs/development/tools/literate-programming/nuweb/default.nix b/pkgs/development/tools/literate-programming/nuweb/default.nix
index 9bc67375e2699..c63f840a15470 100644
--- a/pkgs/development/tools/literate-programming/nuweb/default.nix
+++ b/pkgs/development/tools/literate-programming/nuweb/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A simple literate programming tool";
+    mainProgram = "nuweb";
     homepage = "https://nuweb.sourceforge.net";
     license = licenses.free;
     maintainers = [ maintainers.AndersonTorres ];
diff --git a/pkgs/development/tools/ls-lint/default.nix b/pkgs/development/tools/ls-lint/default.nix
index 7a6ae03aea786..b71f310678298 100644
--- a/pkgs/development/tools/ls-lint/default.nix
+++ b/pkgs/development/tools/ls-lint/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "An extremely fast file and directory name linter";
+    mainProgram = "ls_lint";
     homepage = "https://ls-lint.org/";
     license = licenses.mit;
     maintainers = with maintainers; [ flokli ];
diff --git a/pkgs/development/tools/lurk/default.nix b/pkgs/development/tools/lurk/default.nix
index b7ab1f95deade..a9412f2ca6eba 100644
--- a/pkgs/development/tools/lurk/default.nix
+++ b/pkgs/development/tools/lurk/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple and pretty alternative to strace";
+    mainProgram = "lurk";
     homepage = "https://github.com/jakwai01/lurk";
     changelog = "https://github.com/jakwai01/lurk/releases/tag/${src.rev}";
     license = licenses.agpl3Only;
diff --git a/pkgs/development/tools/makerpm/default.nix b/pkgs/development/tools/makerpm/default.nix
index 5b7fc83df4077..ba4d87d413423 100644
--- a/pkgs/development/tools/makerpm/default.nix
+++ b/pkgs/development/tools/makerpm/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/ivan-tkatchev/makerpm/";
     description = "A clean, simple RPM packager reimplemented completely from scratch";
+    mainProgram = "makerpm";
     license = licenses.free;
     platforms = platforms.all;
     maintainers = [ maintainers.ivan-tkatchev ];
diff --git a/pkgs/development/tools/maligned/default.nix b/pkgs/development/tools/maligned/default.nix
index 96290040761b0..ae38fdc91e3dd 100644
--- a/pkgs/development/tools/maligned/default.nix
+++ b/pkgs/development/tools/maligned/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool to detect Go structs that would take less memory if their fields were sorted";
+    mainProgram = "maligned";
     homepage = "https://github.com/mdempsky/maligned";
     license = licenses.bsd3;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/mani/default.nix b/pkgs/development/tools/mani/default.nix
index 19b1d673962a3..add490154d66c 100644
--- a/pkgs/development/tools/mani/default.nix
+++ b/pkgs/development/tools/mani/default.nix
@@ -34,6 +34,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI tool to help you manage multiple repositories";
+    mainProgram = "mani";
     longDescription = ''
       mani is a CLI tool that helps you manage multiple repositories. It's useful
       when you are working with microservices, multi-project systems, many
diff --git a/pkgs/development/tools/manifest-tool/default.nix b/pkgs/development/tools/manifest-tool/default.nix
index bba035d01e7c6..8bf6ed9804c6a 100644
--- a/pkgs/development/tools/manifest-tool/default.nix
+++ b/pkgs/development/tools/manifest-tool/default.nix
@@ -55,6 +55,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Command line tool to create and query container image manifest list/indexes";
+    mainProgram = "manifest-tool";
     homepage = "https://github.com/estesp/manifest-tool";
     license = licenses.asl20;
     maintainers = with maintainers; [ tricktron ];
diff --git a/pkgs/development/tools/mars-mips/default.nix b/pkgs/development/tools/mars-mips/default.nix
index 4fafaabaa3dce..80f80ca73418e 100644
--- a/pkgs/development/tools/mars-mips/default.nix
+++ b/pkgs/development/tools/mars-mips/default.nix
@@ -41,6 +41,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "An IDE for programming in MIPS assembly language intended for educational-level use";
+    mainProgram = "mars-mips";
     homepage = "https://courses.missouristate.edu/KenVollmar/MARS/";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.mit;
diff --git a/pkgs/development/tools/mask/default.nix b/pkgs/development/tools/mask/default.nix
index e936535779b56..3c9d62ddd26da 100644
--- a/pkgs/development/tools/mask/default.nix
+++ b/pkgs/development/tools/mask/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A CLI task runner defined by a simple markdown file";
+    mainProgram = "mask";
     homepage = "https://github.com/jacobdeichert/mask";
     changelog = "https://github.com/jacobdeichert/mask/blob/mask/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/melange/default.nix b/pkgs/development/tools/melange/default.nix
index 9e50d9f288604..40f4fa5987317 100644
--- a/pkgs/development/tools/melange/default.nix
+++ b/pkgs/development/tools/melange/default.nix
@@ -66,6 +66,7 @@ buildGoModule rec {
     homepage = "https://github.com/chainguard-dev/melange";
     changelog = "https://github.com/chainguard-dev/melange/blob/${src.rev}/NEWS.md";
     description = "Build APKs from source code";
+    mainProgram = "melange";
     license = licenses.asl20;
     maintainers = with maintainers; [ developer-guy ];
   };
diff --git a/pkgs/development/tools/minizinc/ide.nix b/pkgs/development/tools/minizinc/ide.nix
index 6954156763f8f..42dda7c4235db 100644
--- a/pkgs/development/tools/minizinc/ide.nix
+++ b/pkgs/development/tools/minizinc/ide.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.minizinc.org/";
     description = "IDE for MiniZinc, a medium-level constraint modelling language";
+    mainProgram = "MiniZincIDE";
     longDescription = ''
       MiniZinc is a medium-level constraint modelling
       language. It is high-level enough to express most
diff --git a/pkgs/development/tools/misc/abi-compliance-checker/default.nix b/pkgs/development/tools/misc/abi-compliance-checker/default.nix
index c4dda95a7f25f..3b3888861ba59 100644
--- a/pkgs/development/tools/misc/abi-compliance-checker/default.nix
+++ b/pkgs/development/tools/misc/abi-compliance-checker/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://lvc.github.io/abi-compliance-checker";
     description = "A tool for checking backward API/ABI compatibility of a C/C++ library";
+    mainProgram = "abi-compliance-checker";
     license = licenses.lgpl21;
     maintainers = [ maintainers.bhipple ];
     platforms = platforms.all;
diff --git a/pkgs/development/tools/misc/abi-dumper/default.nix b/pkgs/development/tools/misc/abi-dumper/default.nix
index 6dd2bf41ba6f3..09b30b6c62319 100644
--- a/pkgs/development/tools/misc/abi-dumper/default.nix
+++ b/pkgs/development/tools/misc/abi-dumper/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/lvc/abi-dumper";
     description = "Dump ABI of an ELF object containing DWARF debug info";
+    mainProgram = "abi-dumper";
     license = licenses.lgpl21;
     maintainers = [ maintainers.bhipple ];
     platforms = platforms.all;
diff --git a/pkgs/development/tools/misc/act/default.nix b/pkgs/development/tools/misc/act/default.nix
index 23b9c24fe95cc..7f4e992f09830 100644
--- a/pkgs/development/tools/misc/act/default.nix
+++ b/pkgs/development/tools/misc/act/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Run your GitHub Actions locally";
+    mainProgram = "act";
     homepage = "https://github.com/nektos/act";
     changelog = "https://github.com/nektos/act/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/astyle/default.nix b/pkgs/development/tools/misc/astyle/default.nix
index 541c9079db5bb..6620207ae752a 100644
--- a/pkgs/development/tools/misc/astyle/default.nix
+++ b/pkgs/development/tools/misc/astyle/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Source code indenter, formatter, and beautifier for C, C++, C# and Java";
+    mainProgram = "astyle";
     homepage = "https://astyle.sourceforge.net/";
     license = licenses.lgpl3;
     maintainers = with maintainers; [ carlossless ];
diff --git a/pkgs/development/tools/misc/automaticcomponenttoolkit/default.nix b/pkgs/development/tools/misc/automaticcomponenttoolkit/default.nix
index cf84a98467d64..59a9914891d7e 100644
--- a/pkgs/development/tools/misc/automaticcomponenttoolkit/default.nix
+++ b/pkgs/development/tools/misc/automaticcomponenttoolkit/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Toolkit to automatically generate software components: abstract API, implementation stubs and language bindings";
+    mainProgram = "act";
     homepage = "https://github.com/Autodesk/AutomaticComponentToolkit";
     license = licenses.bsd2;
     maintainers = with maintainers; [ gebner ];
diff --git a/pkgs/development/tools/misc/aviator/default.nix b/pkgs/development/tools/misc/aviator/default.nix
index fe7e1bc9cf812..69b076834f7ed 100644
--- a/pkgs/development/tools/misc/aviator/default.nix
+++ b/pkgs/development/tools/misc/aviator/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Merge YAML/JSON files in a in a convenient fashion";
+    mainProgram = "aviator";
     homepage = "https://github.com/herrjulz/aviator";
     license = licenses.mit;
     maintainers = with maintainers; [ risson ];
diff --git a/pkgs/development/tools/misc/bashdb/default.nix b/pkgs/development/tools/misc/bashdb/default.nix
index 2babde7afa6b0..52119250f69c1 100644
--- a/pkgs/development/tools/misc/bashdb/default.nix
+++ b/pkgs/development/tools/misc/bashdb/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Bash script debugger";
+    mainProgram = "bashdb";
     homepage = "https://bashdb.sourceforge.net/";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.linux;
diff --git a/pkgs/development/tools/misc/bonnmotion/default.nix b/pkgs/development/tools/misc/bonnmotion/default.nix
index cdd583bf44847..558902debd123 100644
--- a/pkgs/development/tools/misc/bonnmotion/default.nix
+++ b/pkgs/development/tools/misc/bonnmotion/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A mobility scenario generation and analysis tool";
+    mainProgram = "bm";
     longDescription = ''
       BonnMotion is a Java software which creates and analyzes mobility
       scenarios and is most commonly used as a tool for the investigation of
diff --git a/pkgs/development/tools/misc/c2ffi/default.nix b/pkgs/development/tools/misc/c2ffi/default.nix
index 77998dc339a0c..a66ae2aa35ea0 100644
--- a/pkgs/development/tools/misc/c2ffi/default.nix
+++ b/pkgs/development/tools/misc/c2ffi/default.nix
@@ -50,6 +50,7 @@ llvmPackages.stdenv.mkDerivation {
   meta = with lib; {
     homepage = "https://github.com/rpav/c2ffi";
     description = "An LLVM based tool for extracting definitions from C, C++, and Objective C header files for use with foreign function call interfaces";
+    mainProgram = "c2ffi";
     license = licenses.lgpl21Only;
     maintainers = with maintainers; [ ];
  };
diff --git a/pkgs/development/tools/misc/cbrowser/default.nix b/pkgs/development/tools/misc/cbrowser/default.nix
index a8f6e32f1e08c..3bd4d3fc721c1 100644
--- a/pkgs/development/tools/misc/cbrowser/default.nix
+++ b/pkgs/development/tools/misc/cbrowser/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Tcl/Tk GUI front-end to cscope";
+    mainProgram = "cbrowser";
 
     license = lib.licenses.gpl2Plus;
 
diff --git a/pkgs/development/tools/misc/cflow/default.nix b/pkgs/development/tools/misc/cflow/default.nix
index ab9966c6fca61..9cdd8595a4218 100644
--- a/pkgs/development/tools/misc/cflow/default.nix
+++ b/pkgs/development/tools/misc/cflow/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tool to analyze the control flow of C programs";
+    mainProgram = "cflow";
 
     longDescription = ''
       GNU cflow analyzes a collection of C source files and prints a
diff --git a/pkgs/development/tools/misc/cgdb/default.nix b/pkgs/development/tools/misc/cgdb/default.nix
index 62d26c09e514e..6bf752cb5bcf8 100644
--- a/pkgs/development/tools/misc/cgdb/default.nix
+++ b/pkgs/development/tools/misc/cgdb/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A curses interface to gdb";
+    mainProgram = "cgdb";
 
     homepage = "https://cgdb.github.io/";
 
diff --git a/pkgs/development/tools/misc/checkbashisms/default.nix b/pkgs/development/tools/misc/checkbashisms/default.nix
index b648a082fa3f6..a9840a7cf2771 100644
--- a/pkgs/development/tools/misc/checkbashisms/default.nix
+++ b/pkgs/development/tools/misc/checkbashisms/default.nix
@@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://sourceforge.net/projects/checkbaskisms/";
     description = "Check shell scripts for non-portable syntax";
+    mainProgram = "checkbashisms";
     license = lib.licenses.gpl2Plus;
     maintainers = with lib.maintainers; [ kaction ];
     platforms = lib.platforms.unix;
diff --git a/pkgs/development/tools/misc/chrpath/default.nix b/pkgs/development/tools/misc/chrpath/default.nix
index 97da80cc73398..32cb4864a3574 100644
--- a/pkgs/development/tools/misc/chrpath/default.nix
+++ b/pkgs/development/tools/misc/chrpath/default.nix
@@ -11,6 +11,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Command line tool to adjust the RPATH or RUNPATH of ELF binaries";
+    mainProgram = "chrpath";
     longDescription = ''
       chrpath changes, lists or removes the rpath or runpath setting in a
       binary. The rpath, or runpath if it is present, is where the runtime
diff --git a/pkgs/development/tools/misc/complgen/default.nix b/pkgs/development/tools/misc/complgen/default.nix
index 2f8d5e3456786..8a540e77cfe2e 100644
--- a/pkgs/development/tools/misc/complgen/default.nix
+++ b/pkgs/development/tools/misc/complgen/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Generate {bash,fish,zsh} completions from a single EBNF-like grammar";
+    mainProgram = "complgen";
     homepage = "https://github.com/adaszko/complgen";
     changelog = "https://github.com/adaszko/complgen/blob/${src.rev}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/misc/cppi/default.nix b/pkgs/development/tools/misc/cppi/default.nix
index b0dcfc6aa5ca8..d8144dd5e9b0e 100644
--- a/pkgs/development/tools/misc/cppi/default.nix
+++ b/pkgs/development/tools/misc/cppi/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
     homepage = "https://savannah.gnu.org/projects/cppi/";
 
     description = "A C preprocessor directive indenter";
+    mainProgram = "cppi";
 
     longDescription =
       '' GNU cppi indents C preprocessor directives to reflect their nesting
diff --git a/pkgs/development/tools/misc/cproto/default.nix b/pkgs/development/tools/misc/cproto/default.nix
index 9131a1795a256..976f34f35fb56 100644
--- a/pkgs/development/tools/misc/cproto/default.nix
+++ b/pkgs/development/tools/misc/cproto/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tool to generate C function prototypes from C source code";
+    mainProgram = "cproto";
     homepage = "https://invisible-island.net/cproto/";
     license = licenses.publicDomain;
     platforms = platforms.all;
diff --git a/pkgs/development/tools/misc/creduce/default.nix b/pkgs/development/tools/misc/creduce/default.nix
index 918bd2efab734..90da97ae9e18f 100644
--- a/pkgs/development/tools/misc/creduce/default.nix
+++ b/pkgs/development/tools/misc/creduce/default.nix
@@ -59,6 +59,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A C program reducer";
+    mainProgram = "creduce";
     homepage = "https://embed.cs.utah.edu/creduce";
     # Officially, the license is: https://github.com/csmith-project/creduce/blob/master/COPYING
     license = licenses.ncsa;
diff --git a/pkgs/development/tools/misc/ctags/default.nix b/pkgs/development/tools/misc/ctags/default.nix
index b33d6cafbe4ae..228de9300b0cc 100644
--- a/pkgs/development/tools/misc/ctags/default.nix
+++ b/pkgs/development/tools/misc/ctags/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A tool for fast source code browsing (exuberant ctags)";
+    mainProgram = "ctags";
     longDescription = ''
       Ctags generates an index (or tag) file of language objects found
       in source files that allows these items to be quickly and easily
diff --git a/pkgs/development/tools/misc/d-spy/default.nix b/pkgs/development/tools/misc/d-spy/default.nix
index 2d2ca20c0bc48..e48a51f4870fe 100644
--- a/pkgs/development/tools/misc/d-spy/default.nix
+++ b/pkgs/development/tools/misc/d-spy/default.nix
@@ -49,6 +49,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "D-Bus exploration tool";
+    mainProgram = "d-spy";
     homepage = "https://gitlab.gnome.org/GNOME/d-spy";
     license = with licenses; [
       lgpl3Plus # library
diff --git a/pkgs/development/tools/misc/dbench/default.nix b/pkgs/development/tools/misc/dbench/default.nix
index bb95f21f68d67..796536b9e2aad 100644
--- a/pkgs/development/tools/misc/dbench/default.nix
+++ b/pkgs/development/tools/misc/dbench/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Filesystem benchmark tool based on load patterns";
+    mainProgram = "dbench";
     homepage = "https://dbench.samba.org/";
     license = licenses.gpl3;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/misc/ddd/default.nix b/pkgs/development/tools/misc/ddd/default.nix
index e3d55472faac9..10f3fa161f73a 100644
--- a/pkgs/development/tools/misc/ddd/default.nix
+++ b/pkgs/development/tools/misc/ddd/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://www.gnu.org/software/ddd";
     description = "Graphical front-end for command-line debuggers";
+    mainProgram = "ddd";
     license = lib.licenses.gpl3Plus;
     platforms = lib.platforms.linux;
     maintainers = with lib.maintainers; [ emilytrau ];
diff --git a/pkgs/development/tools/misc/deheader/default.nix b/pkgs/development/tools/misc/deheader/default.nix
index 7847c29f67c5f..5c2fdb20376f4 100644
--- a/pkgs/development/tools/misc/deheader/default.nix
+++ b/pkgs/development/tools/misc/deheader/default.nix
@@ -51,6 +51,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tool to find and optionally remove unneeded includes in C or C++ source files";
+    mainProgram = "deheader";
     longDescription = ''
       This tool takes a list of C or C++ sourcefiles and generates a report
       on which #includes can be omitted from them -- the test, for each foo.c
diff --git a/pkgs/development/tools/misc/dfu-programmer/default.nix b/pkgs/development/tools/misc/dfu-programmer/default.nix
index 062f68c834388..71658e18d5529 100644
--- a/pkgs/development/tools/misc/dfu-programmer/default.nix
+++ b/pkgs/development/tools/misc/dfu-programmer/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     license = licenses.gpl2;
     description = "A Device Firmware Update based USB programmer for Atmel chips with a USB bootloader";
+    mainProgram = "dfu-programmer";
     homepage = "http://dfu-programmer.sourceforge.net/";
     platforms = platforms.unix;
   };
diff --git a/pkgs/development/tools/misc/direvent/default.nix b/pkgs/development/tools/misc/direvent/default.nix
index 79a238ad0c0cd..bc7b7b5160a13 100644
--- a/pkgs/development/tools/misc/direvent/default.nix
+++ b/pkgs/development/tools/misc/direvent/default.nix
@@ -13,6 +13,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Directory event monitoring daemon";
+    mainProgram = "direvent";
     homepage = "https://www.gnu.org.ua/software/direvent/";
     license = licenses.gpl3Plus;
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/misc/dura/default.nix b/pkgs/development/tools/misc/dura/default.nix
index eba3f16c36594..f82205dacaa72 100644
--- a/pkgs/development/tools/misc/dura/default.nix
+++ b/pkgs/development/tools/misc/dura/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A background process that saves uncommitted changes on git";
+    mainProgram = "dura";
     longDescription = ''
       Dura is a background process that watches your Git repositories and
       commits your uncommitted changes without impacting HEAD, the current
diff --git a/pkgs/development/tools/misc/dwz/default.nix b/pkgs/development/tools/misc/dwz/default.nix
index 0a13d4a68dd0f..852201cf71144 100644
--- a/pkgs/development/tools/misc/dwz/default.nix
+++ b/pkgs/development/tools/misc/dwz/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://sourceware.org/dwz/";
     description = "DWARF optimization and duplicate removal tool";
+    mainProgram = "dwz";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ jbcrail ];
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/misc/edb/default.nix b/pkgs/development/tools/misc/edb/default.nix
index fdde4064698ce..d6fac75190f6e 100644
--- a/pkgs/development/tools/misc/edb/default.nix
+++ b/pkgs/development/tools/misc/edb/default.nix
@@ -34,6 +34,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Cross platform AArch32/x86/x86-64 debugger";
+    mainProgram = "edb";
     homepage = "https://github.com/eteran/edb-debugger";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ lihop maxxk ];
diff --git a/pkgs/development/tools/misc/editorconfig-checker/default.nix b/pkgs/development/tools/misc/editorconfig-checker/default.nix
index 3aedd876de6d1..2b3844cefcbcd 100644
--- a/pkgs/development/tools/misc/editorconfig-checker/default.nix
+++ b/pkgs/development/tools/misc/editorconfig-checker/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
   meta = with lib; {
     changelog = "https://github.com/editorconfig-checker/editorconfig-checker/releases/tag/${src.rev}";
     description = "A tool to verify that your files are in harmony with your .editorconfig";
+    mainProgram = "editorconfig-checker";
     homepage = "https://editorconfig-checker.github.io/";
     license = licenses.mit;
     maintainers = with maintainers; [ uri-canva zowoq ];
diff --git a/pkgs/development/tools/misc/elfinfo/default.nix b/pkgs/development/tools/misc/elfinfo/default.nix
index 5ea97b77eeb84..6b0c5b21af414 100644
--- a/pkgs/development/tools/misc/elfinfo/default.nix
+++ b/pkgs/development/tools/misc/elfinfo/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Small utility for showing information about ELF files";
+    mainProgram = "elfinfo";
     homepage = "https://elfinfo.roboticoverlords.org/";
     changelog = "https://github.com/xyproto/elfinfo/releases/tag/${version}";
     license = licenses.bsd3;
diff --git a/pkgs/development/tools/misc/ezno/default.nix b/pkgs/development/tools/misc/ezno/default.nix
index a31ab15607465..89654eef5c566 100644
--- a/pkgs/development/tools/misc/ezno/default.nix
+++ b/pkgs/development/tools/misc/ezno/default.nix
@@ -26,6 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A JavaScript compiler and TypeScript checker with a focus on static analysis and runtime performance";
+    mainProgram = "ezno";
     homepage = "https://github.com/kaleidawave/ezno";
     changelog = "https://github.com/kaleidawave/ezno/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/findnewest/default.nix b/pkgs/development/tools/misc/findnewest/default.nix
index 6773e9bc0bd47..adf791cf60302 100644
--- a/pkgs/development/tools/misc/findnewest/default.nix
+++ b/pkgs/development/tools/misc/findnewest/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/0-wiz-0/findnewest";
     description = "Recursively find newest file in a hierarchy and print its timestamp";
+    mainProgram = "fn";
     license = licenses.bsd2;
     maintainers = with maintainers; [ bhipple ];
   };
diff --git a/pkgs/development/tools/misc/fsatrace/default.nix b/pkgs/development/tools/misc/fsatrace/default.nix
index 408a88687e647..d99374ac53734 100644
--- a/pkgs/development/tools/misc/fsatrace/default.nix
+++ b/pkgs/development/tools/misc/fsatrace/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/jacereda/fsatrace";
     description = "filesystem access tracer";
+    mainProgram = "fsatrace";
     license = licenses.isc;
     platforms = platforms.linux;
   };
diff --git a/pkgs/development/tools/misc/fswatch/default.nix b/pkgs/development/tools/misc/fswatch/default.nix
index 7b8f9638b7b94..0422da98839b3 100644
--- a/pkgs/development/tools/misc/fswatch/default.nix
+++ b/pkgs/development/tools/misc/fswatch/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A cross-platform file change monitor with multiple backends";
+    mainProgram = "fswatch";
     homepage = "https://github.com/emcrisostomo/fswatch";
     license = licenses.gpl3Plus;
     platforms = platforms.all;
diff --git a/pkgs/development/tools/misc/gdbgui/default.nix b/pkgs/development/tools/misc/gdbgui/default.nix
index d42639892062a..8702fc32b4813 100644
--- a/pkgs/development/tools/misc/gdbgui/default.nix
+++ b/pkgs/development/tools/misc/gdbgui/default.nix
@@ -44,6 +44,7 @@ buildPythonApplication rec {
 
   meta = with lib; {
     description = "A browser-based frontend for GDB";
+    mainProgram = "gdbgui";
     homepage = "https://www.gdbgui.com/";
     license = licenses.gpl3;
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/misc/gede/default.nix b/pkgs/development/tools/misc/gede/default.nix
index 12fe5b19a986f..6ae512657666c 100644
--- a/pkgs/development/tools/misc/gede/default.nix
+++ b/pkgs/development/tools/misc/gede/default.nix
@@ -27,6 +27,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Graphical frontend (GUI) to GDB";
+    mainProgram = "gede";
     homepage = "http://gede.dexar.se";
     license = licenses.bsd2;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/misc/gef/default.nix b/pkgs/development/tools/misc/gef/default.nix
index ddd1bf746e6c0..9b9d81ca5c0ec 100644
--- a/pkgs/development/tools/misc/gef/default.nix
+++ b/pkgs/development/tools/misc/gef/default.nix
@@ -75,6 +75,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A modern experience for GDB with advanced debugging features for exploit developers & reverse engineers";
+    mainProgram = "gef";
     homepage = "https://github.com/hugsy/gef";
     license = licenses.mit;
     platforms = platforms.all;
diff --git a/pkgs/development/tools/misc/gengetopt/default.nix b/pkgs/development/tools/misc/gengetopt/default.nix
index 6420d56bba2f3..9ef5ec24d545b 100644
--- a/pkgs/development/tools/misc/gengetopt/default.nix
+++ b/pkgs/development/tools/misc/gengetopt/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Command-line option parser generator";
+    mainProgram = "gengetopt";
 
     longDescription =
       '' GNU Gengetopt program generates a C function that uses getopt_long
diff --git a/pkgs/development/tools/misc/go-licenses/default.nix b/pkgs/development/tools/misc/go-licenses/default.nix
index d6bea02c05bd1..6d1e6dce16090 100644
--- a/pkgs/development/tools/misc/go-licenses/default.nix
+++ b/pkgs/development/tools/misc/go-licenses/default.nix
@@ -53,6 +53,7 @@ buildGoModule rec {
   meta = with lib; {
     changelog = "https://github.com/google/go-licenses/releases/tag/v${version}";
     description = "Reports on the licenses used by a Go package and its dependencies";
+    mainProgram = "go-licenses";
     homepage = "https://github.com/google/go-licenses";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ Luflosi ];
diff --git a/pkgs/development/tools/misc/go-md2man/default.nix b/pkgs/development/tools/misc/go-md2man/default.nix
index e569009f273d9..86d27a587b739 100644
--- a/pkgs/development/tools/misc/go-md2man/default.nix
+++ b/pkgs/development/tools/misc/go-md2man/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Go tool to convert markdown to man pages";
+    mainProgram = "go-md2man";
     license = licenses.mit;
     homepage = "https://github.com/cpuguy83/go-md2man";
     maintainers = with maintainers; [offline];
diff --git a/pkgs/development/tools/misc/gob2/default.nix b/pkgs/development/tools/misc/gob2/default.nix
index 06487845fb3d1..deef55569e904 100644
--- a/pkgs/development/tools/misc/gob2/default.nix
+++ b/pkgs/development/tools/misc/gob2/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Preprocessor for making GObjects with inline C code";
+    mainProgram = "gob2";
     homepage = "https://www.jirka.org/gob.html";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.unix;
diff --git a/pkgs/development/tools/misc/gopatch/default.nix b/pkgs/development/tools/misc/gopatch/default.nix
index 162f60cb30c1e..afa2bd752296c 100644
--- a/pkgs/development/tools/misc/gopatch/default.nix
+++ b/pkgs/development/tools/misc/gopatch/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Refactoring and code transformation tool for Go";
+    mainProgram = "gopatch";
     homepage = "https://github.com/uber-go/gopatch";
     changelog = "https://github.com/uber-go/gopatch/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/gperf/3.0.x.nix b/pkgs/development/tools/misc/gperf/3.0.x.nix
index 8a2fdf6ec4b31..bceef7502a878 100644
--- a/pkgs/development/tools/misc/gperf/3.0.x.nix
+++ b/pkgs/development/tools/misc/gperf/3.0.x.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Perfect hash function generator";
+    mainProgram = "gperf";
 
     longDescription = ''
       GNU gperf is a perfect hash function generator.  For a given
diff --git a/pkgs/development/tools/misc/gpuvis/default.nix b/pkgs/development/tools/misc/gpuvis/default.nix
index c0a10a09b02b9..d553f29db06e4 100644
--- a/pkgs/development/tools/misc/gpuvis/default.nix
+++ b/pkgs/development/tools/misc/gpuvis/default.nix
@@ -38,6 +38,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "GPU Trace Visualizer";
+    mainProgram = "gpuvis";
     homepage = "https://github.com/mikesart/gpuvis";
     license = licenses.mit;
     maintainers = with maintainers; [ emantor ];
diff --git a/pkgs/development/tools/misc/grcov/default.nix b/pkgs/development/tools/misc/grcov/default.nix
index c40fea7f397ea..d097f389deb94 100644
--- a/pkgs/development/tools/misc/grcov/default.nix
+++ b/pkgs/development/tools/misc/grcov/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     description =
       "Rust tool to collect and aggregate code coverage data for multiple source files";
+    mainProgram = "grcov";
     homepage = "https://github.com/mozilla/grcov";
     license = licenses.mpl20;
     maintainers = with maintainers; [ DieracDelta ];
diff --git a/pkgs/development/tools/misc/grpc-client-cli/default.nix b/pkgs/development/tools/misc/grpc-client-cli/default.nix
index a44a550c2fb8e..5a337aafb9e9b 100644
--- a/pkgs/development/tools/misc/grpc-client-cli/default.nix
+++ b/pkgs/development/tools/misc/grpc-client-cli/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "generic gRPC command line client";
+    mainProgram = "grpc-client-cli";
     maintainers = with maintainers; [ Philipp-M ];
     homepage = "https://github.com/vadimi/grpc-client-cli";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/gtkdialog/default.nix b/pkgs/development/tools/misc/gtkdialog/default.nix
index 995a6bb9cdb92..378cdb5705d24 100644
--- a/pkgs/development/tools/misc/gtkdialog/default.nix
+++ b/pkgs/development/tools/misc/gtkdialog/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
     homepage = "https://code.google.com/archive/p/gtkdialog/";
     # community links: http://murga-linux.com/puppy/viewtopic.php?t=111923 -> https://github.com/01micko/gtkdialog
     description = "Small utility for fast and easy GUI building from many scripted and compiled languages";
+    mainProgram = "gtkdialog";
     license = lib.licenses.gpl2Plus;
     platforms = lib.platforms.linux;
   };
diff --git a/pkgs/development/tools/misc/gtkperf/default.nix b/pkgs/development/tools/misc/gtkperf/default.nix
index c977ca3070e4f..a478306cad67d 100644
--- a/pkgs/development/tools/misc/gtkperf/default.nix
+++ b/pkgs/development/tools/misc/gtkperf/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Application designed to test GTK performance";
+    mainProgram = "gtkperf";
     homepage = "https://gtkperf.sourceforge.net/";
     license = with licenses; [ gpl2 ];
     maintainers = with maintainers; [ dtzWill ];
diff --git a/pkgs/development/tools/misc/help2man/default.nix b/pkgs/development/tools/misc/help2man/default.nix
index 5c54941b90775..9fd35a094db8a 100644
--- a/pkgs/development/tools/misc/help2man/default.nix
+++ b/pkgs/development/tools/misc/help2man/default.nix
@@ -44,6 +44,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Generate man pages from `--help' output";
+    mainProgram = "help2man";
     longDescription = ''
       help2man produces simple manual pages from the ‘--help’ and ‘--version’ output of other commands.
     '';
diff --git a/pkgs/development/tools/misc/highlight-assertions/default.nix b/pkgs/development/tools/misc/highlight-assertions/default.nix
index 9e4ed0e61dd86..5db0a722dc10a 100644
--- a/pkgs/development/tools/misc/highlight-assertions/default.nix
+++ b/pkgs/development/tools/misc/highlight-assertions/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool for unit testing tree sitter highlights for nvim-treesitter";
+    mainProgram = "highlight-assertions";
     homepage = "https://github.com/thehamsta/highlight-assertions";
     license = licenses.asl20;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/misc/httpref/default.nix b/pkgs/development/tools/misc/httpref/default.nix
index 4417a81b66ec6..f2c0f58a30944 100644
--- a/pkgs/development/tools/misc/httpref/default.nix
+++ b/pkgs/development/tools/misc/httpref/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Command line, offline, access to HTTP status code, common header, and port references";
+    mainProgram = "httpref";
     homepage = "https://github.com/dnnrly/httpref";
     changelog = "https://github.com/dnnrly/httpref/releases/tag/${src.rev}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/misc/husky/default.nix b/pkgs/development/tools/misc/husky/default.nix
index dd2fef2a60260..cd613b925b2d4 100644
--- a/pkgs/development/tools/misc/husky/default.nix
+++ b/pkgs/development/tools/misc/husky/default.nix
@@ -15,6 +15,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "Git hooks made easy 🐶 woof!";
+    mainProgram = "husky";
     homepage = "https://github.com/typicode/husky";
     changelog = "https://github.com/typicode/husky/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/hydra-cli/default.nix b/pkgs/development/tools/misc/hydra-cli/default.nix
index 05829eb0c999e..6044aa99216b0 100644
--- a/pkgs/development/tools/misc/hydra-cli/default.nix
+++ b/pkgs/development/tools/misc/hydra-cli/default.nix
@@ -41,6 +41,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A client for the Hydra CI";
+    mainProgram = "hydra-cli";
     homepage = "https://github.com/nlewo/hydra-cli";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ gilligan lewo ];
diff --git a/pkgs/development/tools/misc/indent/default.nix b/pkgs/development/tools/misc/indent/default.nix
index 8e6ba9b70c04d..c7cef90d0a439 100644
--- a/pkgs/development/tools/misc/indent/default.nix
+++ b/pkgs/development/tools/misc/indent/default.nix
@@ -56,6 +56,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://www.gnu.org/software/indent/";
     description = "A source code reformatter";
+    mainProgram = "indent";
     license = lib.licenses.gpl3Plus;
     maintainers = [ lib.maintainers.mmahut ];
     platforms = lib.platforms.unix;
diff --git a/pkgs/development/tools/misc/itstool/default.nix b/pkgs/development/tools/misc/itstool/default.nix
index 0f2633d71e6f9..c8889d33401b8 100644
--- a/pkgs/development/tools/misc/itstool/default.nix
+++ b/pkgs/development/tools/misc/itstool/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://itstool.org/";
     description = "XML to PO and back again";
+    mainProgram = "itstool";
     license = lib.licenses.gpl3Plus;
     platforms = lib.platforms.all;
     maintainers = [ ];
diff --git a/pkgs/development/tools/misc/jcli/default.nix b/pkgs/development/tools/misc/jcli/default.nix
index 0333b74e3e0ce..f5d9d7a858998 100644
--- a/pkgs/development/tools/misc/jcli/default.nix
+++ b/pkgs/development/tools/misc/jcli/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Jenkins CLI allows you to manage your Jenkins in an easy way";
+    mainProgram = "jcli";
     homepage = "https://jcli.jenkins-zh.cn/";
     license = licenses.mit;
     maintainers = with maintainers; [ sikmir ];
diff --git a/pkgs/development/tools/misc/jiq/default.nix b/pkgs/development/tools/misc/jiq/default.nix
index 2a0f0ed822c08..34177e142d1cd 100644
--- a/pkgs/development/tools/misc/jiq/default.nix
+++ b/pkgs/development/tools/misc/jiq/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
     homepage = "https://github.com/fiatjaf/jiq";
     license = licenses.mit;
     description = "jid on jq - interactive JSON query tool using jq expressions";
+    mainProgram = "jiq";
     maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/tools/misc/k2tf/default.nix b/pkgs/development/tools/misc/k2tf/default.nix
index 35eb679281aa9..0da0d51f3bc45 100644
--- a/pkgs/development/tools/misc/k2tf/default.nix
+++ b/pkgs/development/tools/misc/k2tf/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Kubernetes YAML to Terraform HCL converter";
+    mainProgram = "k2tf";
     homepage = "https://github.com/sl1pm4t/k2tf";
     license = licenses.mpl20;
     maintainers = [ maintainers.flokli ];
diff --git a/pkgs/development/tools/misc/kdbg/default.nix b/pkgs/development/tools/misc/kdbg/default.nix
index 283089abb99a6..cd32840239445 100644
--- a/pkgs/development/tools/misc/kdbg/default.nix
+++ b/pkgs/development/tools/misc/kdbg/default.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
       intuitive interface for setting breakpoints, inspecting variables, and
       stepping through code.
     '';
+    mainProgram = "kdbg";
     license = licenses.gpl2;
     maintainers = [ maintainers.catern ];
   };
diff --git a/pkgs/development/tools/misc/kool/default.nix b/pkgs/development/tools/misc/kool/default.nix
index fc747a476bdc3..dd5a79f17ee42 100644
--- a/pkgs/development/tools/misc/kool/default.nix
+++ b/pkgs/development/tools/misc/kool/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "From local development to the cloud: development workflow made easy";
+    mainProgram = "kool";
     homepage = "https://kool.dev";
     changelog = "https://github.com/kool-dev/kool/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/libtree/default.nix b/pkgs/development/tools/misc/libtree/default.nix
index 24083a60d28e0..621ab218669ec 100644
--- a/pkgs/development/tools/misc/libtree/default.nix
+++ b/pkgs/development/tools/misc/libtree/default.nix
@@ -40,6 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Tree ldd with an option to bundle dependencies into a single folder";
+    mainProgram = "libtree";
     homepage = "https://github.com/haampie/libtree";
     license = licenses.mit;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/misc/libwhich/default.nix b/pkgs/development/tools/misc/libwhich/default.nix
index aee79b8264440..915e1018c561b 100644
--- a/pkgs/development/tools/misc/libwhich/default.nix
+++ b/pkgs/development/tools/misc/libwhich/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Like `which`, for dynamic libraries";
+    mainProgram = "libwhich";
     homepage = "https://github.com/vtjnash/libwhich";
     license = licenses.mit;
     maintainers = with maintainers; [ dtzWill ];
diff --git a/pkgs/development/tools/misc/licenseclassifier/default.nix b/pkgs/development/tools/misc/licenseclassifier/default.nix
index 05a858130b395..11e986c245b05 100644
--- a/pkgs/development/tools/misc/licenseclassifier/default.nix
+++ b/pkgs/development/tools/misc/licenseclassifier/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A License Classifier";
+    mainProgram = "identify_license";
     longDescription = ''
       The license classifier can analyze text to determine what type of license
       it contains. It searches for license texts in a file and compares them to
diff --git a/pkgs/development/tools/misc/linuxkit/default.nix b/pkgs/development/tools/misc/linuxkit/default.nix
index 73ea58a17e4d7..118b49b10f849 100644
--- a/pkgs/development/tools/misc/linuxkit/default.nix
+++ b/pkgs/development/tools/misc/linuxkit/default.nix
@@ -53,6 +53,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A toolkit for building secure, portable and lean operating systems for containers";
+    mainProgram = "linuxkit";
     license = licenses.asl20;
     homepage = "https://github.com/linuxkit/linuxkit";
     maintainers = with maintainers; [ nicknovitski ];
diff --git a/pkgs/development/tools/misc/loccount/default.nix b/pkgs/development/tools/misc/loccount/default.nix
index d51cec639c1d5..fa128cf3cb5ce 100644
--- a/pkgs/development/tools/misc/loccount/default.nix
+++ b/pkgs/development/tools/misc/loccount/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Re-implementation of sloccount in Go";
+    mainProgram = "loccount";
     longDescription = ''
       loccount is a re-implementation of David A. Wheeler's sloccount tool
       in Go.  It is faster and handles more different languages. Because
diff --git a/pkgs/development/tools/misc/lsof/default.nix b/pkgs/development/tools/misc/lsof/default.nix
index eece4f9722312..4cce674820af0 100644
--- a/pkgs/development/tools/misc/lsof/default.nix
+++ b/pkgs/development/tools/misc/lsof/default.nix
@@ -56,6 +56,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/lsof-org/lsof";
     description = "A tool to list open files";
+    mainProgram = "lsof";
     longDescription = ''
       List open files. Can show what process has opened some file,
       socket (IPv6/IPv4/UNIX local), or partition (by opening a file
diff --git a/pkgs/development/tools/misc/ltrace/default.nix b/pkgs/development/tools/misc/ltrace/default.nix
index 9114e7cf4cef9..c9ba073f6b34c 100644
--- a/pkgs/development/tools/misc/ltrace/default.nix
+++ b/pkgs/development/tools/misc/ltrace/default.nix
@@ -55,6 +55,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Library call tracer";
+    mainProgram = "ltrace";
     homepage = "https://www.ltrace.org/";
     platforms = platforms.linux;
     license = licenses.gpl2Plus;
diff --git a/pkgs/development/tools/misc/lttng-tools/default.nix b/pkgs/development/tools/misc/lttng-tools/default.nix
index b3660f7cad9ba..bce8c2583fe67 100644
--- a/pkgs/development/tools/misc/lttng-tools/default.nix
+++ b/pkgs/development/tools/misc/lttng-tools/default.nix
@@ -16,6 +16,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Tracing tools (kernel + user space) for Linux";
+    mainProgram = "lttng";
     homepage = "https://lttng.org/";
     license = with licenses; [ lgpl21Only gpl2Only ];
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/misc/lttng-ust/generic.nix b/pkgs/development/tools/misc/lttng-ust/generic.nix
index 60b133f731444..89bc888828e20 100644
--- a/pkgs/development/tools/misc/lttng-ust/generic.nix
+++ b/pkgs/development/tools/misc/lttng-ust/generic.nix
@@ -41,6 +41,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "LTTng Userspace Tracer libraries";
+    mainProgram = "lttng-gen-tp";
     homepage = "https://lttng.org/";
     license = with licenses; [ lgpl21Only gpl2Only mit ];
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/misc/micronucleus/default.nix b/pkgs/development/tools/misc/micronucleus/default.nix
index 560cfa0c0dce2..d7141324dc971 100644
--- a/pkgs/development/tools/misc/micronucleus/default.nix
+++ b/pkgs/development/tools/misc/micronucleus/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Upload tool for micronucleus";
+    mainProgram = "micronucleus";
     homepage = "https://github.com/micronucleus/micronucleus";
     license = licenses.gpl3;
     maintainers = [ maintainers.cab404 ];
diff --git a/pkgs/development/tools/misc/mkcert/default.nix b/pkgs/development/tools/misc/mkcert/default.nix
index 0022dd003cd96..8da04668ec139 100644
--- a/pkgs/development/tools/misc/mkcert/default.nix
+++ b/pkgs/development/tools/misc/mkcert/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/FiloSottile/mkcert";
     description = "A simple tool for making locally-trusted development certificates";
+    mainProgram = "mkcert";
     license = licenses.bsd3;
     maintainers = [ maintainers.marsam ];
   };
diff --git a/pkgs/development/tools/misc/namaka/default.nix b/pkgs/development/tools/misc/namaka/default.nix
index 185f24b47211c..50259d691cbc0 100644
--- a/pkgs/development/tools/misc/namaka/default.nix
+++ b/pkgs/development/tools/misc/namaka/default.nix
@@ -40,6 +40,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Snapshot testing tool for Nix based on haumea";
+    mainProgram = "namaka";
     homepage = "https://github.com/nix-community/namaka";
     changelog = "https://github.com/nix-community/namaka/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/development/tools/misc/ninka/default.nix b/pkgs/development/tools/misc/ninka/default.nix
index 2b45af77e7a99..cfdf1d5bb3dc0 100644
--- a/pkgs/development/tools/misc/ninka/default.nix
+++ b/pkgs/development/tools/misc/ninka/default.nix
@@ -26,6 +26,7 @@ perlPackages.buildPerlPackage {
 
   meta = with lib; {
     description = "A sentence based license detector";
+    mainProgram = "ninka";
     homepage = "http://ninka.turingmachine.org/";
     license = licenses.gpl2;
     maintainers = [ maintainers.vrthra ];
diff --git a/pkgs/development/tools/misc/nix-build-uncached/default.nix b/pkgs/development/tools/misc/nix-build-uncached/default.nix
index 960b744dc738b..4471b30fc7c0a 100644
--- a/pkgs/development/tools/misc/nix-build-uncached/default.nix
+++ b/pkgs/development/tools/misc/nix-build-uncached/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A CI friendly wrapper around nix-build";
+    mainProgram = "nix-build-uncached";
     license = licenses.mit;
     homepage = "https://github.com/Mic92/nix-build-uncached";
     maintainers = [ maintainers.mic92 ];
diff --git a/pkgs/development/tools/misc/nixbang/default.nix b/pkgs/development/tools/misc/nixbang/default.nix
index bcddf4479eb02..cc5edb162a4c5 100644
--- a/pkgs/development/tools/misc/nixbang/default.nix
+++ b/pkgs/development/tools/misc/nixbang/default.nix
@@ -15,6 +15,7 @@ pythonPackages.buildPythonApplication rec {
   meta = {
     homepage = "https://github.com/madjar/nixbang";
     description = "A special shebang to run scripts in a nix-shell";
+    mainProgram = "nixbang";
     maintainers = [ lib.maintainers.madjar ];
     platforms = lib.platforms.all;
   };
diff --git a/pkgs/development/tools/misc/objconv/default.nix b/pkgs/development/tools/misc/objconv/default.nix
index ec0f5a367d1c2..9eee3cca10517 100644
--- a/pkgs/development/tools/misc/objconv/default.nix
+++ b/pkgs/development/tools/misc/objconv/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Object and executable file converter, modifier and disassembler";
+    mainProgram = "objconv";
     homepage = "https://www.agner.org/optimize/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ orivej vrthra ];
diff --git a/pkgs/development/tools/misc/opengrok/default.nix b/pkgs/development/tools/misc/opengrok/default.nix
index bf566188e5d74..88639c752faba 100644
--- a/pkgs/development/tools/misc/opengrok/default.nix
+++ b/pkgs/development/tools/misc/opengrok/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Source code search and cross reference engine";
+    mainProgram = "opengrok";
     homepage = "https://opengrok.github.io/OpenGrok/";
     changelog = "https://github.com/oracle/opengrok/releases/tag/${version}";
     license = licenses.cddl;
diff --git a/pkgs/development/tools/misc/patchelf/default.nix b/pkgs/development/tools/misc/patchelf/default.nix
index fc71c4aa4ea48..94c05394a9011 100644
--- a/pkgs/development/tools/misc/patchelf/default.nix
+++ b/pkgs/development/tools/misc/patchelf/default.nix
@@ -30,6 +30,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/NixOS/patchelf";
     license = licenses.gpl3Plus;
     description = "A small utility to modify the dynamic linker and RPATH of ELF executables";
+    mainProgram = "patchelf";
     maintainers = [ maintainers.eelco ];
     platforms = platforms.all;
   };
diff --git a/pkgs/development/tools/misc/patchelf/unstable.nix b/pkgs/development/tools/misc/patchelf/unstable.nix
index a4061855d9973..c2d9b2c0bedec 100644
--- a/pkgs/development/tools/misc/patchelf/unstable.nix
+++ b/pkgs/development/tools/misc/patchelf/unstable.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/NixOS/patchelf";
     license = licenses.gpl3;
     description = "A small utility to modify the dynamic linker and RPATH of ELF executables";
+    mainProgram = "patchelf";
     maintainers = [ maintainers.eelco ];
     platforms = platforms.all;
   };
diff --git a/pkgs/development/tools/misc/patsh/default.nix b/pkgs/development/tools/misc/patsh/default.nix
index 9fabbf789db96..0e8bafc86bd78 100644
--- a/pkgs/development/tools/misc/patsh/default.nix
+++ b/pkgs/development/tools/misc/patsh/default.nix
@@ -43,6 +43,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command-line tool for patching shell scripts inspired by resholve";
+    mainProgram = "patsh";
     homepage = "https://github.com/nix-community/patsh";
     changelog = "https://github.com/nix-community/patsh/blob/v${version}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/development/tools/misc/perfect-hash/default.nix b/pkgs/development/tools/misc/perfect-hash/default.nix
index 71747f0d11729..124758e571e9a 100644
--- a/pkgs/development/tools/misc/perfect-hash/default.nix
+++ b/pkgs/development/tools/misc/perfect-hash/default.nix
@@ -20,6 +20,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Minimal perfect hash function generator";
+    mainProgram = "perfect-hash";
     longDescription = ''
       Generate a minimal perfect hash function for a given set of keys.
       A given code template is filled with parameters, such that the
diff --git a/pkgs/development/tools/misc/planus/default.nix b/pkgs/development/tools/misc/planus/default.nix
index 9074debb26336..6580c7b213041 100644
--- a/pkgs/development/tools/misc/planus/default.nix
+++ b/pkgs/development/tools/misc/planus/default.nix
@@ -30,6 +30,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An alternative compiler for flatbuffers";
+    mainProgram = "planus";
     homepage = "https://github.com/planus-org/planus";
     changelog = "https://github.com/planus-org/planus/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/development/tools/misc/polylith/default.nix b/pkgs/development/tools/misc/polylith/default.nix
index 06aadb0092071..66e274026a0c3 100644
--- a/pkgs/development/tools/misc/polylith/default.nix
+++ b/pkgs/development/tools/misc/polylith/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A tool used to develop Polylith based architectures in Clojure";
+    mainProgram = "poly";
     homepage = "https://github.com/polyfy/polylith";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.epl10;
diff --git a/pkgs/development/tools/misc/premake/3.nix b/pkgs/development/tools/misc/premake/3.nix
index c05581f5591a6..f0891873eb58d 100644
--- a/pkgs/development/tools/misc/premake/3.nix
+++ b/pkgs/development/tools/misc/premake/3.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://premake.github.io/";
     description = "A simple build configuration and project generation tool using lua";
+    mainProgram = "premake";
     license = lib.licenses.bsd3;
     platforms = lib.platforms.unix;
   };
diff --git a/pkgs/development/tools/misc/premake/5.nix b/pkgs/development/tools/misc/premake/5.nix
index a42d4c1a7b6e8..841e8480da1ab 100644
--- a/pkgs/development/tools/misc/premake/5.nix
+++ b/pkgs/development/tools/misc/premake/5.nix
@@ -44,6 +44,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://premake.github.io";
     description = "A simple build configuration and project generation tool using lua";
+    mainProgram = "premake5";
     license = lib.licenses.bsd3;
     platforms = lib.platforms.darwin ++ lib.platforms.linux;
     broken = stdenv.isDarwin && stdenv.isAarch64;
diff --git a/pkgs/development/tools/misc/protox/default.nix b/pkgs/development/tools/misc/protox/default.nix
index 82849b6d9478e..415f19aa71b0d 100644
--- a/pkgs/development/tools/misc/protox/default.nix
+++ b/pkgs/development/tools/misc/protox/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A rust implementation of the protobuf compiler";
+    mainProgram = "protox";
     homepage = "https://github.com/andrewhickman/protox";
     changelog = "https://github.com/andrewhickman/protox/blob/${version}/CHANGELOG.md";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/development/tools/misc/ptags/default.nix b/pkgs/development/tools/misc/ptags/default.nix
index 8af08bd8311fe..aa79801583563 100644
--- a/pkgs/development/tools/misc/ptags/default.nix
+++ b/pkgs/development/tools/misc/ptags/default.nix
@@ -34,6 +34,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A parallel universal-ctags wrapper for git repository";
+    mainProgram = "ptags";
     homepage = "https://github.com/dalance/ptags";
     maintainers = with maintainers; [ pamplemousse ];
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/pwndbg/default.nix b/pkgs/development/tools/misc/pwndbg/default.nix
index d80fa230c8a4f..b9156abf84b86 100644
--- a/pkgs/development/tools/misc/pwndbg/default.nix
+++ b/pkgs/development/tools/misc/pwndbg/default.nix
@@ -52,6 +52,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Exploit Development and Reverse Engineering with GDB Made Easy";
+    mainProgram = "pwndbg";
     homepage = "https://github.com/pwndbg/pwndbg";
     license = licenses.mit;
     platforms = platforms.all;
diff --git a/pkgs/development/tools/misc/pwninit/default.nix b/pkgs/development/tools/misc/pwninit/default.nix
index 92cfa6f4fcb08..341532d00422d 100644
--- a/pkgs/development/tools/misc/pwninit/default.nix
+++ b/pkgs/development/tools/misc/pwninit/default.nix
@@ -33,6 +33,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = {
     description = "Automate starting binary exploit challenges";
+    mainProgram = "pwninit";
     homepage = "https://github.com/io12/pwninit";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.scoder12 ];
diff --git a/pkgs/development/tools/misc/qtspim/default.nix b/pkgs/development/tools/misc/qtspim/default.nix
index 1ef63f1a431d7..15fd8dd13b2c7 100644
--- a/pkgs/development/tools/misc/qtspim/default.nix
+++ b/pkgs/development/tools/misc/qtspim/default.nix
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "New user interface for spim, a MIPS simulator";
+    mainProgram = "qtspim";
     homepage = "https://spimsimulator.sourceforge.net/";
     license = licenses.bsdOriginal;
     maintainers = with maintainers; [ emilytrau ];
diff --git a/pkgs/development/tools/misc/regex-cli/default.nix b/pkgs/development/tools/misc/regex-cli/default.nix
index 4ce7310425890..f30d02bcf29f1 100644
--- a/pkgs/development/tools/misc/regex-cli/default.nix
+++ b/pkgs/development/tools/misc/regex-cli/default.nix
@@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command line tool for debugging, ad hoc benchmarking and generating regular expressions";
+    mainProgram = "regex-cli";
     homepage = "https://github.com/rust-lang/regex/tree/master/regex-cli";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/misc/replacement/default.nix b/pkgs/development/tools/misc/replacement/default.nix
index 75c5363ff6728..dde607419cae1 100644
--- a/pkgs/development/tools/misc/replacement/default.nix
+++ b/pkgs/development/tools/misc/replacement/default.nix
@@ -28,6 +28,7 @@ python3Packages.buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/siriobalmelli/replacement";
     description = "A tool to execute yaml templates and output text";
+    mainProgram = "replacement";
     longDescription = ''
         Replacement is a python utility
         that parses a yaml template and outputs text.
diff --git a/pkgs/development/tools/misc/reviewdog/default.nix b/pkgs/development/tools/misc/reviewdog/default.nix
index b08fa9d5568d4..8339c06251009 100644
--- a/pkgs/development/tools/misc/reviewdog/default.nix
+++ b/pkgs/development/tools/misc/reviewdog/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Automated code review tool integrated with any code analysis tools regardless of programming language";
+    mainProgram = "reviewdog";
     homepage = "https://github.com/reviewdog/reviewdog";
     changelog = "https://github.com/reviewdog/reviewdog/blob/v${version}/CHANGELOG.md";
     maintainers = [ maintainers.marsam ];
diff --git a/pkgs/development/tools/misc/riff/default.nix b/pkgs/development/tools/misc/riff/default.nix
index 94096a2bc5e2e..fe2e2f310fa14 100644
--- a/pkgs/development/tools/misc/riff/default.nix
+++ b/pkgs/development/tools/misc/riff/default.nix
@@ -38,6 +38,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool that automatically provides external dependencies for software projects";
+    mainProgram = "riff";
     homepage = "https://riff.sh";
     changelog = "https://github.com/DeterminateSystems/riff/releases/tag/v${version}";
     license = licenses.mpl20;
diff --git a/pkgs/development/tools/misc/rolespec/default.nix b/pkgs/development/tools/misc/rolespec/default.nix
index 7b084fae891ee..cd90d1cda9631 100644
--- a/pkgs/development/tools/misc/rolespec/default.nix
+++ b/pkgs/development/tools/misc/rolespec/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/nickjj/rolespec";
     description = "A test library for testing Ansible roles";
+    mainProgram = "rolespec";
     longDescription = ''
       A shell based test library for Ansible that works both locally and over
       Travis-CI.
diff --git a/pkgs/development/tools/misc/rsass/default.nix b/pkgs/development/tools/misc/rsass/default.nix
index 1804c1301230e..0e2e4d57823a4 100644
--- a/pkgs/development/tools/misc/rsass/default.nix
+++ b/pkgs/development/tools/misc/rsass/default.nix
@@ -14,6 +14,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Sass reimplemented in rust with nom";
+    mainProgram = "rsass";
     homepage = "https://github.com/kaj/rsass";
     changelog = "https://github.com/kaj/rsass/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/development/tools/misc/rtss/default.nix b/pkgs/development/tools/misc/rtss/default.nix
index cb5b55b8894c2..4172919d42f2f 100644
--- a/pkgs/development/tools/misc/rtss/default.nix
+++ b/pkgs/development/tools/misc/rtss/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Annotate output with relative durations between lines";
+    mainProgram = "rtss";
     homepage = "https://github.com/Freaky/rtss";
     license = licenses.mit;
     maintainers = with maintainers; [ djanatyn ];
diff --git a/pkgs/development/tools/misc/runme/default.nix b/pkgs/development/tools/misc/runme/default.nix
index d7850c18fabe3..8299ceba53956 100644
--- a/pkgs/development/tools/misc/runme/default.nix
+++ b/pkgs/development/tools/misc/runme/default.nix
@@ -67,6 +67,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Execute commands inside your runbooks, docs, and READMEs";
+    mainProgram = "runme";
     homepage = "https://runme.dev";
     changelog = "https://github.com/stateful/runme/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/misc/rustywind/default.nix b/pkgs/development/tools/misc/rustywind/default.nix
index 5fe1e15b8fa52..7c664aff4bbab 100644
--- a/pkgs/development/tools/misc/rustywind/default.nix
+++ b/pkgs/development/tools/misc/rustywind/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "CLI for organizing Tailwind CSS classes";
+    mainProgram = "rustywind";
     homepage = "https://github.com/avencera/rustywind";
     changelog = "https://github.com/avencera/rustywind/blob/${src.rev}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/misc/samply/default.nix b/pkgs/development/tools/misc/samply/default.nix
index 9d70b9bc14d63..9109de3617796 100644
--- a/pkgs/development/tools/misc/samply/default.nix
+++ b/pkgs/development/tools/misc/samply/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command line profiler for macOS and Linux";
+    mainProgram = "samply";
     homepage = "https://github.com/mstange/samply";
     changelog = "https://github.com/mstange/samply/releases/tag/samply-v${version}";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/development/tools/misc/sccache/default.nix b/pkgs/development/tools/misc/sccache/default.nix
index 9b9311529b770..1f6e6e7a040b8 100644
--- a/pkgs/development/tools/misc/sccache/default.nix
+++ b/pkgs/development/tools/misc/sccache/default.nix
@@ -36,6 +36,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Ccache with Cloud Storage";
+    mainProgram = "sccache";
     homepage = "https://github.com/mozilla/sccache";
     changelog = "https://github.com/mozilla/sccache/releases/tag/v${version}";
     maintainers = with maintainers; [ doronbehar figsoda ];
diff --git a/pkgs/development/tools/misc/scip/default.nix b/pkgs/development/tools/misc/scip/default.nix
index 176ddccbe34e1..c36d4c5b08864 100644
--- a/pkgs/development/tools/misc/scip/default.nix
+++ b/pkgs/development/tools/misc/scip/default.nix
@@ -39,6 +39,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "SCIP Code Intelligence Protocol CLI";
+    mainProgram = "scip";
     homepage = "https://github.com/sourcegraph/scip";
     changelog = "https://github.com/sourcegraph/scip/blob/${src.rev}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/misc/scriptisto/default.nix b/pkgs/development/tools/misc/scriptisto/default.nix
index 9b7b287fce5db..f3a3ba18240b7 100644
--- a/pkgs/development/tools/misc/scriptisto/default.nix
+++ b/pkgs/development/tools/misc/scriptisto/default.nix
@@ -27,6 +27,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A language-agnostic \"shebang interpreter\" that enables you to write scripts in compiled languages";
+    mainProgram = "scriptisto";
     homepage = "https://github.com/igor-petruk/scriptisto";
     changelog = "https://github.com/igor-petruk/scriptisto/releases/tag/${src.rev}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/misc/seer/default.nix b/pkgs/development/tools/misc/seer/default.nix
index 92bc871185ff1..b797287a02dc2 100644
--- a/pkgs/development/tools/misc/seer/default.nix
+++ b/pkgs/development/tools/misc/seer/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A Qt gui frontend for GDB";
+    mainProgram = "seergdb";
     homepage = "https://github.com/epasveer/seer";
     license = licenses.gpl3Only;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/misc/sipp/default.nix b/pkgs/development/tools/misc/sipp/default.nix
index 297669733c0e7..43dcd2aea9b4b 100644
--- a/pkgs/development/tools/misc/sipp/default.nix
+++ b/pkgs/development/tools/misc/sipp/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://sipp.sf.net";
     description = "The SIPp testing tool";
+    mainProgram = "sipp";
     license = licenses.gpl3;
     platforms = platforms.unix;
   };
diff --git a/pkgs/development/tools/misc/slint-lsp/default.nix b/pkgs/development/tools/misc/slint-lsp/default.nix
index dfd26ad273cce..7eb9cd05b97bc 100644
--- a/pkgs/development/tools/misc/slint-lsp/default.nix
+++ b/pkgs/development/tools/misc/slint-lsp/default.nix
@@ -54,6 +54,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Language Server Protocol (LSP) for Slint UI language";
+    mainProgram = "slint-lsp";
     homepage = "https://slint-ui.com/";
     changelog = "https://github.com/slint-ui/slint/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ gpl3Plus ];
diff --git a/pkgs/development/tools/misc/spruce/default.nix b/pkgs/development/tools/misc/spruce/default.nix
index 2cf0f184a729a..4c03d0acfab64 100644
--- a/pkgs/development/tools/misc/spruce/default.nix
+++ b/pkgs/development/tools/misc/spruce/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A BOSH template merge tool";
+    mainProgram = "spruce";
     homepage = "https://github.com/geofffranks/spruce";
     license = licenses.mit;
     maintainers = with maintainers; [ risson ];
diff --git a/pkgs/development/tools/misc/sqitch/default.nix b/pkgs/development/tools/misc/sqitch/default.nix
index 32235e85c48d2..612ef223e67be 100644
--- a/pkgs/development/tools/misc/sqitch/default.nix
+++ b/pkgs/development/tools/misc/sqitch/default.nix
@@ -44,5 +44,6 @@ stdenv.mkDerivation {
 
   meta = {
     inherit (sqitch.meta) description homepage license platforms;
+    mainProgram = "sqitch";
   };
 }
diff --git a/pkgs/development/tools/misc/strace-analyzer/default.nix b/pkgs/development/tools/misc/strace-analyzer/default.nix
index db0591cab10a1..33371bee93737 100644
--- a/pkgs/development/tools/misc/strace-analyzer/default.nix
+++ b/pkgs/development/tools/misc/strace-analyzer/default.nix
@@ -27,6 +27,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Analyzes strace output";
+    mainProgram = "strace-analyzer";
     homepage = "https://github.com/wookietreiber/strace-analyzer";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/misc/swig/default.nix b/pkgs/development/tools/misc/swig/default.nix
index 41f33f4db67fd..ad7b64c255685 100644
--- a/pkgs/development/tools/misc/swig/default.nix
+++ b/pkgs/development/tools/misc/swig/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "SWIG, an interface compiler that connects C/C++ code to higher-level languages";
+    mainProgram = "swig";
     homepage = "https://swig.org/";
     # Different types of licenses available: http://www.swig.org/Release/LICENSE .
     license = licenses.gpl3Plus;
diff --git a/pkgs/development/tools/misc/sysbench/default.nix b/pkgs/development/tools/misc/sysbench/default.nix
index 85d289e49b7ae..6bba1ebfd6118 100644
--- a/pkgs/development/tools/misc/sysbench/default.nix
+++ b/pkgs/development/tools/misc/sysbench/default.nix
@@ -46,6 +46,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Modular, cross-platform and multi-threaded benchmark tool";
+    mainProgram = "sysbench";
     longDescription = ''
       sysbench is a scriptable multi-threaded benchmark tool based on LuaJIT.
       It is most frequently used for database benchmarks, but can also be used
diff --git a/pkgs/development/tools/misc/tcptrack/default.nix b/pkgs/development/tools/misc/tcptrack/default.nix
index cf3cdf586cc45..5c1fe8c5b9b70 100644
--- a/pkgs/development/tools/misc/tcptrack/default.nix
+++ b/pkgs/development/tools/misc/tcptrack/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     inherit (src.meta) homepage;
     description = "libpcap based program for live TCP connection monitoring";
+    mainProgram = "tcptrack";
     license = licenses.lgpl21;
     platforms = platforms.linux;
     maintainers = [ maintainers.bjornfor maintainers.vrthra ];
diff --git a/pkgs/development/tools/misc/terracognita/default.nix b/pkgs/development/tools/misc/terracognita/default.nix
index 55b13dad748ba..b01d73ecc1724 100644
--- a/pkgs/development/tools/misc/terracognita/default.nix
+++ b/pkgs/development/tools/misc/terracognita/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Reads from existing Cloud Providers (reverse Terraform) and generates your infrastructure as code on Terraform configuration";
+    mainProgram = "terracognita";
     homepage = "https://github.com/cycloidio/terracognita";
     changelog = "https://github.com/cycloidio/terracognita/raw/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/terraform-ls/default.nix b/pkgs/development/tools/misc/terraform-ls/default.nix
index 814f6872d3f33..4499d113e8388 100644
--- a/pkgs/development/tools/misc/terraform-ls/default.nix
+++ b/pkgs/development/tools/misc/terraform-ls/default.nix
@@ -28,6 +28,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Terraform Language Server (official)";
+    mainProgram = "terraform-ls";
     homepage = "https://github.com/hashicorp/terraform-ls";
     changelog = "https://github.com/hashicorp/terraform-ls/blob/v${version}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/development/tools/misc/terraform-lsp/default.nix b/pkgs/development/tools/misc/terraform-lsp/default.nix
index 332913e711309..74070bd6ea8c3 100644
--- a/pkgs/development/tools/misc/terraform-lsp/default.nix
+++ b/pkgs/development/tools/misc/terraform-lsp/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Language Server Protocol for Terraform";
+    mainProgram = "terraform-lsp";
     homepage = "https://github.com/juliosueiras/terraform-lsp";
     license = licenses.mit;
     maintainers = with maintainers; [ marsam ];
diff --git a/pkgs/development/tools/misc/terraformer/default.nix b/pkgs/development/tools/misc/terraformer/default.nix
index 4b6001a17c70e..dc8ad0644fcb4 100644
--- a/pkgs/development/tools/misc/terraformer/default.nix
+++ b/pkgs/development/tools/misc/terraformer/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI tool to generate terraform files from existing infrastructure (reverse Terraform). Infrastructure to Code";
+    mainProgram = "terraformer";
     homepage = "https://github.com/GoogleCloudPlatform/terraformer";
     license = licenses.asl20;
     maintainers = [ maintainers.marsam ];
diff --git a/pkgs/development/tools/misc/terser/default.nix b/pkgs/development/tools/misc/terser/default.nix
index f58473eb54cfd..3c484b5372fb7 100644
--- a/pkgs/development/tools/misc/terser/default.nix
+++ b/pkgs/development/tools/misc/terser/default.nix
@@ -15,6 +15,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "JavaScript parser, mangler and compressor toolkit for ES6+";
+    mainProgram = "terser";
     homepage = "https://terser.org";
     license = licenses.bsd2;
     maintainers = with maintainers; [ talyz ];
diff --git a/pkgs/development/tools/misc/texi2html/default.nix b/pkgs/development/tools/misc/texi2html/default.nix
index 98f846b7c2f7a..66609d8d17e18 100644
--- a/pkgs/development/tools/misc/texi2html/default.nix
+++ b/pkgs/development/tools/misc/texi2html/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Perl script which converts Texinfo source files to HTML output";
+    mainProgram = "texi2html";
     homepage = "https://www.nongnu.org/texi2html/";
     license = licenses.gpl2;
     maintainers = [ maintainers.marcweber ];
diff --git a/pkgs/development/tools/misc/texlab/default.nix b/pkgs/development/tools/misc/texlab/default.nix
index 1c504f6fbf683..9a6a1ad331398 100644
--- a/pkgs/development/tools/misc/texlab/default.nix
+++ b/pkgs/development/tools/misc/texlab/default.nix
@@ -50,6 +50,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An implementation of the Language Server Protocol for LaTeX";
+    mainProgram = "texlab";
     homepage = "https://github.com/latex-lsp/texlab";
     changelog = "https://github.com/latex-lsp/texlab/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/tie/default.nix b/pkgs/development/tools/misc/tie/default.nix
index 52a740ed1c8c4..70d64af371860 100644
--- a/pkgs/development/tools/misc/tie/default.nix
+++ b/pkgs/development/tools/misc/tie/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://www.ctan.org/tex-archive/web/tie";
     description = "Allow multiple web change files";
+    mainProgram = "tie";
     platforms = platforms.all;
     maintainers = with maintainers; [ vrthra ];
     license = licenses.abstyles;
diff --git a/pkgs/development/tools/misc/tockloader/default.nix b/pkgs/development/tools/misc/tockloader/default.nix
index fbca0b0359ded..d81760daa5fcc 100644
--- a/pkgs/development/tools/misc/tockloader/default.nix
+++ b/pkgs/development/tools/misc/tockloader/default.nix
@@ -32,6 +32,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for programming Tock onto hardware boards";
+    mainProgram = "tockloader";
     homepage = "https://github.com/tock/tockloader";
     changelog = "https://github.com/tock/tockloader/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/topiary/default.nix b/pkgs/development/tools/misc/topiary/default.nix
index cb4f3884d79fd..5c8e57d3414b6 100644
--- a/pkgs/development/tools/misc/topiary/default.nix
+++ b/pkgs/development/tools/misc/topiary/default.nix
@@ -50,6 +50,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A uniform formatter for simple languages, as part of the Tree-sitter ecosystem";
+    mainProgram = "topiary";
     homepage = "https://github.com/tweag/topiary";
     changelog = "https://github.com/tweag/topiary/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/travis/default.nix b/pkgs/development/tools/misc/travis/default.nix
index 0be7721fe0809..494604e975f17 100644
--- a/pkgs/development/tools/misc/travis/default.nix
+++ b/pkgs/development/tools/misc/travis/default.nix
@@ -9,6 +9,7 @@ bundlerEnv {
 
   meta = with lib; {
     description = "CLI and Ruby client library for Travis CI";
+    mainProgram = "travis";
     homepage    = "https://github.com/travis-ci/travis.rb";
     license     = licenses.mit;
     maintainers = with maintainers; [ zimbatm nicknovitski ];
diff --git a/pkgs/development/tools/misc/ttags/default.nix b/pkgs/development/tools/misc/ttags/default.nix
index f07f2d3ef5e8c..c765d0c308d4c 100644
--- a/pkgs/development/tools/misc/ttags/default.nix
+++ b/pkgs/development/tools/misc/ttags/default.nix
@@ -21,6 +21,7 @@ in rustPlatform.buildRustPackage {
 
   meta = with lib; {
     description = "Generate tags using tree-sitter";
+    mainProgram = "ttags";
     longDescription = ''
       ttags generates tags (similar to ctags) for various
       languages, using tree-sitter.
diff --git a/pkgs/development/tools/misc/typical/default.nix b/pkgs/development/tools/misc/typical/default.nix
index 7944f14ca4d6d..8c094a2e1f18f 100644
--- a/pkgs/development/tools/misc/typical/default.nix
+++ b/pkgs/development/tools/misc/typical/default.nix
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Data interchange with algebraic data types";
+    mainProgram = "typical";
     homepage = "https://github.com/stepchowfun/typical";
     changelog = "https://github.com/stepchowfun/typical/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/tyson/default.nix b/pkgs/development/tools/misc/tyson/default.nix
index b10b78708b589..2809c881c9453 100644
--- a/pkgs/development/tools/misc/tyson/default.nix
+++ b/pkgs/development/tools/misc/tyson/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "TypeScript as a configuration language";
+    mainProgram = "tyson";
     homepage = "https://github.com/jetpack-io/tyson";
     changelog = "https://github.com/jetpack-io/tyson/releases/tag/${src.rev}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/misc/uncrustify/default.nix b/pkgs/development/tools/misc/uncrustify/default.nix
index d57010a4bad3c..a8fef714cadac 100644
--- a/pkgs/development/tools/misc/uncrustify/default.nix
+++ b/pkgs/development/tools/misc/uncrustify/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA";
+    mainProgram = "uncrustify";
     homepage = "https://uncrustify.sourceforge.net/";
     license = licenses.gpl2Plus;
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/misc/vtable-dumper/default.nix b/pkgs/development/tools/misc/vtable-dumper/default.nix
index 1bd59aa9944af..deed8e3af962e 100644
--- a/pkgs/development/tools/misc/vtable-dumper/default.nix
+++ b/pkgs/development/tools/misc/vtable-dumper/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/lvc/vtable-dumper";
     description = "A tool to list content of virtual tables in a C++ shared library";
+    mainProgram = "vtable-dumper";
     license = licenses.lgpl21;
     maintainers = [ maintainers.bhipple ];
     platforms = platforms.all;
diff --git a/pkgs/development/tools/misc/wasmer-pack/default.nix b/pkgs/development/tools/misc/wasmer-pack/default.nix
index 0f5e85349833c..7c1d84de885d6 100644
--- a/pkgs/development/tools/misc/wasmer-pack/default.nix
+++ b/pkgs/development/tools/misc/wasmer-pack/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Import your WebAssembly code just like any other dependency";
+    mainProgram = "wasmer-pack";
     homepage = "https://github.com/wasmerio/wasmer-pack";
     changelog = "https://github.com/wasmerio/wasmer-pack/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/misc/whatstyle/default.nix b/pkgs/development/tools/misc/whatstyle/default.nix
index 08f5b85bc5ed6..4293a458977b3 100644
--- a/pkgs/development/tools/misc/whatstyle/default.nix
+++ b/pkgs/development/tools/misc/whatstyle/default.nix
@@ -22,6 +22,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Find a code format style that fits given source files";
+    mainProgram = "whatstyle";
     homepage = "https://github.com/mikr/whatstyle";
     license = licenses.mit;
     maintainers = with maintainers; [ dtzWill ];
diff --git a/pkgs/development/tools/misc/wishbone-tool/default.nix b/pkgs/development/tools/misc/wishbone-tool/default.nix
index 0465fb74aa1ac..829ccd8775f6d 100644
--- a/pkgs/development/tools/misc/wishbone-tool/default.nix
+++ b/pkgs/development/tools/misc/wishbone-tool/default.nix
@@ -25,6 +25,7 @@ rustPlatform.buildRustPackage {
 
   meta = with lib; {
     description = "Manipulate a Wishbone device over some sort of bridge";
+    mainProgram = "wishbone-tool";
     homepage = "https://github.com/litex-hub/wishbone-utils";
     license = licenses.bsd2;
     maintainers = with maintainers; [ edef ];
diff --git a/pkgs/development/tools/misc/xxdiff/default.nix b/pkgs/development/tools/misc/xxdiff/default.nix
index 8f30a165df3c4..87097ef819e31 100644
--- a/pkgs/development/tools/misc/xxdiff/default.nix
+++ b/pkgs/development/tools/misc/xxdiff/default.nix
@@ -43,6 +43,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "Graphical file and directories comparator and merge tool";
+    mainProgram = "xxdiff";
     homepage = "http://furius.ca/xxdiff/";
     license = licenses.gpl2;
     maintainers = with maintainers; [ pSub raskin ];
diff --git a/pkgs/development/tools/misc/xxgdb/default.nix b/pkgs/development/tools/misc/xxgdb/default.nix
index cc093476fec7b..eee3a860e9feb 100644
--- a/pkgs/development/tools/misc/xxgdb/default.nix
+++ b/pkgs/development/tools/misc/xxgdb/default.nix
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     broken = stdenv.isDarwin;
     description = "A simple but powerful graphical interface to gdb";
+    mainProgram = "xxgdb";
     license = licenses.mit;
     maintainers = with maintainers; [ emilytrau ];
     platforms = platforms.all;
diff --git a/pkgs/development/tools/misc/ycmd/default.nix b/pkgs/development/tools/misc/ycmd/default.nix
index ae741234a8e26..4d5230f3159b0 100644
--- a/pkgs/development/tools/misc/ycmd/default.nix
+++ b/pkgs/development/tools/misc/ycmd/default.nix
@@ -84,6 +84,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "A code-completion and comprehension server";
+    mainProgram = "ycmd";
     homepage = "https://github.com/ycm-core/ycmd";
     license = licenses.gpl3;
     maintainers = with maintainers; [ rasendubi lnl7 siriobalmelli ];
diff --git a/pkgs/development/tools/mix2nix/default.nix b/pkgs/development/tools/mix2nix/default.nix
index 7c2d773884d9a..4c7b7951370c7 100644
--- a/pkgs/development/tools/mix2nix/default.nix
+++ b/pkgs/development/tools/mix2nix/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Generate nix expressions from mix.lock file.";
+    mainProgram = "mix2nix";
     license = licenses.mit;
     maintainers = with maintainers; [ ydlr ] ++ teams.beam.members;
   };
diff --git a/pkgs/development/tools/mod/default.nix b/pkgs/development/tools/mod/default.nix
index fb5abd0fe6ad2..8e71eb969b6b8 100644
--- a/pkgs/development/tools/mod/default.nix
+++ b/pkgs/development/tools/mod/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Automated Semantic Import Versioning Upgrades for Go";
+    mainProgram = "mod";
     longDescription = ''
       Command line tool to upgrade/downgrade Semantic Import Versioning in Go
       Modules.
diff --git a/pkgs/development/tools/modd/default.nix b/pkgs/development/tools/modd/default.nix
index 4ad15ecfc80fa..efd74ce98244f 100644
--- a/pkgs/development/tools/modd/default.nix
+++ b/pkgs/development/tools/modd/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A flexible developer tool that runs processes and responds to filesystem changes";
+    mainProgram = "modd";
     homepage = "https://github.com/cortesi/modd";
     license = licenses.mit;
     maintainers = with maintainers; [ kierdavis ];
diff --git a/pkgs/development/tools/moq/default.nix b/pkgs/development/tools/moq/default.nix
index 1c94ce10d5d59..bd78d3d92b563 100644
--- a/pkgs/development/tools/moq/default.nix
+++ b/pkgs/development/tools/moq/default.nix
@@ -24,6 +24,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/matryer/moq";
     description = "Interface mocking tool for go generate";
+    mainProgram = "moq";
     longDescription = ''
       Moq is a tool that generates a struct from any interface. The struct can
       be used in test code as a mock of the interface.
diff --git a/pkgs/development/tools/mpfshell/default.nix b/pkgs/development/tools/mpfshell/default.nix
index e8a2a9b89217c..331e80140bb81 100644
--- a/pkgs/development/tools/mpfshell/default.nix
+++ b/pkgs/development/tools/mpfshell/default.nix
@@ -21,6 +21,7 @@ python3Packages.buildPythonPackage rec {
   meta = with lib; {
     homepage = "https://github.com/wendlers/mpfshell";
     description = "A simple shell based file explorer for ESP8266 Micropython based devices";
+    mainProgram = "mpfshell";
     license = licenses.mit;
   };
 }
diff --git a/pkgs/development/tools/mutmut/default.nix b/pkgs/development/tools/mutmut/default.nix
index 85d981961d165..3d9c8078060cb 100644
--- a/pkgs/development/tools/mutmut/default.nix
+++ b/pkgs/development/tools/mutmut/default.nix
@@ -29,6 +29,7 @@ let self = with python3.pkgs; buildPythonApplication rec {
 
   meta = with lib; {
     description = "mutation testing system for Python, with a strong focus on ease of use";
+    mainProgram = "mutmut";
     homepage = "https://github.com/boxed/mutmut";
     changelog = "https://github.com/boxed/mutmut/blob/${version}/HISTORY.rst";
     license = licenses.bsd3;
diff --git a/pkgs/development/tools/nap/default.nix b/pkgs/development/tools/nap/default.nix
index fdc585fd5e182..aad1a6c53a3aa 100644
--- a/pkgs/development/tools/nap/default.nix
+++ b/pkgs/development/tools/nap/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = {
     description = "Code snippets in your terminal 🛌";
+    mainProgram = "nap";
     homepage = "https://github.com/maaslalani/nap";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ phdcybersec maaslalani ];
diff --git a/pkgs/development/tools/napi-rs-cli/default.nix b/pkgs/development/tools/napi-rs-cli/default.nix
index 3b73a05a7c889..86b714dbb0c4e 100644
--- a/pkgs/development/tools/napi-rs-cli/default.nix
+++ b/pkgs/development/tools/napi-rs-cli/default.nix
@@ -25,6 +25,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "CLI tools for napi-rs";
+    mainProgram = "napi";
     homepage = "https://napi.rs";
     license = licenses.mit;
     maintainers = with maintainers; [ winter ];
diff --git a/pkgs/development/tools/nasmfmt/default.nix b/pkgs/development/tools/nasmfmt/default.nix
index 413d7df67885e..eda6940f079f7 100644
--- a/pkgs/development/tools/nasmfmt/default.nix
+++ b/pkgs/development/tools/nasmfmt/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Formatter for NASM source files";
+    mainProgram = "nasmfmt";
     homepage = "https://github.com/yamnikov-oleg/nasmfmt";
     license = licenses.mit;
     maintainers = with maintainers; [ ckie ];
diff --git a/pkgs/development/tools/neil/default.nix b/pkgs/development/tools/neil/default.nix
index 96eb34f091704..e126111b5cb35 100644
--- a/pkgs/development/tools/neil/default.nix
+++ b/pkgs/development/tools/neil/default.nix
@@ -29,6 +29,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/babashka/neil";
     description = "A CLI to add common aliases and features to deps.edn-based projects";
+    mainProgram = "neil";
     license = licenses.mit;
     platforms = babashka.meta.platforms;
     maintainers = with maintainers; [ jlesquembre ];
diff --git a/pkgs/development/tools/nemiver/default.nix b/pkgs/development/tools/nemiver/default.nix
index 7894dfe797d6f..af02246582120 100644
--- a/pkgs/development/tools/nemiver/default.nix
+++ b/pkgs/development/tools/nemiver/default.nix
@@ -81,6 +81,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://wiki.gnome.org/Apps/Nemiver";
     description = "Easy to use standalone C/C++ debugger";
+    mainProgram = "nemiver";
     license = licenses.gpl2;
     platforms = platforms.linux;
     maintainers = [ maintainers.juliendehos ];
diff --git a/pkgs/development/tools/nodenv/default.nix b/pkgs/development/tools/nodenv/default.nix
index 657492966cf27..cdda869aa16a7 100644
--- a/pkgs/development/tools/nodenv/default.nix
+++ b/pkgs/development/tools/nodenv/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Manage multiple NodeJS versions";
+    mainProgram = "nodenv";
     homepage = "https://github.com/nodenv/nodenv/";
     changelog = "https://github.com/nodenv/nodenv/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/norminette/default.nix b/pkgs/development/tools/norminette/default.nix
index 0be1693d5d2a8..90a978e09948d 100644
--- a/pkgs/development/tools/norminette/default.nix
+++ b/pkgs/development/tools/norminette/default.nix
@@ -24,6 +24,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Open source norminette to apply 42's norme to C files";
+    mainProgram = "norminette";
     homepage = "https://github.com/42School/norminette";
     license = licenses.mit;
     maintainers = with maintainers; [ wegank ];
diff --git a/pkgs/development/tools/npm-check/default.nix b/pkgs/development/tools/npm-check/default.nix
index 3e1ad56e44142..131048f10cbe0 100644
--- a/pkgs/development/tools/npm-check/default.nix
+++ b/pkgs/development/tools/npm-check/default.nix
@@ -22,6 +22,7 @@ buildNpmPackage rec {
 
   meta = with lib; {
     description = "Check for outdated, incorrect, and unused dependencies";
+    mainProgram = "npm-check";
     homepage = "https://github.com/dylang/npm-check";
     changelog = "https://github.com/dylang/npm-check/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/ocaml/camlidl/default.nix b/pkgs/development/tools/ocaml/camlidl/default.nix
index 22104d3d4dc05..5522406c7e74e 100644
--- a/pkgs/development/tools/ocaml/camlidl/default.nix
+++ b/pkgs/development/tools/ocaml/camlidl/default.nix
@@ -48,6 +48,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A stub code generator and COM binding for Objective Caml";
+    mainProgram = "camlidl";
     homepage = "https://xavierleroy.org/camlidl/";
     license = lib.licenses.lgpl21;
     maintainers = [ lib.maintainers.roconnor ];
diff --git a/pkgs/development/tools/ocaml/cppo/default.nix b/pkgs/development/tools/ocaml/cppo/default.nix
index 2f057ada92b9f..f5b002c59e642 100644
--- a/pkgs/development/tools/ocaml/cppo/default.nix
+++ b/pkgs/development/tools/ocaml/cppo/default.nix
@@ -7,6 +7,7 @@ let
 
   meta = with lib; {
     description = "The C preprocessor for OCaml";
+    mainProgram = "cppo";
     longDescription = ''
       Cppo is an equivalent of the C preprocessor targeted at the OCaml language and its variants.
     '';
diff --git a/pkgs/development/tools/ocaml/crunch/default.nix b/pkgs/development/tools/ocaml/crunch/default.nix
index d7b4d64096ca6..8a9e91b554325 100644
--- a/pkgs/development/tools/ocaml/crunch/default.nix
+++ b/pkgs/development/tools/ocaml/crunch/default.nix
@@ -25,6 +25,7 @@ buildDunePackage rec {
   meta = {
     homepage = "https://github.com/mirage/ocaml-crunch";
     description = "Convert a filesystem into a static OCaml module";
+    mainProgram = "ocaml-crunch";
     license = lib.licenses.isc;
     maintainers = [ lib.maintainers.vbgl ];
   };
diff --git a/pkgs/development/tools/ocaml/dune-release/default.nix b/pkgs/development/tools/ocaml/dune-release/default.nix
index c404144b05a2b..796410828f772 100644
--- a/pkgs/development/tools/ocaml/dune-release/default.nix
+++ b/pkgs/development/tools/ocaml/dune-release/default.nix
@@ -58,6 +58,7 @@ in buildDunePackage rec {
 
   meta = with lib; {
     description = "Release dune packages in opam";
+    mainProgram = "dune-release";
     homepage = "https://github.com/ocamllabs/dune-release";
     changelog = "https://github.com/tarides/dune-release/blob/${version}/CHANGES.md";
     license = licenses.isc;
diff --git a/pkgs/development/tools/ocaml/dune/2.nix b/pkgs/development/tools/ocaml/dune/2.nix
index 65f8c7eda3ca1..0d2d3b7d53242 100644
--- a/pkgs/development/tools/ocaml/dune/2.nix
+++ b/pkgs/development/tools/ocaml/dune/2.nix
@@ -27,6 +27,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://dune.build/";
     description = "A composable build system";
+    mainProgram = "dune";
     changelog = "https://github.com/ocaml/dune/raw/${version}/CHANGES.md";
     maintainers = [ lib.maintainers.vbgl lib.maintainers.marsam ];
     license = lib.licenses.mit;
diff --git a/pkgs/development/tools/ocaml/dune/3.nix b/pkgs/development/tools/ocaml/dune/3.nix
index 82b6771754695..b168e7e13c3c5 100644
--- a/pkgs/development/tools/ocaml/dune/3.nix
+++ b/pkgs/development/tools/ocaml/dune/3.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
   meta = {
     homepage = "https://dune.build/";
     description = "A composable build system";
+    mainProgram = "dune";
     changelog = "https://github.com/ocaml/dune/raw/${version}/CHANGES.md";
     maintainers = [ lib.maintainers.vbgl lib.maintainers.marsam ];
     license = lib.licenses.mit;
diff --git a/pkgs/development/tools/ocaml/merlin/dot-merlin-reader.nix b/pkgs/development/tools/ocaml/merlin/dot-merlin-reader.nix
index 89af62ed70e6e..2d572364005a7 100644
--- a/pkgs/development/tools/ocaml/merlin/dot-merlin-reader.nix
+++ b/pkgs/development/tools/ocaml/merlin/dot-merlin-reader.nix
@@ -16,6 +16,7 @@ buildDunePackage rec {
 
   meta = with lib; {
     description = "Reads config files for merlin";
+    mainProgram = "dot-merlin-reader";
     homepage = "https://github.com/ocaml/merlin";
     license = licenses.mit;
     maintainers = [ maintainers.hongchangwu ];
diff --git a/pkgs/development/tools/ocaml/obelisk/default.nix b/pkgs/development/tools/ocaml/obelisk/default.nix
index 938fa24374af7..2775f72d79d1f 100644
--- a/pkgs/development/tools/ocaml/obelisk/default.nix
+++ b/pkgs/development/tools/ocaml/obelisk/default.nix
@@ -18,6 +18,7 @@ ocamlPackages.buildDunePackage rec {
 
   meta = {
     description = "A simple tool which produces pretty-printed output from a Menhir parser file (.mly)";
+    mainProgram = "obelisk";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.vbgl ];
     homepage = "https://github.com/Lelio-Brun/Obelisk";
diff --git a/pkgs/development/tools/ocaml/ocaml-top/default.nix b/pkgs/development/tools/ocaml/ocaml-top/default.nix
index 57b457bff2937..b5c506ad9b823 100644
--- a/pkgs/development/tools/ocaml/ocaml-top/default.nix
+++ b/pkgs/development/tools/ocaml/ocaml-top/default.nix
@@ -17,6 +17,7 @@ with ocamlPackages; buildDunePackage rec {
     homepage = "https://www.typerex.org/ocaml-top.html";
     license = lib.licenses.gpl3;
     description = "A simple cross-platform OCaml code editor built for top-level evaluation";
+    mainProgram = "ocaml-top";
     maintainers = with lib.maintainers; [ vbgl ];
   };
 }
diff --git a/pkgs/development/tools/ocaml/ocp-indent/default.nix b/pkgs/development/tools/ocaml/ocp-indent/default.nix
index 649e1bcd35595..6fd31d54d999f 100644
--- a/pkgs/development/tools/ocaml/ocp-indent/default.nix
+++ b/pkgs/development/tools/ocaml/ocp-indent/default.nix
@@ -21,6 +21,7 @@ buildDunePackage rec {
   meta = with lib; {
     homepage = "https://www.typerex.org/ocp-indent.html";
     description = "A customizable tool to indent OCaml code";
+    mainProgram = "ocp-indent";
     license = licenses.gpl3;
     maintainers = [ maintainers.jirkamarsik ];
   };
diff --git a/pkgs/development/tools/ocaml/opaline/default.nix b/pkgs/development/tools/ocaml/opaline/default.nix
index b6bc9c9b9f6f7..e8fbae0f241b8 100644
--- a/pkgs/development/tools/ocaml/opaline/default.nix
+++ b/pkgs/development/tools/ocaml/opaline/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "OPAm Light INstaller Engine";
+    mainProgram = "opaline";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.vbgl ];
     inherit (src.meta) homepage;
diff --git a/pkgs/development/tools/ocaml/opam-publish/default.nix b/pkgs/development/tools/ocaml/opam-publish/default.nix
index dec119bc762c7..b18b3e6707be9 100644
--- a/pkgs/development/tools/ocaml/opam-publish/default.nix
+++ b/pkgs/development/tools/ocaml/opam-publish/default.nix
@@ -28,6 +28,7 @@ buildDunePackage rec {
   meta = with lib; {
     homepage = "https://github.com/ocaml-opam/${pname}";
     description = "A tool to ease contributions to opam repositories";
+    mainProgram = "opam-publish";
     license = with licenses; [ lgpl21Only ocamlLgplLinkingException ];
     maintainers = with maintainers; [ niols ];
   };
diff --git a/pkgs/development/tools/ocaml/opam/installer.nix b/pkgs/development/tools/ocaml/opam/installer.nix
index 9b3b7a5617bac..a56621267df30 100644
--- a/pkgs/development/tools/ocaml/opam/installer.nix
+++ b/pkgs/development/tools/ocaml/opam/installer.nix
@@ -13,5 +13,6 @@ ocamlPackages.buildDunePackage {
 
   meta = opam.meta // {
     description = "Handle (un)installation from opam install files";
+    mainProgram = "opam-installer";
   };
 }
diff --git a/pkgs/development/tools/ocaml/opam2json/default.nix b/pkgs/development/tools/ocaml/opam2json/default.nix
index a3ca535d3f86f..844e6f816134b 100644
--- a/pkgs/development/tools/ocaml/opam2json/default.nix
+++ b/pkgs/development/tools/ocaml/opam2json/default.nix
@@ -18,6 +18,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     platforms = platforms.all;
     description = "convert opam file syntax to JSON";
+    mainProgram = "opam2json";
     maintainers = [ maintainers.balsoft ];
     license = licenses.gpl3;
     homepage = "https://github.com/tweag/opam2json";
diff --git a/pkgs/development/tools/ofono-phonesim/default.nix b/pkgs/development/tools/ofono-phonesim/default.nix
index 395211cd13c1c..81a513edd687c 100644
--- a/pkgs/development/tools/ofono-phonesim/default.nix
+++ b/pkgs/development/tools/ofono-phonesim/default.nix
@@ -31,6 +31,7 @@ mkDerivation {
 
   meta = with lib; {
     description = "Phone Simulator for modem testing";
+    mainProgram = "phonesim";
     homepage = "https://01.org/ofono";
     license = licenses.gpl2;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/oh-my-posh/default.nix b/pkgs/development/tools/oh-my-posh/default.nix
index 66990d84589fc..13a8de6550b29 100644
--- a/pkgs/development/tools/oh-my-posh/default.nix
+++ b/pkgs/development/tools/oh-my-posh/default.nix
@@ -53,6 +53,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A prompt theme engine for any shell";
+    mainProgram = "oh-my-posh";
     homepage = "https://ohmyposh.dev";
     changelog = "https://github.com/JanDeDobbeleer/oh-my-posh/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/okteto/default.nix b/pkgs/development/tools/okteto/default.nix
index 0c78566a872fd..67446277bf5da 100644
--- a/pkgs/development/tools/okteto/default.nix
+++ b/pkgs/development/tools/okteto/default.nix
@@ -47,6 +47,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Develop your applications directly in your Kubernetes Cluster";
+    mainProgram = "okteto";
     homepage = "https://okteto.com/";
     license = licenses.asl20;
     maintainers = with maintainers; [ aaronjheng ];
diff --git a/pkgs/development/tools/ols/default.nix b/pkgs/development/tools/ols/default.nix
index 9357cdd9ae016..05839dcdcba78 100644
--- a/pkgs/development/tools/ols/default.nix
+++ b/pkgs/development/tools/ols/default.nix
@@ -43,6 +43,7 @@ stdenv.mkDerivation {
   meta = with lib; {
     inherit (odin.meta) platforms;
     description = "Language server for the Odin programming language";
+    mainProgram = "ols";
     homepage = "https://github.com/DanielGavin/ols";
     license = licenses.mit;
     maintainers = with maintainers; [ astavie znaniye ];
diff --git a/pkgs/development/tools/oq/default.nix b/pkgs/development/tools/oq/default.nix
index 8e23e72912b0d..8508fbc2d741f 100644
--- a/pkgs/development/tools/oq/default.nix
+++ b/pkgs/development/tools/oq/default.nix
@@ -38,6 +38,7 @@ crystal.buildCrystalPackage rec {
 
   meta = with lib; {
     description = "A performant, and portable jq wrapper";
+    mainProgram = "oq";
     homepage = "https://blacksmoke16.github.io/oq/";
     license = licenses.mit;
     maintainers = with maintainers; [ Br1ght0ne ];
diff --git a/pkgs/development/tools/oras/default.nix b/pkgs/development/tools/oras/default.nix
index 50727b811c21d..fe1c0d5db36b7 100644
--- a/pkgs/development/tools/oras/default.nix
+++ b/pkgs/development/tools/oras/default.nix
@@ -51,6 +51,7 @@ buildGoModule rec {
     homepage = "https://oras.land/";
     changelog = "https://github.com/oras-project/oras/releases/tag/v${version}";
     description = "The ORAS project provides a way to push and pull OCI Artifacts to and from OCI Registries";
+    mainProgram = "oras";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk developer-guy ];
   };
diff --git a/pkgs/development/tools/oshka/default.nix b/pkgs/development/tools/oshka/default.nix
index 489f41b718df5..0161382491cf1 100644
--- a/pkgs/development/tools/oshka/default.nix
+++ b/pkgs/development/tools/oshka/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Tool for extracting nested CI/CD supply chains and executing commands";
+    mainProgram = "oshka";
     homepage = "https://github.com/k1LoW/oshka";
     license = licenses.mit;
     maintainers = with maintainers; [ fab ];
diff --git a/pkgs/development/tools/osslsigncode/default.nix b/pkgs/development/tools/osslsigncode/default.nix
index a581dd04ec488..f622e11b14d0e 100644
--- a/pkgs/development/tools/osslsigncode/default.nix
+++ b/pkgs/development/tools/osslsigncode/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/mtrojnar/osslsigncode";
     description = "OpenSSL based Authenticode signing for PE/MSI/Java CAB files";
+    mainProgram = "osslsigncode";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ mmahut prusnak ];
     platforms = platforms.all;
diff --git a/pkgs/development/tools/out-of-tree/default.nix b/pkgs/development/tools/out-of-tree/default.nix
index a96156ca7109a..72f7d8b76a603 100644
--- a/pkgs/development/tools/out-of-tree/default.nix
+++ b/pkgs/development/tools/out-of-tree/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "kernel {module, exploit} development tool";
+    mainProgram = "out-of-tree";
     homepage = "https://out-of-tree.io";
     maintainers = [ maintainers.dump_stack ];
     license = licenses.agpl3Plus;
diff --git a/pkgs/development/tools/packcc/default.nix b/pkgs/development/tools/packcc/default.nix
index 4f618665573c0..b1ec078c9c5dd 100644
--- a/pkgs/development/tools/packcc/default.nix
+++ b/pkgs/development/tools/packcc/default.nix
@@ -53,6 +53,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A parser generator for C";
+    mainProgram = "packcc";
     longDescription = ''
       PackCC is a parser generator for C. Its main features are as follows:
       - Generates your parser in C from a grammar described in a PEG,
diff --git a/pkgs/development/tools/packet/default.nix b/pkgs/development/tools/packet/default.nix
index 61e9b210683f9..056c9a3527ed3 100644
--- a/pkgs/development/tools/packet/default.nix
+++ b/pkgs/development/tools/packet/default.nix
@@ -17,6 +17,7 @@ buildGoPackage rec {
 
   meta = with lib; {
     description = "a CLI tool to manage packet.net services";
+    mainProgram = "packet";
     homepage = "https://github.com/ebsarr/packet";
     license = licenses.mit;
     maintainers = with maintainers; [ grahamc ];
diff --git a/pkgs/development/tools/pactorio/default.nix b/pkgs/development/tools/pactorio/default.nix
index 5d75586690451..851c2c895444f 100644
--- a/pkgs/development/tools/pactorio/default.nix
+++ b/pkgs/development/tools/pactorio/default.nix
@@ -34,6 +34,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Mod packager for factorio";
+    mainProgram = "pactorio";
     homepage = "https://github.com/figsoda/pactorio";
     changelog = "https://github.com/figsoda/pactorio/blob/v${version}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/development/tools/paging-calculator/default.nix b/pkgs/development/tools/paging-calculator/default.nix
index b3cf805881429..d9241d81ac88f 100644
--- a/pkgs/development/tools/paging-calculator/default.nix
+++ b/pkgs/development/tools/paging-calculator/default.nix
@@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = {
     description = "CLI utility that helps calculating page table indices from a virtual address";
+    mainProgram = "paging-calculator";
     longDescription = ''
       paging-calculator is a CLI utility written in Rust that helps you finding the indices that a
       virtual address will have into the page tables on different architectures.
diff --git a/pkgs/development/tools/parinfer-rust/default.nix b/pkgs/development/tools/parinfer-rust/default.nix
index ade168b816141..7d7ea67417e02 100644
--- a/pkgs/development/tools/parinfer-rust/default.nix
+++ b/pkgs/development/tools/parinfer-rust/default.nix
@@ -27,6 +27,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Infer parentheses for Clojure, Lisp, and Scheme";
+    mainProgram = "parinfer-rust";
     homepage = "https://github.com/eraserhd/parinfer-rust";
     license = licenses.isc;
     maintainers = with maintainers; [ eraserhd ];
diff --git a/pkgs/development/tools/parse-cli-bin/default.nix b/pkgs/development/tools/parse-cli-bin/default.nix
index 33dbd0fec1816..0ece2bb4afb0d 100644
--- a/pkgs/development/tools/parse-cli-bin/default.nix
+++ b/pkgs/development/tools/parse-cli-bin/default.nix
@@ -11,6 +11,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Parse Command Line Interface";
+    mainProgram = "parse";
     homepage    = "https://parse.com";
     platforms   = platforms.linux;
     license     = licenses.bsd3;
diff --git a/pkgs/development/tools/parsing/bisonc++/default.nix b/pkgs/development/tools/parsing/bisonc++/default.nix
index 5a38c6679eb2a..5994da0226310 100644
--- a/pkgs/development/tools/parsing/bisonc++/default.nix
+++ b/pkgs/development/tools/parsing/bisonc++/default.nix
@@ -47,6 +47,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A parser generator like bison, but it generates C++ code";
+    mainProgram = "bisonc++";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/parsing/flex/2.5.35.nix b/pkgs/development/tools/parsing/flex/2.5.35.nix
index c13abf071c567..d6a09929d4f86 100644
--- a/pkgs/development/tools/parsing/flex/2.5.35.nix
+++ b/pkgs/development/tools/parsing/flex/2.5.35.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
     branch = "2.5.35";
     homepage = "https://flex.sourceforge.net/";
     description = "A fast lexical analyser generator";
+    mainProgram = "flex";
     license = licenses.bsd2;
     platforms = platforms.unix;
   };
diff --git a/pkgs/development/tools/parsing/flexc++/default.nix b/pkgs/development/tools/parsing/flexc++/default.nix
index e4db5631e7fe0..1a56818b4d65b 100644
--- a/pkgs/development/tools/parsing/flexc++/default.nix
+++ b/pkgs/development/tools/parsing/flexc++/default.nix
@@ -35,6 +35,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "C++ tool for generating lexical scanners";
+    mainProgram = "flexc++";
     longDescription = ''
       Flexc++ was designed after `flex'. Flexc++ offers a cleaner class design
       and requires simpler specification files than offered by flex's C++
diff --git a/pkgs/development/tools/parsing/jikespg/default.nix b/pkgs/development/tools/parsing/jikespg/default.nix
index e9bd834169335..aec4682cec2e6 100644
--- a/pkgs/development/tools/parsing/jikespg/default.nix
+++ b/pkgs/development/tools/parsing/jikespg/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://jikes.sourceforge.net/";
     description = "The Jikes Parser Generator";
+    mainProgram = "jikespg";
     platforms = platforms.all;
     license = licenses.ipl10;
     maintainers = with maintainers; [ pSub ];
diff --git a/pkgs/development/tools/parsing/jshon/default.nix b/pkgs/development/tools/parsing/jshon/default.nix
index 977c4bb398c2d..7e167aa729d27 100644
--- a/pkgs/development/tools/parsing/jshon/default.nix
+++ b/pkgs/development/tools/parsing/jshon/default.nix
@@ -36,6 +36,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "http://kmkeen.com/jshon";
     description = "JSON parser designed for maximum convenience within the shell";
+    mainProgram = "jshon";
     license = licenses.free;
     platforms = platforms.all;
     maintainers = with maintainers; [ rushmorem ];
diff --git a/pkgs/development/tools/parsing/lemon/default.nix b/pkgs/development/tools/parsing/lemon/default.nix
index 9c8786950d221..5e59d7441e7e1 100644
--- a/pkgs/development/tools/parsing/lemon/default.nix
+++ b/pkgs/development/tools/parsing/lemon/default.nix
@@ -32,6 +32,7 @@ in stdenv.mkDerivation {
 
   meta = with lib; {
     description = "An LALR(1) parser generator";
+    mainProgram = "lemon";
     longDescription = ''
       The Lemon program is an LALR(1) parser generator that takes a
       context-free grammar and converts it into a subroutine that will parse a
diff --git a/pkgs/development/tools/parsing/nex/default.nix b/pkgs/development/tools/parsing/nex/default.nix
index 287098ed8d363..2d3f18cacedd0 100644
--- a/pkgs/development/tools/parsing/nex/default.nix
+++ b/pkgs/development/tools/parsing/nex/default.nix
@@ -20,6 +20,7 @@ buildGoPackage rec {
 
   meta = with lib; {
     description = "Lexer for Go";
+    mainProgram = "nex";
     homepage = "https://github.com/blynn/nex";
     license = licenses.gpl3Only;
     maintainers = with maintainers; [ urandom ];
diff --git a/pkgs/development/tools/parsing/ragel/default.nix b/pkgs/development/tools/parsing/ragel/default.nix
index db5590ccbb966..72e77a55a1523 100644
--- a/pkgs/development/tools/parsing/ragel/default.nix
+++ b/pkgs/development/tools/parsing/ragel/default.nix
@@ -30,6 +30,7 @@ let
       meta = with lib; {
         homepage = "https://www.colm.net/open-source/ragel/";
         description = "State machine compiler";
+        mainProgram = "ragel";
         inherit broken license;
         platforms = platforms.unix;
         maintainers = with maintainers; [ pSub ];
diff --git a/pkgs/development/tools/parsing/tree-sitter/default.nix b/pkgs/development/tools/parsing/tree-sitter/default.nix
index 2a6fd3374d8fe..84f505caeb5a2 100644
--- a/pkgs/development/tools/parsing/tree-sitter/default.nix
+++ b/pkgs/development/tools/parsing/tree-sitter/default.nix
@@ -156,6 +156,7 @@ rustPlatform.buildRustPackage {
   meta = with lib; {
     homepage = "https://github.com/tree-sitter/tree-sitter";
     description = "A parser generator tool and an incremental parsing library";
+    mainProgram = "tree-sitter";
     longDescription = ''
       Tree-sitter is a parser generator tool and an incremental parsing library.
       It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited.
diff --git a/pkgs/development/tools/patatt/default.nix b/pkgs/development/tools/patatt/default.nix
index aed80b94ac6bd..b50fae18ae490 100644
--- a/pkgs/development/tools/patatt/default.nix
+++ b/pkgs/development/tools/patatt/default.nix
@@ -17,6 +17,7 @@ python3Packages.buildPythonApplication rec {
     homepage = "https://git.kernel.org/pub/scm/utils/patatt/patatt.git/about/";
     license = licenses.mit0;
     description = "Add cryptographic attestation to patches sent via email";
+    mainProgram = "patatt";
     longDescription = ''
       This utility allows an easy way to add end-to-end cryptographic
       attestation to patches sent via mail.  It does so by adapting the
diff --git a/pkgs/development/tools/patcher9x/default.nix b/pkgs/development/tools/patcher9x/default.nix
index 33dad487b3f6f..090f902c75b92 100644
--- a/pkgs/development/tools/patcher9x/default.nix
+++ b/pkgs/development/tools/patcher9x/default.nix
@@ -39,6 +39,7 @@ stdenv.mkDerivation (finalAttr: {
 
   meta = with lib; {
     description = "Patch for Windows 95/98/98 SE/Me to fix CPU issues";
+    mainProgram = "patcher9x";
     homepage = "https://github.com/JHRobotics/patcher9x";
     license = licenses.mit;
     maintainers = with maintainers; [ hughobrien ];
diff --git a/pkgs/development/tools/pet/default.nix b/pkgs/development/tools/pet/default.nix
index 98d7a9c742bdf..3250107cbf0eb 100644
--- a/pkgs/development/tools/pet/default.nix
+++ b/pkgs/development/tools/pet/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Simple command-line snippet manager, written in Go";
+    mainProgram = "pet";
     homepage = "https://github.com/knqyf263/pet";
     license = licenses.mit;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/pew/default.nix b/pkgs/development/tools/pew/default.nix
index f0c9d7d62b6ef..adcfc0efd4c73 100644
--- a/pkgs/development/tools/pew/default.nix
+++ b/pkgs/development/tools/pew/default.nix
@@ -23,6 +23,7 @@ buildPythonApplication rec {
   meta = with lib; {
     homepage = "https://github.com/berdario/pew";
     description = "Tools to manage multiple virtualenvs written in pure python";
+    mainProgram = "pew";
     license = licenses.mit;
     platforms = platforms.all;
     maintainers = with maintainers; [ berdario ];
diff --git a/pkgs/development/tools/pgloader/default.nix b/pkgs/development/tools/pgloader/default.nix
index dce892451c1c3..59f3eeeaeaa93 100644
--- a/pkgs/development/tools/pgloader/default.nix
+++ b/pkgs/development/tools/pgloader/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://pgloader.io/";
     description = "Loads data into PostgreSQL and allows you to implement Continuous Migration from your current database to PostgreSQL";
+    mainProgram = "pgloader";
     maintainers = with maintainers; [ mguentner ];
     license = licenses.postgresql;
     platforms = platforms.all;
diff --git a/pkgs/development/tools/pgtop/default.nix b/pkgs/development/tools/pgtop/default.nix
index 722f701892e48..4007bc5abec1f 100644
--- a/pkgs/development/tools/pgtop/default.nix
+++ b/pkgs/development/tools/pgtop/default.nix
@@ -22,6 +22,7 @@ perlPackages.buildPerlPackage rec {
 
   meta = with lib; {
     description = "a PostgreSQL clone of `mytop', which in turn is a `top' clone for MySQL";
+    mainProgram = "pgtop";
     homepage = "https://github.com/cosimo/pgtop";
     changelog = "https://github.com/cosimo/pgtop/releases/tag/v${version}";
     maintainers = [ maintainers.hagl ];
diff --git a/pkgs/development/tools/picotool/default.nix b/pkgs/development/tools/picotool/default.nix
index 03d3d440c2977..a31f468083533 100644
--- a/pkgs/development/tools/picotool/default.nix
+++ b/pkgs/development/tools/picotool/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/raspberrypi/picotool";
     description = "Tool for interacting with a RP2040 device in BOOTSEL mode, or with a RP2040 binary";
+    mainProgram = "picotool";
     license = licenses.bsd3;
     maintainers = with maintainers; [ muscaln ];
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/pifpaf/default.nix b/pkgs/development/tools/pifpaf/default.nix
index e11baa783ba69..80d9c26f506c2 100644
--- a/pkgs/development/tools/pifpaf/default.nix
+++ b/pkgs/development/tools/pifpaf/default.nix
@@ -36,6 +36,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Suite of tools and fixtures to manage daemons for testing";
+    mainProgram = "pifpaf";
     homepage = "https://github.com/jd/pifpaf";
     license = licenses.asl20;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/pigeon/default.nix b/pkgs/development/tools/pigeon/default.nix
index 74b2a69c4c7c6..38fcd75f391df 100644
--- a/pkgs/development/tools/pigeon/default.nix
+++ b/pkgs/development/tools/pigeon/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
   meta = {
     homepage = "https://github.com/mna/pigeon";
     description = "A PEG parser generator for Go";
+    mainProgram = "pigeon";
     maintainers = with lib.maintainers; [ zimbatm ];
     license = with lib.licenses; [ bsd3 ];
   };
diff --git a/pkgs/development/tools/pip-audit/default.nix b/pkgs/development/tools/pip-audit/default.nix
index 9ff8f51b672d7..6adcf5529e56d 100644
--- a/pkgs/development/tools/pip-audit/default.nix
+++ b/pkgs/development/tools/pip-audit/default.nix
@@ -60,6 +60,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool for scanning Python environments for known vulnerabilities";
+    mainProgram = "pip-audit";
     homepage = "https://github.com/trailofbits/pip-audit";
     changelog = "https://github.com/pypa/pip-audit/releases/tag/v${version}";
     license = with licenses; [ asl20 ];
diff --git a/pkgs/development/tools/pqrs/default.nix b/pkgs/development/tools/pqrs/default.nix
index 56c99d30babca..730bc67fbbe83 100644
--- a/pkgs/development/tools/pqrs/default.nix
+++ b/pkgs/development/tools/pqrs/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "CLI tool to inspect Parquet files";
+    mainProgram = "pqrs";
     homepage = "https://github.com/manojkarthick/pqrs";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = [ maintainers.manojkarthick ];
diff --git a/pkgs/development/tools/profiling/pprof/default.nix b/pkgs/development/tools/profiling/pprof/default.nix
index 44f9d5030d1cd..e81446d7f12e4 100644
--- a/pkgs/development/tools/profiling/pprof/default.nix
+++ b/pkgs/development/tools/profiling/pprof/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool for visualization and analysis of profiling data";
+    mainProgram = "pprof";
     homepage = "https://github.com/google/pprof";
     license = licenses.asl20;
     longDescription = ''
diff --git a/pkgs/development/tools/protoc-gen-connect-go/default.nix b/pkgs/development/tools/protoc-gen-connect-go/default.nix
index 60b7199fe19e9..aae03af7cbf26 100644
--- a/pkgs/development/tools/protoc-gen-connect-go/default.nix
+++ b/pkgs/development/tools/protoc-gen-connect-go/default.nix
@@ -27,6 +27,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Simple, reliable, interoperable, better gRPC";
+    mainProgram = "protoc-gen-connect-go";
     homepage = "https://github.com/connectrpc/connect-go";
     changelog = "https://github.com/connectrpc/connect-go/releases/tag/v${version}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/protoc-gen-dart/default.nix b/pkgs/development/tools/protoc-gen-dart/default.nix
index 82f1c0de125df..b09322e297014 100644
--- a/pkgs/development/tools/protoc-gen-dart/default.nix
+++ b/pkgs/development/tools/protoc-gen-dart/default.nix
@@ -19,6 +19,7 @@ buildDartApplication rec {
 
   meta = with lib; {
     description = "Protobuf plugin for generating Dart code";
+    mainProgram = "protoc-gen-dart";
     homepage = "https://pub.dev/packages/protoc_plugin";
     license = licenses.bsd3;
     maintainers = with maintainers; [ lelgenio ];
diff --git a/pkgs/development/tools/protoc-gen-doc/default.nix b/pkgs/development/tools/protoc-gen-doc/default.nix
index 31e86f85cd084..09eb0a057aeed 100644
--- a/pkgs/development/tools/protoc-gen-doc/default.nix
+++ b/pkgs/development/tools/protoc-gen-doc/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Documentation generator plugin for Google Protocol Buffers";
+    mainProgram = "protoc-gen-doc";
     longDescription = ''
       This is a documentation generator plugin for the Google Protocol Buffers
       compiler (protoc). The plugin can generate HTML, JSON, DocBook and
diff --git a/pkgs/development/tools/protoc-gen-entgrpc/default.nix b/pkgs/development/tools/protoc-gen-entgrpc/default.nix
index 2047974cf286a..53d7d43387764 100644
--- a/pkgs/development/tools/protoc-gen-entgrpc/default.nix
+++ b/pkgs/development/tools/protoc-gen-entgrpc/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Generator of an implementation of the service interface for ent protobuff";
+    mainProgram = "protoc-gen-entgrpc";
     downloadPage = "https://github.com/ent/contrib/";
     license = licenses.asl20;
     homepage = "https://entgo.io/";
diff --git a/pkgs/development/tools/protoc-gen-go-grpc/default.nix b/pkgs/development/tools/protoc-gen-go-grpc/default.nix
index fab6bfec12f0e..1cf06dd34e217 100644
--- a/pkgs/development/tools/protoc-gen-go-grpc/default.nix
+++ b/pkgs/development/tools/protoc-gen-go-grpc/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "The Go language implementation of gRPC. HTTP/2 based RPC";
+    mainProgram = "protoc-gen-go-grpc";
     license = licenses.asl20;
     maintainers = [ maintainers.raboof ];
   };
diff --git a/pkgs/development/tools/protoc-gen-go-vtproto/default.nix b/pkgs/development/tools/protoc-gen-go-vtproto/default.nix
index e1e716eee13af..85816b725f345 100644
--- a/pkgs/development/tools/protoc-gen-go-vtproto/default.nix
+++ b/pkgs/development/tools/protoc-gen-go-vtproto/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A Protocol Buffers compiler that generates optimized marshaling & unmarshaling Go code for ProtoBuf APIv2";
+    mainProgram = "protoc-gen-go-vtproto";
     homepage = "https://github.com/planetscale/vtprotobuf";
     license = licenses.bsd3;
     maintainers = [ maintainers.zane ];
diff --git a/pkgs/development/tools/protoc-gen-go/default.nix b/pkgs/development/tools/protoc-gen-go/default.nix
index 55c0efc62a8a1..626d80eef5777 100644
--- a/pkgs/development/tools/protoc-gen-go/default.nix
+++ b/pkgs/development/tools/protoc-gen-go/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Go support for Google's protocol buffers";
+    mainProgram = "protoc-gen-go";
     homepage = "https://google.golang.org/protobuf";
     license = licenses.bsd3;
     maintainers = with maintainers; [ jojosch ];
diff --git a/pkgs/development/tools/protoc-gen-grpc-web/default.nix b/pkgs/development/tools/protoc-gen-grpc-web/default.nix
index 7308414504ed9..6c8d8c5417602 100644
--- a/pkgs/development/tools/protoc-gen-grpc-web/default.nix
+++ b/pkgs/development/tools/protoc-gen-grpc-web/default.nix
@@ -52,6 +52,7 @@ stdenv.mkDerivation (finalAttrs: {
     homepage = "https://github.com/grpc/grpc-web";
     changelog = "https://github.com/grpc/grpc-web/blob/${finalAttrs.version}/CHANGELOG.md";
     description = "gRPC web support for Google's protocol buffers";
+    mainProgram = "protoc-gen-grpc-web";
     license = licenses.asl20;
     maintainers = with maintainers; [ jk ];
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/protoc-gen-prost-crate/default.nix b/pkgs/development/tools/protoc-gen-prost-crate/default.nix
index 8503e9266944e..1a2a1450a4bce 100644
--- a/pkgs/development/tools/protoc-gen-prost-crate/default.nix
+++ b/pkgs/development/tools/protoc-gen-prost-crate/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A protoc plugin that generates Cargo crates and include files for `protoc-gen-prost`";
+    mainProgram = "protoc-gen-prost-crate";
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/protoc-gen-prost-serde/default.nix b/pkgs/development/tools/protoc-gen-prost-serde/default.nix
index 843dc4fc684b3..7ee87e622119f 100644
--- a/pkgs/development/tools/protoc-gen-prost-serde/default.nix
+++ b/pkgs/development/tools/protoc-gen-prost-serde/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A protoc plugin that generates serde serialization implementations for `protoc-gen-prost`";
+    mainProgram = "protoc-gen-prost-serde";
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/protoc-gen-prost/default.nix b/pkgs/development/tools/protoc-gen-prost/default.nix
index 645ecdee30819..6012af0acf3c2 100644
--- a/pkgs/development/tools/protoc-gen-prost/default.nix
+++ b/pkgs/development/tools/protoc-gen-prost/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Protocol Buffers compiler plugin powered by Prost";
+    mainProgram = "protoc-gen-prost";
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/protoc-gen-rust/default.nix b/pkgs/development/tools/protoc-gen-rust/default.nix
index 7a1dcb4b3e48d..bba32dd81a4ed 100644
--- a/pkgs/development/tools/protoc-gen-rust/default.nix
+++ b/pkgs/development/tools/protoc-gen-rust/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Protobuf plugin for generating Rust code";
+    mainProgram = "protoc-gen-rust";
     homepage = "https://github.com/stepancheg/rust-protobuf";
     license = licenses.mit;
     maintainers = with maintainers; [ lucperkins ];
diff --git a/pkgs/development/tools/protoc-gen-tonic/default.nix b/pkgs/development/tools/protoc-gen-tonic/default.nix
index 7bc6fa52e54df..fc5e98b49b405 100644
--- a/pkgs/development/tools/protoc-gen-tonic/default.nix
+++ b/pkgs/development/tools/protoc-gen-tonic/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A protoc plugin that generates Tonic gRPC server and client code using the Prost code generation engine";
+    mainProgram = "protoc-gen-tonic";
     homepage = "https://github.com/neoeinstein/protoc-gen-prost";
     changelog = "https://github.com/neoeinstein/protoc-gen-prost/blob/main/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/protoc-gen-twirp/default.nix b/pkgs/development/tools/protoc-gen-twirp/default.nix
index 4b8ee1f35f65b..76ce9a922cc91 100644
--- a/pkgs/development/tools/protoc-gen-twirp/default.nix
+++ b/pkgs/development/tools/protoc-gen-twirp/default.nix
@@ -21,6 +21,7 @@ buildGoPackage rec {
 
   meta = with lib; {
     description = "A simple RPC framework with protobuf service definitions";
+    mainProgram = "protoc-gen-twirp";
     homepage = "https://github.com/twitchtv/twirp";
     license = licenses.asl20;
     maintainers = with maintainers; [ jojosch ];
diff --git a/pkgs/development/tools/protoc-gen-twirp_php/default.nix b/pkgs/development/tools/protoc-gen-twirp_php/default.nix
index 30b2ff3ce78d1..7fc04ae81ae3f 100644
--- a/pkgs/development/tools/protoc-gen-twirp_php/default.nix
+++ b/pkgs/development/tools/protoc-gen-twirp_php/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "PHP port of Twitch's Twirp RPC framework";
+    mainProgram = "protoc-gen-twirp_php";
     homepage = "https://github.com/twirphp/twirp";
     license = licenses.mit;
     maintainers = with maintainers; [ jojosch ];
diff --git a/pkgs/development/tools/protoc-gen-twirp_swagger/default.nix b/pkgs/development/tools/protoc-gen-twirp_swagger/default.nix
index 0b651a6ce0b41..1445f60f676fb 100644
--- a/pkgs/development/tools/protoc-gen-twirp_swagger/default.nix
+++ b/pkgs/development/tools/protoc-gen-twirp_swagger/default.nix
@@ -17,6 +17,7 @@ buildGoModule {
 
   meta = with lib; {
     description = "Swagger generator for twirp";
+    mainProgram = "protoc-gen-twirp_swagger";
     homepage = "https://github.com/elliots/protoc-gen-twirp_swagger";
     license = licenses.bsd3;
     maintainers = with maintainers; [ jojosch ];
diff --git a/pkgs/development/tools/protoc-gen-twirp_typescript/default.nix b/pkgs/development/tools/protoc-gen-twirp_typescript/default.nix
index 259b2a8871a78..340b21784712b 100644
--- a/pkgs/development/tools/protoc-gen-twirp_typescript/default.nix
+++ b/pkgs/development/tools/protoc-gen-twirp_typescript/default.nix
@@ -18,6 +18,7 @@ buildGoModule {
 
   meta = with lib; {
     description = "Protobuf Plugin for Generating a Twirp Typescript Client";
+    mainProgram = "protoc-gen-twirp_typescript";
     homepage = "https://github.com/larrymyers/protoc-gen-twirp_typescript";
     license = licenses.mit;
     maintainers = with maintainers; [ jojosch dgollings ];
diff --git a/pkgs/development/tools/protoscope/default.nix b/pkgs/development/tools/protoscope/default.nix
index 70eeab5f15759..98ebbc995617a 100644
--- a/pkgs/development/tools/protoscope/default.nix
+++ b/pkgs/development/tools/protoscope/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Simple, human-editable language for representing and emitting the Protobuf wire format";
+    mainProgram = "protoscope";
     homepage = "https://github.com/protocolbuffers/protoscope";
     license = licenses.asl20;
     maintainers = with maintainers; [ aaronjheng ];
diff --git a/pkgs/development/tools/prototool/default.nix b/pkgs/development/tools/prototool/default.nix
index 3e7c9b0b87dbe..d47676fd6fa28 100644
--- a/pkgs/development/tools/prototool/default.nix
+++ b/pkgs/development/tools/prototool/default.nix
@@ -28,6 +28,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/uber/prototool";
     description = "Your Swiss Army Knife for Protocol Buffers";
+    mainProgram = "prototool";
     maintainers = [ maintainers.marsam ];
     license = licenses.mit;
   };
diff --git a/pkgs/development/tools/pscale/default.nix b/pkgs/development/tools/pscale/default.nix
index 06a152e8fcb17..ec8e0c6447322 100644
--- a/pkgs/development/tools/pscale/default.nix
+++ b/pkgs/development/tools/pscale/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "The CLI for PlanetScale Database";
+    mainProgram = "pscale";
     changelog = "https://github.com/planetscale/cli/releases/tag/v${version}";
     homepage = "https://www.planetscale.com/";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/pulumictl/default.nix b/pkgs/development/tools/pulumictl/default.nix
index 8a18b4424201a..b96c87bdf32cf 100644
--- a/pkgs/development/tools/pulumictl/default.nix
+++ b/pkgs/development/tools/pulumictl/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Swiss Army Knife for Pulumi Development";
+    mainProgram = "pulumictl";
     homepage = "https://github.com/pulumi/pulumictl";
     license = licenses.asl20;
     maintainers = with maintainers; [ vincentbernat ];
diff --git a/pkgs/development/tools/pup/default.nix b/pkgs/development/tools/pup/default.nix
index d7ca815babd4c..501d5613930c9 100644
--- a/pkgs/development/tools/pup/default.nix
+++ b/pkgs/development/tools/pup/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Parsing HTML at the command line";
+    mainProgram = "pup";
     homepage = "https://github.com/ericchiang/pup";
     license = licenses.mit;
     maintainers = with maintainers; [ yana ];
diff --git a/pkgs/development/tools/pur/default.nix b/pkgs/development/tools/pur/default.nix
index 9f8527b347659..6c33f5f0016e6 100644
--- a/pkgs/development/tools/pur/default.nix
+++ b/pkgs/development/tools/pur/default.nix
@@ -29,6 +29,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Python library for update and track the requirements";
+    mainProgram = "pur";
     homepage = "https://github.com/alanhamlett/pip-update-requirements";
     changelog = "https://github.com/alanhamlett/pip-update-requirements/blob/${version}/HISTORY.rst";
     license = with licenses; [ bsd2 ];
diff --git a/pkgs/development/tools/pxview/default.nix b/pkgs/development/tools/pxview/default.nix
index 84bf11c448306..53698261560e9 100644
--- a/pkgs/development/tools/pxview/default.nix
+++ b/pkgs/development/tools/pxview/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Program to convert Paradox databases";
+    mainProgram = "pxview";
     homepage = "https://pxlib.sourceforge.net/pxview/";
     license = licenses.gpl2;
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/py-spy/default.nix b/pkgs/development/tools/py-spy/default.nix
index 3b907c2010894..8ac80ee1dade9 100644
--- a/pkgs/development/tools/py-spy/default.nix
+++ b/pkgs/development/tools/py-spy/default.nix
@@ -50,6 +50,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Sampling profiler for Python programs";
+    mainProgram = "py-spy";
     homepage = "https://github.com/benfred/py-spy";
     changelog = "https://github.com/benfred/py-spy/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/pypi-mirror/default.nix b/pkgs/development/tools/pypi-mirror/default.nix
index f2a629042fd62..9eafecca465d7 100644
--- a/pkgs/development/tools/pypi-mirror/default.nix
+++ b/pkgs/development/tools/pypi-mirror/default.nix
@@ -17,6 +17,7 @@ python3.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A script to create a partial PyPI mirror";
+    mainProgram = "pypi-mirror";
     homepage = "https://github.com/montag451/pypi-mirror";
     license = licenses.mit;
     maintainers = with maintainers; [ kamadorueda ];
diff --git a/pkgs/development/tools/qc/default.nix b/pkgs/development/tools/qc/default.nix
index 786ab73758a80..e02df42fa1cc9 100644
--- a/pkgs/development/tools/qc/default.nix
+++ b/pkgs/development/tools/qc/default.nix
@@ -36,6 +36,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "QOwnNotes command-line snippet manager";
+    mainProgram = "qc";
     homepage = "https://github.com/qownnotes/qc";
     license = licenses.mit;
     maintainers = with maintainers; [ pbek totoroot ];
diff --git a/pkgs/development/tools/quick-lint-js/default.nix b/pkgs/development/tools/quick-lint-js/default.nix
index 0227a00f9d0a7..86b76bf99c071 100644
--- a/pkgs/development/tools/quick-lint-js/default.nix
+++ b/pkgs/development/tools/quick-lint-js/default.nix
@@ -50,6 +50,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Find bugs in Javascript programs";
+    mainProgram = "quick-lint-js";
     homepage = "https://quick-lint-js.com";
     license = licenses.gpl3Plus;
     maintainers = with maintainers; [ ratsclub ];
diff --git a/pkgs/development/tools/rain/default.nix b/pkgs/development/tools/rain/default.nix
index 2f263848e0203..878d9827a12ab 100644
--- a/pkgs/development/tools/rain/default.nix
+++ b/pkgs/development/tools/rain/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A development workflow tool for working with AWS CloudFormation";
+    mainProgram = "rain";
     homepage = "https://github.com/aws-cloudformation/rain";
     license = licenses.asl20;
     maintainers = with maintainers; [ jiegec ];
diff --git a/pkgs/development/tools/rakkess/default.nix b/pkgs/development/tools/rakkess/default.nix
index 83ee3c9ec1159..6b101e0b890ca 100644
--- a/pkgs/development/tools/rakkess/default.nix
+++ b/pkgs/development/tools/rakkess/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
     homepage = "https://github.com/corneliusweig/rakkess";
     changelog = "https://github.com/corneliusweig/rakkess/releases/tag/v${version}";
     description = "Review Access - kubectl plugin to show an access matrix for k8s server resources";
+    mainProgram = "rakkess";
     longDescription = ''
       Have you ever wondered what access rights you have on a provided
       kubernetes cluster? For single resources you can use
diff --git a/pkgs/development/tools/rars/default.nix b/pkgs/development/tools/rars/default.nix
index 8d51fc95cf4fa..b1ce9eecde525 100644
--- a/pkgs/development/tools/rars/default.nix
+++ b/pkgs/development/tools/rars/default.nix
@@ -24,6 +24,7 @@ stdenvNoCC.mkDerivation rec {
 
   meta = with lib; {
     description = "RISC-V Assembler and Runtime Simulator";
+    mainProgram = "rars";
     homepage = "https://github.com/TheThirdOne/rars";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.mit;
diff --git a/pkgs/development/tools/rbspy/default.nix b/pkgs/development/tools/rbspy/default.nix
index 309f8dbd90659..6ae0df232727d 100644
--- a/pkgs/development/tools/rbspy/default.nix
+++ b/pkgs/development/tools/rbspy/default.nix
@@ -54,6 +54,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     homepage = "https://rbspy.github.io/";
     description = "A Sampling CPU Profiler for Ruby";
+    mainProgram = "rbspy";
     changelog = "https://github.com/rbspy/rbspy/releases/tag/v${version}";
     license = licenses.mit;
     maintainers = with maintainers; [ viraptor ];
diff --git a/pkgs/development/tools/rcodesign/default.nix b/pkgs/development/tools/rcodesign/default.nix
index 34227dfa705e5..e3999ebff952d 100644
--- a/pkgs/development/tools/rcodesign/default.nix
+++ b/pkgs/development/tools/rcodesign/default.nix
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cross-platform CLI interface to interact with Apple code signing.";
+    mainProgram = "rcodesign";
     longDescription = ''
       rcodesign provides various commands to interact with Apple signing,
       including signing and notarizing binaries, generating signing
diff --git a/pkgs/development/tools/rdocker/default.nix b/pkgs/development/tools/rdocker/default.nix
index 098d7a5931487..fa823ec4d4c94 100644
--- a/pkgs/development/tools/rdocker/default.nix
+++ b/pkgs/development/tools/rdocker/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Securely control a remote docker daemon CLI using ssh forwarding, no SSL setup needed";
+    mainProgram = "rdocker";
     homepage = "https://github.com/dvddarias/rdocker";
     maintainers = [ lib.maintainers.pneumaticat ];
     license = licenses.mit;
diff --git a/pkgs/development/tools/react-native-debugger/default.nix b/pkgs/development/tools/react-native-debugger/default.nix
index b3cece9601869..b11e1da40b364 100644
--- a/pkgs/development/tools/react-native-debugger/default.nix
+++ b/pkgs/development/tools/react-native-debugger/default.nix
@@ -111,6 +111,7 @@ stdenv.mkDerivation rec {
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.mit;
     description = "The standalone app based on official debugger of React Native, and includes React Inspector / Redux DevTools";
+    mainProgram = "react-native-debugger";
     maintainers = with maintainers; [ ];
   };
 }
diff --git a/pkgs/development/tools/rebazel/default.nix b/pkgs/development/tools/rebazel/default.nix
index c28701f96a216..6cc64e1169819 100644
--- a/pkgs/development/tools/rebazel/default.nix
+++ b/pkgs/development/tools/rebazel/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "tool for expediting bazel build workflows";
+    mainProgram = "rebazel";
     homepage = "https://github.com/meetup/rebazel";
     license = licenses.mit;
     maintainers = with maintainers; [ zimbatm ];
diff --git a/pkgs/development/tools/refinery-cli/default.nix b/pkgs/development/tools/refinery-cli/default.nix
index 140efe5bfd1ba..7e3f7c0f4c8df 100644
--- a/pkgs/development/tools/refinery-cli/default.nix
+++ b/pkgs/development/tools/refinery-cli/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Run migrations for the Refinery ORM for Rust via the CLI";
+    mainProgram = "refinery";
     homepage = "https://github.com/rust-db/refinery";
     changelog = "https://github.com/rust-db/refinery/blob/${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/reflex/default.nix b/pkgs/development/tools/reflex/default.nix
index 406740e784f02..98cb6141003cb 100644
--- a/pkgs/development/tools/reflex/default.nix
+++ b/pkgs/development/tools/reflex/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A small tool to watch a directory and rerun a command when certain files change";
+    mainProgram = "reflex";
     homepage = "https://github.com/cespare/reflex";
     license = licenses.mit;
     maintainers = with maintainers; [ nicknovitski ];
diff --git a/pkgs/development/tools/refmt/default.nix b/pkgs/development/tools/refmt/default.nix
index efcb03a49b8fa..5946e75f3f20f 100644
--- a/pkgs/development/tools/refmt/default.nix
+++ b/pkgs/development/tools/refmt/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Reformat HCL <-> JSON <-> YAML";
+    mainProgram = "refmt";
     homepage = "https://github.com/rjeczalik/refmt";
     license = licenses.agpl3Only;
     maintainers = with lib.maintainers; [ deemp ];
diff --git a/pkgs/development/tools/refurb/default.nix b/pkgs/development/tools/refurb/default.nix
index 17c32d78d2883..e9dd2ecbd942a 100644
--- a/pkgs/development/tools/refurb/default.nix
+++ b/pkgs/development/tools/refurb/default.nix
@@ -56,6 +56,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "A tool for refurbishing and modernizing Python codebases";
+    mainProgram = "refurb";
     homepage = "https://github.com/dosisod/refurb";
     license = with licenses; [ gpl3Only ];
     maintainers = with maintainers; [ knl ];
diff --git a/pkgs/development/tools/reindeer/default.nix b/pkgs/development/tools/reindeer/default.nix
index c689ba110057f..8b6925e860e25 100644
--- a/pkgs/development/tools/reindeer/default.nix
+++ b/pkgs/development/tools/reindeer/default.nix
@@ -36,6 +36,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Reindeer is a tool which takes Rust Cargo dependencies and generates Buck build rules";
+    mainProgram = "reindeer";
     homepage = "https://github.com/facebookincubator/reindeer";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ nickgerace ];
diff --git a/pkgs/development/tools/relic/default.nix b/pkgs/development/tools/relic/default.nix
index 4029dfe028a7f..2fa4fcb13571d 100644
--- a/pkgs/development/tools/relic/default.nix
+++ b/pkgs/development/tools/relic/default.nix
@@ -34,6 +34,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/sassoftware/relic";
     description = "A service and a tool for adding digital signatures to operating system packages for Linux and Windows";
+    mainProgram = "relic";
     license = licenses.asl20;
     maintainers = with maintainers; [ strager ];
   };
diff --git a/pkgs/development/tools/remodel/default.nix b/pkgs/development/tools/remodel/default.nix
index 75c5ff2df3dac..c9374d3a8dec3 100644
--- a/pkgs/development/tools/remodel/default.nix
+++ b/pkgs/development/tools/remodel/default.nix
@@ -32,6 +32,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Roblox file manipulation tool";
+    mainProgram = "remodel";
     longDescription = ''
       Remodel is a command line tool for manipulating Roblox files and the instances contained within them.
     '';
diff --git a/pkgs/development/tools/renderizer/default.nix b/pkgs/development/tools/renderizer/default.nix
index 7a1540f138005..61f06a3bf44f7 100644
--- a/pkgs/development/tools/renderizer/default.nix
+++ b/pkgs/development/tools/renderizer/default.nix
@@ -19,6 +19,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI to render Go template text files";
+    mainProgram = "renderizer";
     inherit (src.meta) homepage;
     license = licenses.gpl3;
     maintainers = [];
diff --git a/pkgs/development/tools/reno/default.nix b/pkgs/development/tools/reno/default.nix
index c895deb4f34fe..f687583888f2d 100644
--- a/pkgs/development/tools/reno/default.nix
+++ b/pkgs/development/tools/reno/default.nix
@@ -52,6 +52,7 @@ with python3Packages; buildPythonApplication rec {
 
   meta = with lib; {
     description = "Release Notes Manager";
+    mainProgram = "reno";
     homepage = "https://docs.openstack.org/reno/latest";
     license = licenses.asl20;
     maintainers = with maintainers; [ drewrisinger guillaumekoenig ];
diff --git a/pkgs/development/tools/rep/default.nix b/pkgs/development/tools/rep/default.nix
index 0b1294abd1efa..78b9c2612e422 100644
--- a/pkgs/development/tools/rep/default.nix
+++ b/pkgs/development/tools/rep/default.nix
@@ -22,6 +22,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Single-shot nREPL client";
+    mainProgram = "rep";
     homepage = "https://github.com/eraserhd/rep";
     license = licenses.epl10;
     platforms = platforms.all;
diff --git a/pkgs/development/tools/reshape/default.nix b/pkgs/development/tools/reshape/default.nix
index d0bf9110c14e1..82eeb6e7b0b68 100644
--- a/pkgs/development/tools/reshape/default.nix
+++ b/pkgs/development/tools/reshape/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An easy-to-use, zero-downtime schema migration tool for Postgres";
+    mainProgram = "reshape";
     homepage = "https://github.com/fabianlindfors/reshape";
     changelog = "https://github.com/fabianlindfors/reshape/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/resolve-march-native/default.nix b/pkgs/development/tools/resolve-march-native/default.nix
index ae15c490f1862..a5db33e712ab9 100644
--- a/pkgs/development/tools/resolve-march-native/default.nix
+++ b/pkgs/development/tools/resolve-march-native/default.nix
@@ -22,6 +22,7 @@ python3Packages.buildPythonApplication rec {
 
   meta = with lib; {
     description = "Tool to determine what GCC flags -march=native would resolve into";
+    mainProgram = "resolve-march-native";
     homepage = "https://github.com/hartwork/resolve-march-native";
     license = licenses.gpl2Plus;
     maintainers = with maintainers; [ lovesegfault ];
diff --git a/pkgs/development/tools/revive/default.nix b/pkgs/development/tools/revive/default.nix
index 5e410ec1dab13..099bc7476c917 100644
--- a/pkgs/development/tools/revive/default.nix
+++ b/pkgs/development/tools/revive/default.nix
@@ -46,6 +46,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Fast, configurable, extensible, flexible, and beautiful linter for Go";
+    mainProgram = "revive";
     homepage = "https://revive.run";
     license = licenses.mit;
     maintainers = with maintainers; [ maaslalani ];
diff --git a/pkgs/development/tools/richgo/default.nix b/pkgs/development/tools/richgo/default.nix
index cef70f62ab688..3435572580acd 100644
--- a/pkgs/development/tools/richgo/default.nix
+++ b/pkgs/development/tools/richgo/default.nix
@@ -15,6 +15,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Enrich `go test` outputs with text decorations";
+    mainProgram = "richgo";
     homepage = "https://github.com/kyoh86/richgo";
     license = licenses.mit;
     maintainers = with maintainers; [ rvolosatovs ];
diff --git a/pkgs/development/tools/riot-redis/default.nix b/pkgs/development/tools/riot-redis/default.nix
index 55ac4e8399f84..755228361b1fa 100644
--- a/pkgs/development/tools/riot-redis/default.nix
+++ b/pkgs/development/tools/riot-redis/default.nix
@@ -34,6 +34,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://github.com/redis-developer/riot";
     description = "Get data in and out of Redis";
+    mainProgram = "riot-redis";
     license = licenses.asl20;
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     maintainers = with maintainers; [ wesnel ];
diff --git a/pkgs/development/tools/rojo/default.nix b/pkgs/development/tools/rojo/default.nix
index 0ed91bd18e3ed..746d269f76a2f 100644
--- a/pkgs/development/tools/rojo/default.nix
+++ b/pkgs/development/tools/rojo/default.nix
@@ -43,6 +43,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Project management tool for Roblox";
+    mainProgram = "rojo";
     longDescription = ''
       Rojo is a tool designed to enable Roblox developers to use professional-grade software engineering tools.
     '';
diff --git a/pkgs/development/tools/ronn/default.nix b/pkgs/development/tools/ronn/default.nix
index c3f0d26318480..3e0d49271177a 100644
--- a/pkgs/development/tools/ronn/default.nix
+++ b/pkgs/development/tools/ronn/default.nix
@@ -31,6 +31,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "markdown-based tool for building manpages";
+    mainProgram = "ronn";
     homepage = "https://github.com/apjanke/ronn-ng";
     license = licenses.mit;
     maintainers = with maintainers; [ zimbatm nicknovitski ];
diff --git a/pkgs/development/tools/rover/default.nix b/pkgs/development/tools/rover/default.nix
index 90b3d91413f72..244c61f467920 100644
--- a/pkgs/development/tools/rover/default.nix
+++ b/pkgs/development/tools/rover/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A CLI for interacting with ApolloGraphQL's developer tooling, including managing self-hosted and GraphOS graphs.";
+    mainProgram = "rover";
     homepage = "https://www.apollographql.com/docs/rover";
     license = licenses.mit;
     maintainers = [ maintainers.ivanbrennan maintainers.aaronarinder ];
diff --git a/pkgs/development/tools/rq/default.nix b/pkgs/development/tools/rq/default.nix
index 17a85c0145e85..d8ec2c9db8c35 100644
--- a/pkgs/development/tools/rq/default.nix
+++ b/pkgs/development/tools/rq/default.nix
@@ -28,6 +28,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool for doing record analysis and transformation";
+    mainProgram = "rq";
     homepage = "https://github.com/dflemstr/rq";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ aristid Br1ght0ne figsoda ];
diff --git a/pkgs/development/tools/run/default.nix b/pkgs/development/tools/run/default.nix
index ea7b8880636e8..794fb32c5cfeb 100644
--- a/pkgs/development/tools/run/default.nix
+++ b/pkgs/development/tools/run/default.nix
@@ -16,6 +16,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Easily manage and invoke small scripts and wrappers";
+    mainProgram = "run";
     homepage    = "https://github.com/TekWizely/run";
     license     = licenses.mit;
     maintainers = with maintainers; [ rawkode Br1ght0ne ];
diff --git a/pkgs/development/tools/rund/default.nix b/pkgs/development/tools/rund/default.nix
index 186e044318e09..e02e58fb893c1 100644
--- a/pkgs/development/tools/rund/default.nix
+++ b/pkgs/development/tools/rund/default.nix
@@ -41,6 +41,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A compiler-wrapper that runs and caches D programs";
+    mainProgram = "rund";
     homepage = "https://github.com/dragon-lang/rund";
     license = lib.licenses.boost;
     maintainers = with maintainers; [ jonathanmarler ];
diff --git a/pkgs/development/tools/rust/cargo-apk/default.nix b/pkgs/development/tools/rust/cargo-apk/default.nix
index 6bb05552e0794..130894a72ade4 100644
--- a/pkgs/development/tools/rust/cargo-apk/default.nix
+++ b/pkgs/development/tools/rust/cargo-apk/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Tool for creating Android packages";
+    mainProgram = "cargo-apk";
     homepage = "https://github.com/rust-windowing/android-ndk-rs";
     license = with licenses;[ mit asl20 ];
     maintainers = with maintainers; [ nickcao ];
diff --git a/pkgs/development/tools/rust/cargo-audit/default.nix b/pkgs/development/tools/rust/cargo-audit/default.nix
index c48b34e0d668d..8660eff6f638f 100644
--- a/pkgs/development/tools/rust/cargo-audit/default.nix
+++ b/pkgs/development/tools/rust/cargo-audit/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Audit Cargo.lock files for crates with security vulnerabilities";
+    mainProgram = "cargo-audit";
     homepage = "https://rustsec.org";
     changelog = "https://github.com/rustsec/rustsec/blob/cargo-audit/v${version}/cargo-audit/CHANGELOG.md";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/development/tools/rust/cargo-bazel/default.nix b/pkgs/development/tools/rust/cargo-bazel/default.nix
index 26409d25002be..3cb68b11c62e6 100644
--- a/pkgs/development/tools/rust/cargo-bazel/default.nix
+++ b/pkgs/development/tools/rust/cargo-bazel/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Part of the `crate_universe` collection of tools which use Cargo to generate build targets for Bazel";
+    mainProgram = "cargo-bazel";
     homepage = "https://github.com/bazelbuild/rules_rust";
     license = licenses.asl20;
     maintainers = with maintainers; [ rickvanprim ];
diff --git a/pkgs/development/tools/rust/cargo-benchcmp/default.nix b/pkgs/development/tools/rust/cargo-benchcmp/default.nix
index d46a57355d731..c12d496e1315b 100644
--- a/pkgs/development/tools/rust/cargo-benchcmp/default.nix
+++ b/pkgs/development/tools/rust/cargo-benchcmp/default.nix
@@ -33,6 +33,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A small utility to compare Rust micro-benchmarks";
+    mainProgram = "cargo-benchcmp";
     homepage = "https://github.com/BurntSushi/cargo-benchcmp";
     license = with licenses; [ mit unlicense ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/cargo-binstall/default.nix b/pkgs/development/tools/rust/cargo-binstall/default.nix
index 8149550313fee..8f0ae1b22dd00 100644
--- a/pkgs/development/tools/rust/cargo-binstall/default.nix
+++ b/pkgs/development/tools/rust/cargo-binstall/default.nix
@@ -56,6 +56,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool for installing rust binaries as an alternative to building from source";
+    mainProgram = "cargo-binstall";
     homepage = "https://github.com/cargo-bins/cargo-binstall";
     changelog = "https://github.com/cargo-bins/cargo-binstall/releases/tag/v${version}";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/tools/rust/cargo-bisect-rustc/default.nix b/pkgs/development/tools/rust/cargo-bisect-rustc/default.nix
index da57b85e083e8..5c7d0d57fde0b 100644
--- a/pkgs/development/tools/rust/cargo-bisect-rustc/default.nix
+++ b/pkgs/development/tools/rust/cargo-bisect-rustc/default.nix
@@ -55,6 +55,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Bisects rustc, either nightlies or CI artifacts";
+    mainProgram = "cargo-bisect-rustc";
     homepage = "https://github.com/rust-lang/cargo-bisect-rustc";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ davidtwco ];
diff --git a/pkgs/development/tools/rust/cargo-bitbake/default.nix b/pkgs/development/tools/rust/cargo-bitbake/default.nix
index 2d26cf97da4d1..ed3f5a243cb38 100644
--- a/pkgs/development/tools/rust/cargo-bitbake/default.nix
+++ b/pkgs/development/tools/rust/cargo-bitbake/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo extension that can generate BitBake recipes utilizing the classes from meta-rust";
+    mainProgram = "cargo-bitbake";
     homepage = "https://github.com/meta-rust/cargo-bitbake";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ rvarago ];
diff --git a/pkgs/development/tools/rust/cargo-bolero/default.nix b/pkgs/development/tools/rust/cargo-bolero/default.nix
index 15a3a28183a04..c242732b237bb 100644
--- a/pkgs/development/tools/rust/cargo-bolero/default.nix
+++ b/pkgs/development/tools/rust/cargo-bolero/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Fuzzing and property testing front-end framework for Rust";
+    mainProgram = "cargo-bolero";
     homepage = "https://github.com/camshaft/bolero";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ ekleog ];
diff --git a/pkgs/development/tools/rust/cargo-bundle-licenses/default.nix b/pkgs/development/tools/rust/cargo-bundle-licenses/default.nix
index 0274f80e01b8e..1a6cc5ca07461 100644
--- a/pkgs/development/tools/rust/cargo-bundle-licenses/default.nix
+++ b/pkgs/development/tools/rust/cargo-bundle-licenses/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Generate a THIRDPARTY file with all licenses in a cargo project";
+    mainProgram = "cargo-bundle-licenses";
     homepage = "https://github.com/sstadick/cargo-bundle-licenses";
     changelog = "https://github.com/sstadick/cargo-bundle-licenses/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ mit asl20 ];
diff --git a/pkgs/development/tools/rust/cargo-bundle/default.nix b/pkgs/development/tools/rust/cargo-bundle/default.nix
index 73924d1c599a7..daf4bc230b8d0 100644
--- a/pkgs/development/tools/rust/cargo-bundle/default.nix
+++ b/pkgs/development/tools/rust/cargo-bundle/default.nix
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage {
 
   meta = with lib; {
     description = "Wrap rust executables in OS-specific app bundles";
+    mainProgram = "cargo-bundle";
     homepage = "https://github.com/burtonageo/cargo-bundle";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/cargo-cache/default.nix b/pkgs/development/tools/rust/cargo-cache/default.nix
index 8e37c1489dfd5..a1151c161ffd9 100644
--- a/pkgs/development/tools/rust/cargo-cache/default.nix
+++ b/pkgs/development/tools/rust/cargo-cache/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Manage cargo cache (\${CARGO_HOME}, ~/.cargo/), print sizes of dirs and remove dirs selectively";
+    mainProgram = "cargo-cache";
     homepage = "https://github.com/matthiaskrgr/cargo-cache";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ Br1ght0ne matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-careful/default.nix b/pkgs/development/tools/rust/cargo-careful/default.nix
index 7d147241b46e0..a4d5abfd0233f 100644
--- a/pkgs/development/tools/rust/cargo-careful/default.nix
+++ b/pkgs/development/tools/rust/cargo-careful/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to execute Rust code carefully, with extra checking along the way";
+    mainProgram = "cargo-careful";
     homepage = "https://github.com/RalfJung/cargo-careful";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ figsoda matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-chef/default.nix b/pkgs/development/tools/rust/cargo-chef/default.nix
index 030450d454d3d..27cc6e1042d78 100644
--- a/pkgs/development/tools/rust/cargo-chef/default.nix
+++ b/pkgs/development/tools/rust/cargo-chef/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cargo-subcommand to speed up Rust Docker builds using Docker layer caching";
+    mainProgram = "cargo-chef";
     homepage = "https://github.com/LukeMathWalker/cargo-chef";
     license = licenses.mit;
     maintainers = with maintainers; [ kkharji ];
diff --git a/pkgs/development/tools/rust/cargo-clone/default.nix b/pkgs/development/tools/rust/cargo-clone/default.nix
index 6a8f432ecab76..4ad07b579347b 100644
--- a/pkgs/development/tools/rust/cargo-clone/default.nix
+++ b/pkgs/development/tools/rust/cargo-clone/default.nix
@@ -33,6 +33,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cargo subcommand to fetch the source code of a Rust crate";
+    mainProgram = "cargo-clone";
     homepage = "https://github.com/janlikar/cargo-clone";
     changelog = "https://github.com/janlikar/cargo-clone/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/development/tools/rust/cargo-cranky/default.nix b/pkgs/development/tools/rust/cargo-cranky/default.nix
index 1af60f183fdcd..78acf1006508f 100644
--- a/pkgs/development/tools/rust/cargo-cranky/default.nix
+++ b/pkgs/development/tools/rust/cargo-cranky/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An easy to configure wrapper for Rust's clippy";
+    mainProgram = "cargo-cranky";
     homepage = "https://github.com/ericseppanen/cargo-cranky";
     changelog = "https://github.com/ericseppanen/cargo-cranky/releases/tag/${src.rev}";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/development/tools/rust/cargo-crev/default.nix b/pkgs/development/tools/rust/cargo-crev/default.nix
index 26606ecd5ee7a..832d736a97713 100644
--- a/pkgs/development/tools/rust/cargo-crev/default.nix
+++ b/pkgs/development/tools/rust/cargo-crev/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cryptographically verifiable code review system for the cargo (Rust) package manager";
+    mainProgram = "cargo-crev";
     homepage = "https://github.com/crev-dev/cargo-crev";
     license = with licenses; [ asl20 mit mpl20 ];
     maintainers = with maintainers; [ b4dm4n matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-criterion/default.nix b/pkgs/development/tools/rust/cargo-criterion/default.nix
index cc9f5ae255cca..986892a68b4d0 100644
--- a/pkgs/development/tools/rust/cargo-criterion/default.nix
+++ b/pkgs/development/tools/rust/cargo-criterion/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo extension for running Criterion.rs benchmarks";
+    mainProgram = "cargo-criterion";
     homepage = "https://github.com/bheisler/cargo-criterion";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ humancalico matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-cyclonedx/default.nix b/pkgs/development/tools/rust/cargo-cyclonedx/default.nix
index c4290a6e9cfa3..79f0b5d2eb3db 100644
--- a/pkgs/development/tools/rust/cargo-cyclonedx/default.nix
+++ b/pkgs/development/tools/rust/cargo-cyclonedx/default.nix
@@ -38,6 +38,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Creates CycloneDX Software Bill of Materials (SBOM) from Rust (Cargo) projects";
+    mainProgram = "cargo-cyclonedx";
     longDescription = ''
       The CycloneDX module for Rust (Cargo) creates a valid CycloneDX Software
       Bill-of-Material (SBOM) containing an aggregate of all project
diff --git a/pkgs/development/tools/rust/cargo-deb/default.nix b/pkgs/development/tools/rust/cargo-deb/default.nix
index 0d3af8268eceb..b70f742772c0e 100644
--- a/pkgs/development/tools/rust/cargo-deb/default.nix
+++ b/pkgs/development/tools/rust/cargo-deb/default.nix
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cargo subcommand that generates Debian packages from information in Cargo.toml";
+    mainProgram = "cargo-deb";
     homepage = "https://github.com/kornelski/cargo-deb";
     license = licenses.mit;
     maintainers = with maintainers; [ Br1ght0ne matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-deny/default.nix b/pkgs/development/tools/rust/cargo-deny/default.nix
index 5fb6e1adac4b0..558b8ae486c22 100644
--- a/pkgs/development/tools/rust/cargo-deny/default.nix
+++ b/pkgs/development/tools/rust/cargo-deny/default.nix
@@ -40,6 +40,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo plugin to generate list of all licenses for a crate";
+    mainProgram = "cargo-deny";
     homepage = "https://github.com/EmbarkStudios/cargo-deny";
     changelog = "https://github.com/EmbarkStudios/cargo-deny/blob/${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-depgraph/default.nix b/pkgs/development/tools/rust/cargo-depgraph/default.nix
index 1e7c63574c99f..1918501d1d92d 100644
--- a/pkgs/development/tools/rust/cargo-depgraph/default.nix
+++ b/pkgs/development/tools/rust/cargo-depgraph/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Create dependency graphs for cargo projects using `cargo metadata` and graphviz";
+    mainProgram = "cargo-depgraph";
     homepage = "https://sr.ht/~jplatte/cargo-depgraph";
     changelog = "https://git.sr.ht/~jplatte/cargo-depgraph/tree/${src.rev}/item/CHANGELOG.md";
     license = licenses.gpl3Plus;
diff --git a/pkgs/development/tools/rust/cargo-dephell/default.nix b/pkgs/development/tools/rust/cargo-dephell/default.nix
index b01a722e5ea1d..fd1bd84836f6c 100644
--- a/pkgs/development/tools/rust/cargo-dephell/default.nix
+++ b/pkgs/development/tools/rust/cargo-dephell/default.nix
@@ -49,6 +49,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to analyze the third-party dependencies imported by a rust crate or rust workspace";
+    mainProgram = "cargo-dephell";
     homepage = "https://github.com/mimoo/cargo-dephell";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-deps/default.nix b/pkgs/development/tools/rust/cargo-deps/default.nix
index 0cbba27cf15f2..4265873a71acc 100644
--- a/pkgs/development/tools/rust/cargo-deps/default.nix
+++ b/pkgs/development/tools/rust/cargo-deps/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand for building dependency graphs of Rust projects";
+    mainProgram = "cargo-deps";
     homepage = "https://github.com/m-cat/cargo-deps";
     license = licenses.mit;
     maintainers = with maintainers; [ arcnmx matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-diet/default.nix b/pkgs/development/tools/rust/cargo-diet/default.nix
index 60aadca13d002..b7b4e2d11d1bb 100644
--- a/pkgs/development/tools/rust/cargo-diet/default.nix
+++ b/pkgs/development/tools/rust/cargo-diet/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Help computing optimal include directives for your Cargo.toml manifest";
+    mainProgram = "cargo-diet";
     homepage = "https://github.com/the-lean-crate/cargo-diet";
     changelog = "https://github.com/the-lean-crate/cargo-diet/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/rust/cargo-dist/default.nix b/pkgs/development/tools/rust/cargo-dist/default.nix
index df0ab6cabd67c..87026163fb906 100644
--- a/pkgs/development/tools/rust/cargo-dist/default.nix
+++ b/pkgs/development/tools/rust/cargo-dist/default.nix
@@ -55,6 +55,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool for building final distributable artifacts and uploading them to an archive";
+    mainProgram = "cargo-dist";
     homepage = "https://github.com/axodotdev/cargo-dist";
     changelog = "https://github.com/axodotdev/cargo-dist/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/development/tools/rust/cargo-docset/default.nix b/pkgs/development/tools/rust/cargo-docset/default.nix
index 95fa48e4aba91..54328186e8b75 100644
--- a/pkgs/development/tools/rust/cargo-docset/default.nix
+++ b/pkgs/development/tools/rust/cargo-docset/default.nix
@@ -26,6 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand to generate a Dash/Zeal docset for your Rust packages";
+    mainProgram = "cargo-docset";
     homepage = "https://github.com/Robzz/cargo-docset";
     changelog = "https://github.com/Robzz/cargo-docset/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/rust/cargo-duplicates/default.nix b/pkgs/development/tools/rust/cargo-duplicates/default.nix
index 781764d3c313b..d2f3b9c7a09da 100644
--- a/pkgs/development/tools/rust/cargo-duplicates/default.nix
+++ b/pkgs/development/tools/rust/cargo-duplicates/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cargo subcommand for displaying when different versions of a same dependency are pulled in";
+    mainProgram = "cargo-duplicates";
     homepage = "https://github.com/Keruspe/cargo-duplicates";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-expand/default.nix b/pkgs/development/tools/rust/cargo-expand/default.nix
index a51b972921da3..86c322f7116cb 100644
--- a/pkgs/development/tools/rust/cargo-expand/default.nix
+++ b/pkgs/development/tools/rust/cargo-expand/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A utility and Cargo subcommand designed to let people expand macros in their Rust source code";
+    mainProgram = "cargo-expand";
     homepage = "https://github.com/dtolnay/cargo-expand";
     changelog = "https://github.com/dtolnay/cargo-expand/releases/tag/${version}";
     license = with licenses; [ mit asl20 ];
diff --git a/pkgs/development/tools/rust/cargo-feature/default.nix b/pkgs/development/tools/rust/cargo-feature/default.nix
index 855fb65fdfb71..c09447ebbc048 100644
--- a/pkgs/development/tools/rust/cargo-feature/default.nix
+++ b/pkgs/development/tools/rust/cargo-feature/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo plugin to manage dependency features";
+    mainProgram = "cargo-feature";
     homepage = "https://github.com/Riey/cargo-feature";
     license = licenses.mit;
     platforms = platforms.unix;
diff --git a/pkgs/development/tools/rust/cargo-fund/default.nix b/pkgs/development/tools/rust/cargo-fund/default.nix
index 54a04f29a0127..42f703aaa2402 100644
--- a/pkgs/development/tools/rust/cargo-fund/default.nix
+++ b/pkgs/development/tools/rust/cargo-fund/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Discover funding links for your project's dependencies";
+    mainProgram = "cargo-fund";
     homepage = "https://github.com/acfoltzer/cargo-fund";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ johntitor ];
diff --git a/pkgs/development/tools/rust/cargo-fuzz/default.nix b/pkgs/development/tools/rust/cargo-fuzz/default.nix
index b41bdbe32f682..fc60b761fe4ed 100644
--- a/pkgs/development/tools/rust/cargo-fuzz/default.nix
+++ b/pkgs/development/tools/rust/cargo-fuzz/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Command line helpers for fuzzing";
+    mainProgram = "cargo-fuzz";
     homepage = "https://github.com/rust-fuzz/cargo-fuzz";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ ekleog matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-geiger/default.nix b/pkgs/development/tools/rust/cargo-geiger/default.nix
index 5c48aeeb38291..3fbf1af9ad46d 100644
--- a/pkgs/development/tools/rust/cargo-geiger/default.nix
+++ b/pkgs/development/tools/rust/cargo-geiger/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://github.com/rust-secure-code/cargo-geiger";
     changelog = "https://github.com/rust-secure-code/cargo-geiger/blob/${pname}-${version}/CHANGELOG.md";
     description = "Detects usage of unsafe Rust in a Rust crate and its dependencies";
+    mainProgram = "cargo-geiger";
     longDescription = ''
       A cargo plugin that detects the usage of unsafe Rust in a Rust crate and
       its dependencies. It provides information to aid auditing and guide
diff --git a/pkgs/development/tools/rust/cargo-generate/default.nix b/pkgs/development/tools/rust/cargo-generate/default.nix
index 299bcd7ffad7f..4cf34bbe6a3d5 100644
--- a/pkgs/development/tools/rust/cargo-generate/default.nix
+++ b/pkgs/development/tools/rust/cargo-generate/default.nix
@@ -54,6 +54,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to generate a new Rust project by leveraging a pre-existing git repository as a template";
+    mainProgram = "cargo-generate";
     homepage = "https://github.com/cargo-generate/cargo-generate";
     changelog = "https://github.com/cargo-generate/cargo-generate/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-guppy/default.nix b/pkgs/development/tools/rust/cargo-guppy/default.nix
index e62a0a9925fd4..488c4284b1756 100644
--- a/pkgs/development/tools/rust/cargo-guppy/default.nix
+++ b/pkgs/development/tools/rust/cargo-guppy/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command-line frontend for guppy";
+    mainProgram = "cargo-guppy";
     homepage = "https://github.com/guppy-rs/guppy/tree/main/cargo-guppy";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/cargo-hack/default.nix b/pkgs/development/tools/rust/cargo-hack/default.nix
index cf10116a73882..a24fa814fc026 100644
--- a/pkgs/development/tools/rust/cargo-hack/default.nix
+++ b/pkgs/development/tools/rust/cargo-hack/default.nix
@@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand to provide various options useful for testing and continuous integration";
+    mainProgram = "cargo-hack";
     homepage = "https://github.com/taiki-e/cargo-hack";
     changelog = "https://github.com/taiki-e/cargo-hack/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-hakari/default.nix b/pkgs/development/tools/rust/cargo-hakari/default.nix
index e58bf32863a8d..6cf225e8de605 100644
--- a/pkgs/development/tools/rust/cargo-hakari/default.nix
+++ b/pkgs/development/tools/rust/cargo-hakari/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Manage workspace-hack packages to speed up builds in large workspaces.";
+    mainProgram = "cargo-hakari";
     longDescription = ''
       cargo hakari is a command-line application to manage workspace-hack crates.
       Use it to speed up local cargo build and cargo check commands by 15-95%,
diff --git a/pkgs/development/tools/rust/cargo-hf2/default.nix b/pkgs/development/tools/rust/cargo-hf2/default.nix
index 92a0a54581754..b49f7904812f1 100644
--- a/pkgs/development/tools/rust/cargo-hf2/default.nix
+++ b/pkgs/development/tools/rust/cargo-hf2/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo Subcommand for Microsoft HID Flashing Library for UF2 Bootloaders ";
+    mainProgram = "cargo-hf2";
     homepage = "https://lib.rs/crates/cargo-hf2";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ astrobeastie ];
diff --git a/pkgs/development/tools/rust/cargo-info/default.nix b/pkgs/development/tools/rust/cargo-info/default.nix
index 9e05699e6c439..c2892ab70783c 100644
--- a/pkgs/development/tools/rust/cargo-info/default.nix
+++ b/pkgs/development/tools/rust/cargo-info/default.nix
@@ -32,6 +32,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand to show crates info from crates.io";
+    mainProgram = "cargo-info";
     homepage = "https://gitlab.com/imp/cargo-info";
     changelog = "https://gitlab.com/imp/cargo-info/-/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ mit asl20 ];
diff --git a/pkgs/development/tools/rust/cargo-inspect/default.nix b/pkgs/development/tools/rust/cargo-inspect/default.nix
index 4a9f642b700fd..db646ec07c9e3 100644
--- a/pkgs/development/tools/rust/cargo-inspect/default.nix
+++ b/pkgs/development/tools/rust/cargo-inspect/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "See what Rust is doing behind the curtains";
+    mainProgram = "cargo-inspect";
     homepage = "https://github.com/mre/cargo-inspect";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ minijackson matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-insta/default.nix b/pkgs/development/tools/rust/cargo-insta/default.nix
index 36f13c7fc8900..50fc9abaac4d3 100644
--- a/pkgs/development/tools/rust/cargo-insta/default.nix
+++ b/pkgs/development/tools/rust/cargo-insta/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Cargo subcommand for snapshot testing";
+    mainProgram = "cargo-insta";
     homepage = "https://github.com/mitsuhiko/insta";
     changelog = "https://github.com/mitsuhiko/insta/blob/${version}/CHANGELOG.md";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/rust/cargo-kcov/default.nix b/pkgs/development/tools/rust/cargo-kcov/default.nix
index 1b7c3b0eead92..68ed13d1ad01f 100644
--- a/pkgs/development/tools/rust/cargo-kcov/default.nix
+++ b/pkgs/development/tools/rust/cargo-kcov/default.nix
@@ -28,6 +28,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand to run kcov to get coverage report on Linux";
+    mainProgram = "cargo-kcov";
     homepage = "https://github.com/kennytm/cargo-kcov";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ saschagrunert matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-lambda/default.nix b/pkgs/development/tools/rust/cargo-lambda/default.nix
index c93679d63d05e..ada381da6f088 100644
--- a/pkgs/development/tools/rust/cargo-lambda/default.nix
+++ b/pkgs/development/tools/rust/cargo-lambda/default.nix
@@ -69,6 +69,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Cargo subcommand to help you work with AWS Lambda";
+    mainProgram = "cargo-lambda";
     homepage = "https://cargo-lambda.info";
     license = licenses.mit;
     maintainers = with maintainers; [ taylor1791 calavera ];
diff --git a/pkgs/development/tools/rust/cargo-leptos/default.nix b/pkgs/development/tools/rust/cargo-leptos/default.nix
index e853688fa63df..be3a4af0a48d8 100644
--- a/pkgs/development/tools/rust/cargo-leptos/default.nix
+++ b/pkgs/development/tools/rust/cargo-leptos/default.nix
@@ -38,6 +38,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A build tool for the Leptos web framework";
+    mainProgram = "cargo-leptos";
     homepage = "https://github.com/leptos-rs/cargo-leptos";
     changelog = "https://github.com/leptos-rs/cargo-leptos/releases/tag/v${version}";
     license = with licenses; [ mit ];
diff --git a/pkgs/development/tools/rust/cargo-license/default.nix b/pkgs/development/tools/rust/cargo-license/default.nix
index 27798f4ca85e6..ee00c71c11da9 100644
--- a/pkgs/development/tools/rust/cargo-license/default.nix
+++ b/pkgs/development/tools/rust/cargo-license/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand to see license of dependencies";
+    mainProgram = "cargo-license";
     homepage = "https://github.com/onur/cargo-license";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ basvandijk figsoda matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-llvm-cov/default.nix b/pkgs/development/tools/rust/cargo-llvm-cov/default.nix
index a00376acb98c7..ee945b4edc26c 100644
--- a/pkgs/development/tools/rust/cargo-llvm-cov/default.nix
+++ b/pkgs/development/tools/rust/cargo-llvm-cov/default.nix
@@ -86,6 +86,7 @@ rustPlatform.buildRustPackage {
     inherit homepage;
     changelog = homepage + "/blob/v${version}/CHANGELOG.md";
     description = "Cargo subcommand to easily use LLVM source-based code coverage";
+    mainProgram = "cargo-llvm-cov";
     longDescription = ''
       In order for this to work, you either need to run `rustup component add llvm-
       tools-preview` or install the `llvm-tools-preview` component using your Nix
diff --git a/pkgs/development/tools/rust/cargo-llvm-lines/default.nix b/pkgs/development/tools/rust/cargo-llvm-lines/default.nix
index 083494fb0b37d..3a0edf3a54cbf 100644
--- a/pkgs/development/tools/rust/cargo-llvm-lines/default.nix
+++ b/pkgs/development/tools/rust/cargo-llvm-lines/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Count the number of lines of LLVM IR across all instantiations of a generic function";
+    mainProgram = "cargo-llvm-lines";
     homepage = "https://github.com/dtolnay/cargo-llvm-lines";
     changelog = "https://github.com/dtolnay/cargo-llvm-lines/releases/tag/${src.rev}";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-local-registry/default.nix b/pkgs/development/tools/rust/cargo-local-registry/default.nix
index 6d7addf4117c9..0b2f31d05a805 100644
--- a/pkgs/development/tools/rust/cargo-local-registry/default.nix
+++ b/pkgs/development/tools/rust/cargo-local-registry/default.nix
@@ -49,6 +49,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cargo subcommand to manage local registries";
+    mainProgram = "cargo-local-registry";
     homepage = "https://github.com/dhovart/cargo-local-registry";
     changelog = "https://github.com/dhovart/cargo-local-registry/releases/tag/${src.rev}";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/development/tools/rust/cargo-lock/default.nix b/pkgs/development/tools/rust/cargo-lock/default.nix
index af5f5eae17191..6c1f35b1244d6 100644
--- a/pkgs/development/tools/rust/cargo-lock/default.nix
+++ b/pkgs/development/tools/rust/cargo-lock/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Self-contained Cargo.lock parser with graph analysis";
+    mainProgram = "cargo-lock";
     homepage = "https://github.com/rustsec/rustsec/tree/main/cargo-lock";
     changelog = "https://github.com/rustsec/rustsec/blob/cargo-lock/v${version}/cargo-lock/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-machete/default.nix b/pkgs/development/tools/rust/cargo-machete/default.nix
index b9bbafafb380e..9bd05294bec79 100644
--- a/pkgs/development/tools/rust/cargo-machete/default.nix
+++ b/pkgs/development/tools/rust/cargo-machete/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Cargo tool that detects unused dependencies in Rust projects";
+    mainProgram = "cargo-machete";
     homepage = "https://github.com/bnjbvr/cargo-machete";
     changelog = "https://github.com/bnjbvr/cargo-machete/blob/${src.rev}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/rust/cargo-modules/default.nix b/pkgs/development/tools/rust/cargo-modules/default.nix
index 122bbe2a0e905..b237c64dc2af7 100644
--- a/pkgs/development/tools/rust/cargo-modules/default.nix
+++ b/pkgs/development/tools/rust/cargo-modules/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cargo plugin for showing a tree-like overview of a crate's modules";
+    mainProgram = "cargo-modules";
     homepage = "https://github.com/regexident/cargo-modules";
     changelog = "https://github.com/regexident/cargo-modules/blob/${version}/CHANGELOG.md";
     license = with licenses; [ mpl20 ];
diff --git a/pkgs/development/tools/rust/cargo-mommy/default.nix b/pkgs/development/tools/rust/cargo-mommy/default.nix
index 22bfe3ac1f20f..e62f87969d7c4 100644
--- a/pkgs/development/tools/rust/cargo-mommy/default.nix
+++ b/pkgs/development/tools/rust/cargo-mommy/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo wrapper that encourages you after running commands";
+    mainProgram = "cargo-mommy";
     homepage = "https://github.com/Gankra/cargo-mommy";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ GoldsteinE ];
diff --git a/pkgs/development/tools/rust/cargo-msrv/default.nix b/pkgs/development/tools/rust/cargo-msrv/default.nix
index f1b9e8eb0ec0b..1492de85daa05 100644
--- a/pkgs/development/tools/rust/cargo-msrv/default.nix
+++ b/pkgs/development/tools/rust/cargo-msrv/default.nix
@@ -47,6 +47,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand \"msrv\": assists with finding your minimum supported Rust version (MSRV)";
+    mainProgram = "cargo-msrv";
     homepage = "https://github.com/foresterre/cargo-msrv";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ otavio matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-mutants/default.nix b/pkgs/development/tools/rust/cargo-mutants/default.nix
index 874195aaf8424..ba54eeb56bd7f 100644
--- a/pkgs/development/tools/rust/cargo-mutants/default.nix
+++ b/pkgs/development/tools/rust/cargo-mutants/default.nix
@@ -27,6 +27,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A mutation testing tool for Rust";
+    mainProgram = "cargo-mutants";
     homepage = "https://github.com/sourcefrog/cargo-mutants";
     changelog = "https://github.com/sourcefrog/cargo-mutants/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/rust/cargo-ndk/default.nix b/pkgs/development/tools/rust/cargo-ndk/default.nix
index 4b1bccb1596ef..12b0b7bbdfbf3 100644
--- a/pkgs/development/tools/rust/cargo-ndk/default.nix
+++ b/pkgs/development/tools/rust/cargo-ndk/default.nix
@@ -26,6 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo extension for building Android NDK projects";
+    mainProgram = "cargo-ndk";
     homepage = "https://github.com/bbqsrc/cargo-ndk";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ mglolenstine ];
diff --git a/pkgs/development/tools/rust/cargo-nextest/default.nix b/pkgs/development/tools/rust/cargo-nextest/default.nix
index 2826a3a7af06f..8972fef8825a8 100644
--- a/pkgs/development/tools/rust/cargo-nextest/default.nix
+++ b/pkgs/development/tools/rust/cargo-nextest/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Next-generation test runner for Rust projects";
+    mainProgram = "cargo-nextest";
     homepage = "https://github.com/nextest-rs/nextest";
     changelog = "https://nexte.st/CHANGELOG.html";
     license = with licenses; [ mit asl20 ];
diff --git a/pkgs/development/tools/rust/cargo-outdated/default.nix b/pkgs/development/tools/rust/cargo-outdated/default.nix
index 2f3c6ae76c79f..178c668fcd901 100644
--- a/pkgs/development/tools/rust/cargo-outdated/default.nix
+++ b/pkgs/development/tools/rust/cargo-outdated/default.nix
@@ -34,6 +34,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cargo subcommand for displaying when Rust dependencies are out of date";
+    mainProgram = "cargo-outdated";
     homepage = "https://github.com/kbknapp/cargo-outdated";
     changelog = "https://github.com/kbknapp/cargo-outdated/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-pgrx/default.nix b/pkgs/development/tools/rust/cargo-pgrx/default.nix
index a0d2657702a55..85fc916104ada 100644
--- a/pkgs/development/tools/rust/cargo-pgrx/default.nix
+++ b/pkgs/development/tools/rust/cargo-pgrx/default.nix
@@ -30,6 +30,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Build Postgres Extensions with Rust!";
+    mainProgram = "cargo-pgrx";
     homepage = "https://github.com/tcdi/pgrx";
     changelog = "https://github.com/tcdi/pgrx/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/rust/cargo-pgx/0_6_1.nix b/pkgs/development/tools/rust/cargo-pgx/0_6_1.nix
index 004b6ed27543e..8dbc22cdfd498 100644
--- a/pkgs/development/tools/rust/cargo-pgx/0_6_1.nix
+++ b/pkgs/development/tools/rust/cargo-pgx/0_6_1.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand for ‘pgx’ to make Postgres extension development easy";
+    mainProgram = "cargo-pgx";
     homepage = "https://github.com/tcdi/pgx/tree/v${version}/cargo-pgx";
     license = licenses.mit;
     maintainers = with maintainers; [ typetetris ];
diff --git a/pkgs/development/tools/rust/cargo-pgx/0_7_1.nix b/pkgs/development/tools/rust/cargo-pgx/0_7_1.nix
index 408244f638bed..6dd8a0661bed5 100644
--- a/pkgs/development/tools/rust/cargo-pgx/0_7_1.nix
+++ b/pkgs/development/tools/rust/cargo-pgx/0_7_1.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand for ‘pgx’ to make Postgres extension development easy";
+    mainProgram = "cargo-pgx";
     homepage = "https://github.com/tcdi/pgx/tree/v${version}/cargo-pgx";
     license = licenses.mit;
     maintainers = with maintainers; [ typetetris ];
diff --git a/pkgs/development/tools/rust/cargo-pgx/0_7_4.nix b/pkgs/development/tools/rust/cargo-pgx/0_7_4.nix
index e54a3c6a877ea..0f2b3ef35c221 100644
--- a/pkgs/development/tools/rust/cargo-pgx/0_7_4.nix
+++ b/pkgs/development/tools/rust/cargo-pgx/0_7_4.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand for ‘pgx’ to make Postgres extension development easy";
+    mainProgram = "cargo-pgx";
     homepage = "https://github.com/tcdi/pgx/tree/v${version}/cargo-pgx";
     license = licenses.mit;
     maintainers = with maintainers; [ typetetris ];
diff --git a/pkgs/development/tools/rust/cargo-play/default.nix b/pkgs/development/tools/rust/cargo-play/default.nix
index 441b906ab343f..94520d0d56699 100644
--- a/pkgs/development/tools/rust/cargo-play/default.nix
+++ b/pkgs/development/tools/rust/cargo-play/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Run your rust code without setting up cargo";
+    mainProgram = "cargo-play";
     homepage = "https://github.com/fanzeyi/cargo-play";
     license = licenses.mit;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/cargo-profiler/default.nix b/pkgs/development/tools/rust/cargo-profiler/default.nix
index 88a04885a740d..595bf6d8d032e 100644
--- a/pkgs/development/tools/rust/cargo-profiler/default.nix
+++ b/pkgs/development/tools/rust/cargo-profiler/default.nix
@@ -26,6 +26,7 @@ in buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand for profiling Rust binaries";
+    mainProgram = "cargo-profiler";
     homepage = "https://github.com/svenstaro/cargo-profiler";
     license = licenses.mit;
     maintainers = with maintainers; [ lucperkins ];
diff --git a/pkgs/development/tools/rust/cargo-public-api/default.nix b/pkgs/development/tools/rust/cargo-public-api/default.nix
index 2b5a83f8d0c18..da51224ccc651 100644
--- a/pkgs/development/tools/rust/cargo-public-api/default.nix
+++ b/pkgs/development/tools/rust/cargo-public-api/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "List and diff the public API of Rust library crates between releases and commits. Detect breaking API changes and semver violations";
+    mainProgram = "cargo-public-api";
     homepage = "https://github.com/Enselic/cargo-public-api";
     changelog = "https://github.com/Enselic/cargo-public-api/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/rust/cargo-readme/default.nix b/pkgs/development/tools/rust/cargo-readme/default.nix
index 15c5ad5145245..2b5fb7abc69b5 100644
--- a/pkgs/development/tools/rust/cargo-readme/default.nix
+++ b/pkgs/development/tools/rust/cargo-readme/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Generate README.md from docstrings";
+    mainProgram = "cargo-readme";
     homepage = "https://github.com/livioribeiro/cargo-readme";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ baloo matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-release/default.nix b/pkgs/development/tools/rust/cargo-release/default.nix
index 8e9c84797d947..31e03dfeaa4ef 100644
--- a/pkgs/development/tools/rust/cargo-release/default.nix
+++ b/pkgs/development/tools/rust/cargo-release/default.nix
@@ -49,6 +49,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = ''Cargo subcommand "release": everything about releasing a rust crate'';
+    mainProgram = "cargo-release";
     homepage = "https://github.com/crate-ci/cargo-release";
     changelog = "https://github.com/crate-ci/cargo-release/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-risczero/default.nix b/pkgs/development/tools/rust/cargo-risczero/default.nix
index 1bb68d7bbd982..51969c9fef967 100644
--- a/pkgs/development/tools/rust/cargo-risczero/default.nix
+++ b/pkgs/development/tools/rust/cargo-risczero/default.nix
@@ -33,6 +33,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo extension to help create, manage, and test RISC Zero projects.";
+    mainProgram = "cargo-risczero";
     homepage = "https://risczero.com";
     license = with licenses; [ asl20 ];
     maintainers = with maintainers; [ cameronfyfe ];
diff --git a/pkgs/development/tools/rust/cargo-rr/default.nix b/pkgs/development/tools/rust/cargo-rr/default.nix
index 84ec62adf87c7..6c3780719f895 100644
--- a/pkgs/development/tools/rust/cargo-rr/default.nix
+++ b/pkgs/development/tools/rust/cargo-rr/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Cargo subcommand \"rr\": a light wrapper around rr, the time-travelling debugger";
+    mainProgram = "cargo-rr";
     homepage = "https://github.com/danielzfranklin/cargo-rr";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ otavio matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-run-bin/default.nix b/pkgs/development/tools/rust/cargo-run-bin/default.nix
index d19cf8e9333eb..a12ebb8caf9b7 100644
--- a/pkgs/development/tools/rust/cargo-run-bin/default.nix
+++ b/pkgs/development/tools/rust/cargo-run-bin/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Build, cache, and run binaries scoped in Cargo.toml rather than installing globally. This acts similarly to npm run and gomodrun, and allows your teams to always be running the same tooling versions";
+    mainProgram = "cargo-bin";
     homepage = "https://github.com/dustinblackman/cargo-run-bin";
     changelog = "https://github.com/dustinblackman/cargo-run-bin/blob/v${version}/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/rust/cargo-semver-checks/default.nix b/pkgs/development/tools/rust/cargo-semver-checks/default.nix
index 77e46ececc5a8..f1733aeca7e7d 100644
--- a/pkgs/development/tools/rust/cargo-semver-checks/default.nix
+++ b/pkgs/development/tools/rust/cargo-semver-checks/default.nix
@@ -52,6 +52,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to scan your Rust crate for semver violations";
+    mainProgram = "cargo-semver-checks";
     homepage = "https://github.com/obi1kenobi/cargo-semver-checks";
     changelog = "https://github.com/obi1kenobi/cargo-semver-checks/releases/tag/v${version}";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/development/tools/rust/cargo-shuttle/default.nix b/pkgs/development/tools/rust/cargo-shuttle/default.nix
index befba6ffac563..fcc7ff4756f95 100644
--- a/pkgs/development/tools/rust/cargo-shuttle/default.nix
+++ b/pkgs/development/tools/rust/cargo-shuttle/default.nix
@@ -49,6 +49,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cargo command for the shuttle platform";
+    mainProgram = "cargo-shuttle";
     homepage = "https://shuttle.rs";
     changelog = "https://github.com/shuttle-hq/shuttle/releases/tag/${src.rev}";
     license = licenses.asl20;
diff --git a/pkgs/development/tools/rust/cargo-sort/default.nix b/pkgs/development/tools/rust/cargo-sort/default.nix
index bb0d96bdd6388..ab85a75d916ec 100644
--- a/pkgs/development/tools/rust/cargo-sort/default.nix
+++ b/pkgs/development/tools/rust/cargo-sort/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to check that your Cargo.toml dependencies are sorted alphabetically";
+    mainProgram = "cargo-sort";
     homepage = "https://github.com/devinr528/cargo-sort";
     changelog = "https://github.com/devinr528/cargo-sort/blob/v${version}/changelog.md";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/development/tools/rust/cargo-spellcheck/default.nix b/pkgs/development/tools/rust/cargo-spellcheck/default.nix
index 374517aeef2da..23de1bc2a0708 100644
--- a/pkgs/development/tools/rust/cargo-spellcheck/default.nix
+++ b/pkgs/development/tools/rust/cargo-spellcheck/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Checks rust documentation for spelling and grammar mistakes";
+    mainProgram = "cargo-spellcheck";
     homepage = "https://github.com/drahnr/cargo-spellcheck";
     changelog = "https://github.com/drahnr/cargo-spellcheck/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-supply-chain/default.nix b/pkgs/development/tools/rust/cargo-supply-chain/default.nix
index bedbc17a22a6e..395a48498237d 100644
--- a/pkgs/development/tools/rust/cargo-supply-chain/default.nix
+++ b/pkgs/development/tools/rust/cargo-supply-chain/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Gather author, contributor and publisher data on crates in your dependency graph";
+    mainProgram = "cargo-supply-chain";
     homepage = "https://github.com/rust-secure-code/cargo-supply-chain";
     changelog = "https://github.com/rust-secure-code/cargo-supply-chain/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 mit zlib ]; # any of three
diff --git a/pkgs/development/tools/rust/cargo-sweep/default.nix b/pkgs/development/tools/rust/cargo-sweep/default.nix
index 1c5564c723326..0fc6a01be0996 100644
--- a/pkgs/development/tools/rust/cargo-sweep/default.nix
+++ b/pkgs/development/tools/rust/cargo-sweep/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Cargo subcommand for cleaning up unused build files generated by Cargo";
+    mainProgram = "cargo-sweep";
     homepage = "https://github.com/holmgr/cargo-sweep";
     license = licenses.mit;
     maintainers = with maintainers; [ xrelkd matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-sync-readme/default.nix b/pkgs/development/tools/rust/cargo-sync-readme/default.nix
index a761e42c1540d..c4205fb1a660f 100644
--- a/pkgs/development/tools/rust/cargo-sync-readme/default.nix
+++ b/pkgs/development/tools/rust/cargo-sync-readme/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A cargo plugin that generates a Markdown section in your README based on your Rust documentation";
+    mainProgram = "cargo-sync-readme";
     homepage = "https://github.com/phaazon/cargo-sync-readme";
     changelog = "https://github.com/phaazon/cargo-sync-readme/blob/${version}/CHANGELOG.md";
     license = licenses.bsd3;
diff --git a/pkgs/development/tools/rust/cargo-tally/default.nix b/pkgs/development/tools/rust/cargo-tally/default.nix
index 1dfcb5af500dc..8e1bd746857ae 100644
--- a/pkgs/development/tools/rust/cargo-tally/default.nix
+++ b/pkgs/development/tools/rust/cargo-tally/default.nix
@@ -19,6 +19,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Graph the number of crates that depend on your crate over time";
+    mainProgram = "cargo-tally";
     homepage = "https://github.com/dtolnay/cargo-tally";
     changelog = "https://github.com/dtolnay/cargo-tally/releases/tag/${version}";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-tauri/default.nix b/pkgs/development/tools/rust/cargo-tauri/default.nix
index 870285879d765..02a06edf5d238 100644
--- a/pkgs/development/tools/rust/cargo-tauri/default.nix
+++ b/pkgs/development/tools/rust/cargo-tauri/default.nix
@@ -38,6 +38,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Build smaller, faster, and more secure desktop applications with a web frontend";
+    mainProgram = "cargo-tauri";
     homepage = "https://tauri.app/";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ dit7ya happysalada ];
diff --git a/pkgs/development/tools/rust/cargo-temp/default.nix b/pkgs/development/tools/rust/cargo-temp/default.nix
index 9df84462efa79..d5a0e2bba146b 100644
--- a/pkgs/development/tools/rust/cargo-temp/default.nix
+++ b/pkgs/development/tools/rust/cargo-temp/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A CLI tool that allow you to create a temporary new Rust project using cargo with already installed dependencies";
+    mainProgram = "cargo-temp";
     homepage = "https://github.com/yozhgoor/cargo-temp";
     changelog = "https://github.com/yozhgoor/cargo-temp/releases/tag/${src.rev}";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/development/tools/rust/cargo-toml-lint/default.nix b/pkgs/development/tools/rust/cargo-toml-lint/default.nix
index 187dc636afbc4..53595043342bc 100644
--- a/pkgs/development/tools/rust/cargo-toml-lint/default.nix
+++ b/pkgs/development/tools/rust/cargo-toml-lint/default.nix
@@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple linter for Cargo.toml manifests";
+    mainProgram = "cargo-toml-lint";
     homepage = "https://github.com/fuellabs/cargo-toml-lint";
     changelog = "https://github.com/fuellabs/cargo-toml-lint/releases/tag/v${version}";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/cargo-ui/default.nix b/pkgs/development/tools/rust/cargo-ui/default.nix
index 870b411afc9e1..e58c34a03f4f7 100644
--- a/pkgs/development/tools/rust/cargo-ui/default.nix
+++ b/pkgs/development/tools/rust/cargo-ui/default.nix
@@ -54,6 +54,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A GUI for Cargo";
+    mainProgram = "cargo-ui";
     homepage = "https://github.com/slint-ui/cargo-ui";
     changelog = "https://github.com/slint-ui/cargo-ui/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit asl20 gpl3Only ];
diff --git a/pkgs/development/tools/rust/cargo-valgrind/default.nix b/pkgs/development/tools/rust/cargo-valgrind/default.nix
index aa6b38bf398b4..e084c528c9c23 100644
--- a/pkgs/development/tools/rust/cargo-valgrind/default.nix
+++ b/pkgs/development/tools/rust/cargo-valgrind/default.nix
@@ -36,6 +36,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = ''Cargo subcommand "valgrind": runs valgrind and collects its output in a helpful manner'';
+    mainProgram = "cargo-valgrind";
     homepage = "https://github.com/jfrimmel/cargo-valgrind";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ otavio matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-vet/default.nix b/pkgs/development/tools/rust/cargo-vet/default.nix
index 817307c55a598..a27e2f375ebd9 100644
--- a/pkgs/development/tools/rust/cargo-vet/default.nix
+++ b/pkgs/development/tools/rust/cargo-vet/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to help projects ensure that third-party Rust dependencies have been audited by a trusted source";
+    mainProgram = "cargo-vet";
     homepage = "https://mozilla.github.io/cargo-vet";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ figsoda jk ];
diff --git a/pkgs/development/tools/rust/cargo-wasi/default.nix b/pkgs/development/tools/rust/cargo-wasi/default.nix
index 7fcdf761ad2fd..bead01fed4ed4 100644
--- a/pkgs/development/tools/rust/cargo-wasi/default.nix
+++ b/pkgs/development/tools/rust/cargo-wasi/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A lightweight Cargo subcommand to build code for the wasm32-wasi target";
+    mainProgram = "cargo-wasi";
     homepage = "https://bytecodealliance.github.io/cargo-wasi";
     license = licenses.asl20;
     maintainers = with maintainers; [ lucperkins ];
diff --git a/pkgs/development/tools/rust/cargo-watch/default.nix b/pkgs/development/tools/rust/cargo-watch/default.nix
index fe748a7dbeb5e..ff9d72db58d91 100644
--- a/pkgs/development/tools/rust/cargo-watch/default.nix
+++ b/pkgs/development/tools/rust/cargo-watch/default.nix
@@ -31,6 +31,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Cargo subcommand for watching over Cargo project's source";
+    mainProgram = "cargo-watch";
     homepage = "https://github.com/watchexec/cargo-watch";
     license = licenses.cc0;
     maintainers = with maintainers; [ xrelkd ivan matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-web/default.nix b/pkgs/development/tools/rust/cargo-web/default.nix
index 2c35e951cda13..462e98d6eaa60 100644
--- a/pkgs/development/tools/rust/cargo-web/default.nix
+++ b/pkgs/development/tools/rust/cargo-web/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Cargo subcommand for the client-side Web";
+    mainProgram = "cargo-web";
     homepage = "https://github.com/koute/cargo-web";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ kevincox ];
diff --git a/pkgs/development/tools/rust/cargo-whatfeatures/default.nix b/pkgs/development/tools/rust/cargo-whatfeatures/default.nix
index 32189e0e03cb4..fdae63bd50b4f 100644
--- a/pkgs/development/tools/rust/cargo-whatfeatures/default.nix
+++ b/pkgs/development/tools/rust/cargo-whatfeatures/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A simple cargo plugin to get a list of features for a specific crate";
+    mainProgram = "cargo-whatfeatures";
     homepage = "https://github.com/museun/cargo-whatfeatures";
     license = with licenses; [ mit asl20 ];
     maintainers = with maintainers; [ ivan-babrou matthiasbeyer ];
diff --git a/pkgs/development/tools/rust/cargo-wipe/default.nix b/pkgs/development/tools/rust/cargo-wipe/default.nix
index c14f842a7398b..86a2dc58050b0 100644
--- a/pkgs/development/tools/rust/cargo-wipe/default.nix
+++ b/pkgs/development/tools/rust/cargo-wipe/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = ''Cargo subcommand "wipe": recursively finds and optionally wipes all "target" or "node_modules" folders'';
+    mainProgram = "cargo-wipe";
     homepage = "https://github.com/mihai-dinculescu/cargo-wipe";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ otavio ];
diff --git a/pkgs/development/tools/rust/cargo-zigbuild/default.nix b/pkgs/development/tools/rust/cargo-zigbuild/default.nix
index adc845c67ea70..ab0c149a09d58 100644
--- a/pkgs/development/tools/rust/cargo-zigbuild/default.nix
+++ b/pkgs/development/tools/rust/cargo-zigbuild/default.nix
@@ -22,6 +22,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to compile Cargo projects with zig as the linker";
+    mainProgram = "cargo-zigbuild";
     homepage = "https://github.com/messense/cargo-zigbuild";
     changelog = "https://github.com/messense/cargo-zigbuild/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/rust/cargo2junit/default.nix b/pkgs/development/tools/rust/cargo2junit/default.nix
index dd65d2422a3c1..6e10cc1fcb35a 100644
--- a/pkgs/development/tools/rust/cargo2junit/default.nix
+++ b/pkgs/development/tools/rust/cargo2junit/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Converts cargo's json output (from stdin) to JUnit XML (to stdout).";
+    mainProgram = "cargo2junit";
     homepage = "https://github.com/johnterickson/cargo2junit";
     license = licenses.mit;
     maintainers = with maintainers; [ alekseysidorov ];
diff --git a/pkgs/development/tools/rust/cauwugo/default.nix b/pkgs/development/tools/rust/cauwugo/default.nix
index 119e0f59841db..a4a199a2c70c3 100644
--- a/pkgs/development/tools/rust/cauwugo/default.nix
+++ b/pkgs/development/tools/rust/cauwugo/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "An alternative cargo frontend that implements dynamic shell completion for usual cargo commands";
+    mainProgram = "cauwugo";
     homepage = "https://github.com/pacak/bpaf/tree/master/bpaf_cauwugo";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/cbindgen/default.nix b/pkgs/development/tools/rust/cbindgen/default.nix
index 2d351adf5ad16..ed4841505bcea 100644
--- a/pkgs/development/tools/rust/cbindgen/default.nix
+++ b/pkgs/development/tools/rust/cbindgen/default.nix
@@ -44,6 +44,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     changelog = "https://github.com/mozilla/cbindgen/blob/v${version}/CHANGES";
     description = "A project for generating C bindings from Rust code";
+    mainProgram = "cbindgen";
     homepage = "https://github.com/mozilla/cbindgen";
     license = licenses.mpl20;
     maintainers = with maintainers; [ hexa ];
diff --git a/pkgs/development/tools/rust/crate2nix/default.nix b/pkgs/development/tools/rust/crate2nix/default.nix
index 62084be4b5a87..a19c47271c57f 100644
--- a/pkgs/development/tools/rust/crate2nix/default.nix
+++ b/pkgs/development/tools/rust/crate2nix/default.nix
@@ -43,6 +43,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Nix build file generator for Rust crates.";
+    mainProgram = "crate2nix";
     longDescription = ''
       Crate2nix generates Nix files from Cargo.toml/lock files
       so that you can build every crate individually in a Nix sandbox.
diff --git a/pkgs/development/tools/rust/critcmp/default.nix b/pkgs/development/tools/rust/critcmp/default.nix
index dd735f1adc496..3035e6b97937a 100644
--- a/pkgs/development/tools/rust/critcmp/default.nix
+++ b/pkgs/development/tools/rust/critcmp/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command line tool for comparing benchmarks run by Criterion";
+    mainProgram = "critcmp";
     homepage = "https://github.com/BurntSushi/critcmp";
     license = with licenses; [ mit unlicense ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/genemichaels/default.nix b/pkgs/development/tools/rust/genemichaels/default.nix
index 673519aeabc48..aec8003bbd52b 100644
--- a/pkgs/development/tools/rust/genemichaels/default.nix
+++ b/pkgs/development/tools/rust/genemichaels/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
   };
   meta = {
     description = "Even formats macros";
+    mainProgram = "genemichaels";
     homepage = "https://github.com/andrewbaxter/genemichaels";
     license = lib.licenses.isc;
     maintainers = [ lib.maintainers.anselmschueler ];
diff --git a/pkgs/development/tools/rust/gitlab-clippy/default.nix b/pkgs/development/tools/rust/gitlab-clippy/default.nix
index 2269f812f424b..62b3046f05d87 100644
--- a/pkgs/development/tools/rust/gitlab-clippy/default.nix
+++ b/pkgs/development/tools/rust/gitlab-clippy/default.nix
@@ -25,6 +25,7 @@ rustPlatform.buildRustPackage rec {
   meta = {
     homepage = "https://gitlab.com/dlalic/gitlab-clippy";
     description = "Convert clippy warnings into GitLab Code Quality report";
+    mainProgram = "gitlab-clippy";
     license = lib.licenses.mit;
     maintainers = with lib.maintainers; [ wucke13 ];
   };
diff --git a/pkgs/development/tools/rust/humility/default.nix b/pkgs/development/tools/rust/humility/default.nix
index 399d9dcf41b3d..a8c157f9ac4db 100644
--- a/pkgs/development/tools/rust/humility/default.nix
+++ b/pkgs/development/tools/rust/humility/default.nix
@@ -45,6 +45,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Debugger for Hubris";
+    mainProgram = "humility";
     homepage = "https://github.com/oxidecomputer/humility";
     license = with licenses; [ mpl20 ];
     maintainers = with maintainers; [ therishidesai ];
diff --git a/pkgs/development/tools/rust/leptosfmt/default.nix b/pkgs/development/tools/rust/leptosfmt/default.nix
index 2730453d2ae2e..7c174c4249eff 100644
--- a/pkgs/development/tools/rust/leptosfmt/default.nix
+++ b/pkgs/development/tools/rust/leptosfmt/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A formatter for the leptos view! macro";
+    mainProgram = "leptosfmt";
     homepage = "https://github.com/bram209/leptosfmt";
     changelog = "https://github.com/bram209/leptosfmt/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 mit ];
diff --git a/pkgs/development/tools/rust/maturin/default.nix b/pkgs/development/tools/rust/maturin/default.nix
index fa17f4f036241..313ce2399236e 100644
--- a/pkgs/development/tools/rust/maturin/default.nix
+++ b/pkgs/development/tools/rust/maturin/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Build and publish Rust crates Python packages";
+    mainProgram = "maturin";
     longDescription = ''
       Build and publish Rust crates with PyO3, rust-cpython, and
       cffi bindings as well as Rust binaries as Python packages.
diff --git a/pkgs/development/tools/rust/ograc/default.nix b/pkgs/development/tools/rust/ograc/default.nix
index 4361a225498dd..83938a505316a 100644
--- a/pkgs/development/tools/rust/ograc/default.nix
+++ b/pkgs/development/tools/rust/ograc/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage {
 
   meta = with lib; {
     description = "like cargo, but backwards";
+    mainProgram = "ograc";
     homepage = "https://crates.io/crates/ograc";
     license = licenses.agpl3Plus;
     maintainers = with maintainers; [ sciencentistguy ];
diff --git a/pkgs/development/tools/rust/panamax/default.nix b/pkgs/development/tools/rust/panamax/default.nix
index a86867eded080..4eb4963760397 100644
--- a/pkgs/development/tools/rust/panamax/default.nix
+++ b/pkgs/development/tools/rust/panamax/default.nix
@@ -32,6 +32,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Mirror rustup and crates.io repositories for offline Rust and cargo usage";
+    mainProgram = "panamax";
     homepage = "https://github.com/panamax-rs/panamax";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/probe-run/default.nix b/pkgs/development/tools/rust/probe-run/default.nix
index 30ca65f776b07..2081d41eb0158 100644
--- a/pkgs/development/tools/rust/probe-run/default.nix
+++ b/pkgs/development/tools/rust/probe-run/default.nix
@@ -37,6 +37,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Run embedded programs just like native ones";
+    mainProgram = "probe-run";
     homepage = "https://github.com/knurling-rs/probe-run";
     changelog = "https://github.com/knurling-rs/probe-run/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/rust/ra-multiplex/default.nix b/pkgs/development/tools/rust/ra-multiplex/default.nix
index ce579c76eeb04..4dd7d2cd063d6 100644
--- a/pkgs/development/tools/rust/ra-multiplex/default.nix
+++ b/pkgs/development/tools/rust/ra-multiplex/default.nix
@@ -27,6 +27,7 @@ rustPlatform.buildRustPackage {
 
   meta = with lib; {
     description = "A multiplexer for rust-analyzer";
+    mainProgram = "ra-multiplex";
     homepage = "https://github.com/pr2502/ra-multiplex";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ norfair ];
diff --git a/pkgs/development/tools/rust/rhack/default.nix b/pkgs/development/tools/rust/rhack/default.nix
index d141c43dd9149..967a8a9216f7d 100644
--- a/pkgs/development/tools/rust/rhack/default.nix
+++ b/pkgs/development/tools/rust/rhack/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Temporary edit external crates that your project depends on";
+    mainProgram = "rhack";
     homepage = "https://github.com/nakabonne/rhack";
     license = licenses.bsd3;
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/roogle/default.nix b/pkgs/development/tools/rust/roogle/default.nix
index 7def38d199131..f95cad8588d41 100644
--- a/pkgs/development/tools/rust/roogle/default.nix
+++ b/pkgs/development/tools/rust/roogle/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A Rust API search engine which allows you to search functions by names and type signatures";
+    mainProgram = "roogle";
     homepage = "https://github.com/hkmatsumoto/roogle";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/rust-audit-info/default.nix b/pkgs/development/tools/rust/rust-audit-info/default.nix
index fbfae0042d590..afd53df7e147c 100644
--- a/pkgs/development/tools/rust/rust-audit-info/default.nix
+++ b/pkgs/development/tools/rust/rust-audit-info/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command-line tool to extract the dependency trees embedded in binaries by cargo-auditable";
+    mainProgram = "rust-audit-info";
     homepage = "https://github.com/rust-secure-code/cargo-auditable/tree/master/rust-audit-info";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/rust-script/default.nix b/pkgs/development/tools/rust/rust-script/default.nix
index 417b173935f50..95f60f19011a1 100644
--- a/pkgs/development/tools/rust/rust-script/default.nix
+++ b/pkgs/development/tools/rust/rust-script/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Run Rust files and expressions as scripts without any setup or compilation step";
+    mainProgram = "rust-script";
     homepage = "https://rust-script.org";
     changelog = "https://github.com/fornwall/rust-script/releases/tag/${version}";
     license = with licenses; [ mit /* or */ asl20 ];
diff --git a/pkgs/development/tools/rust/rustup-toolchain-install-master/default.nix b/pkgs/development/tools/rust/rustup-toolchain-install-master/default.nix
index 8289e56e81d49..d71b1e655d782 100644
--- a/pkgs/development/tools/rust/rustup-toolchain-install-master/default.nix
+++ b/pkgs/development/tools/rust/rustup-toolchain-install-master/default.nix
@@ -58,6 +58,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Install a rustc master toolchain usable from rustup";
+    mainProgram = "rustup-toolchain-install-master";
     homepage = "https://github.com/kennytm/rustup-toolchain-install-master";
     license = licenses.mit;
     maintainers = with maintainers; [ davidtwco ];
diff --git a/pkgs/development/tools/rust/rusty-man/default.nix b/pkgs/development/tools/rust/rusty-man/default.nix
index 879cec5ebe6d9..34524106c988e 100644
--- a/pkgs/development/tools/rust/rusty-man/default.nix
+++ b/pkgs/development/tools/rust/rusty-man/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A command-line viewer for documentation generated by rustdoc";
+    mainProgram = "rusty-man";
     homepage = "https://git.sr.ht/~ireas/rusty-man";
     changelog = "https://git.sr.ht/~ireas/rusty-man/tree/v${version}/item/CHANGELOG.md";
     license = licenses.mit;
diff --git a/pkgs/development/tools/rust/rustycli/default.nix b/pkgs/development/tools/rust/rustycli/default.nix
index 451ae2f956116..09bc2e44f7484 100644
--- a/pkgs/development/tools/rust/rustycli/default.nix
+++ b/pkgs/development/tools/rust/rustycli/default.nix
@@ -25,6 +25,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Access the rust playground right in terminal";
+    mainProgram = "rustycli";
     homepage = "https://github.com/pwnwriter/rustycli";
     changelog = "https://github.com/pwnwriter/rustycli/releases/tag/v${version}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/rust/specr-transpile/default.nix b/pkgs/development/tools/rust/specr-transpile/default.nix
index 10a1acfac7576..bb15e8c3fa3f5 100644
--- a/pkgs/development/tools/rust/specr-transpile/default.nix
+++ b/pkgs/development/tools/rust/specr-transpile/default.nix
@@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Converts Specr lang code to Rust";
+    mainProgram = "specr-transpile";
     homepage = "https://github.com/RalfJung/minirust-tooling";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/rust/svd2rust/default.nix b/pkgs/development/tools/rust/svd2rust/default.nix
index ad7c55489482c..095018c4e8629 100644
--- a/pkgs/development/tools/rust/svd2rust/default.nix
+++ b/pkgs/development/tools/rust/svd2rust/default.nix
@@ -18,6 +18,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Generate Rust register maps (`struct`s) from SVD files";
+    mainProgram = "svd2rust";
     homepage = "https://github.com/rust-embedded/svd2rust";
     changelog = "https://github.com/rust-embedded/svd2rust/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit asl20 ];
diff --git a/pkgs/development/tools/rust/typeshare/default.nix b/pkgs/development/tools/rust/typeshare/default.nix
index 9d9c554daaeea..85880dca65710 100644
--- a/pkgs/development/tools/rust/typeshare/default.nix
+++ b/pkgs/development/tools/rust/typeshare/default.nix
@@ -30,6 +30,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Command Line Tool for generating language files with typeshare";
+    mainProgram = "typeshare";
     homepage = "https://github.com/1password/typeshare";
     changelog = "https://github.com/1password/typeshare/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/sca2d/default.nix b/pkgs/development/tools/sca2d/default.nix
index eb745e5bd2c62..c23714bc872f6 100644
--- a/pkgs/development/tools/sca2d/default.nix
+++ b/pkgs/development/tools/sca2d/default.nix
@@ -42,6 +42,7 @@ python.pkgs.buildPythonApplication rec {
 
   meta = with lib; {
     description = "An experimental static code analyser for OpenSCAD";
+    mainProgram = "sca2d";
     homepage = "https://gitlab.com/bath_open_instrumentation_group/sca2d";
     changelog = "https://gitlab.com/bath_open_instrumentation_group/sca2d/-/blob/${src.rev}/CHANGELOG.md";
     license = licenses.gpl3Only;
diff --git a/pkgs/development/tools/scalafix/default.nix b/pkgs/development/tools/scalafix/default.nix
index 3d57bdbd92c58..36e79c74365f7 100644
--- a/pkgs/development/tools/scalafix/default.nix
+++ b/pkgs/development/tools/scalafix/default.nix
@@ -39,6 +39,7 @@ stdenv.mkDerivation {
 
   meta = with lib; {
     description = "Refactoring and linting tool for Scala";
+    mainProgram = "scalafix";
     homepage = "https://scalacenter.github.io/scalafix/";
     license = licenses.bsd3;
     maintainers = [ maintainers.tomahna ];
diff --git a/pkgs/development/tools/scenebuilder/default.nix b/pkgs/development/tools/scenebuilder/default.nix
index 44e81b20bc2bc..e10ebf1e5519d 100644
--- a/pkgs/development/tools/scenebuilder/default.nix
+++ b/pkgs/development/tools/scenebuilder/default.nix
@@ -66,6 +66,7 @@ maven'.buildMavenPackage rec {
   meta = with lib; {
     broken = stdenv.isDarwin;
     description = "A visual, drag'n'drop, layout tool for designing JavaFX application user interfaces.";
+    mainProgram = "scenebuilder";
     homepage = "https://gluonhq.com/products/scene-builder/";
     sourceProvenance = with sourceTypes; [
       fromSource
diff --git a/pkgs/development/tools/scenic-view/default.nix b/pkgs/development/tools/scenic-view/default.nix
index 3d0c69d66cf71..ff09f0cb4707e 100644
--- a/pkgs/development/tools/scenic-view/default.nix
+++ b/pkgs/development/tools/scenic-view/default.nix
@@ -105,6 +105,7 @@ in stdenv.mkDerivation rec {
   meta = with lib; {
     broken = stdenv.isDarwin;
     description = "JavaFx application to visualize and modify the scenegraph of running JavaFx applications.";
+    mainProgram = "scenic-view";
     longDescription = ''
       A JavaFX application designed to make it simple to understand the current state of your application scenegraph
       and to also easily manipulate properties of the scenegraph without having to keep editing your code.
diff --git a/pkgs/development/tools/schemacrawler/default.nix b/pkgs/development/tools/schemacrawler/default.nix
index 29cb24f1faf20..0d4ffad569770 100644
--- a/pkgs/development/tools/schemacrawler/default.nix
+++ b/pkgs/development/tools/schemacrawler/default.nix
@@ -33,6 +33,7 @@ stdenv.mkDerivation (finalAttrs: {
 
   meta = with lib; {
     description = "Database schema discovery and comprehension tool";
+    mainProgram = "schemacrawler";
     homepage = "https://www.schemacrawler.com/";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = with licenses; [ epl10 gpl3Only lgpl3Only ];
diff --git a/pkgs/development/tools/sd-local/default.nix b/pkgs/development/tools/sd-local/default.nix
index d31bd992f1478..29c1c2de4575e 100644
--- a/pkgs/development/tools/sd-local/default.nix
+++ b/pkgs/development/tools/sd-local/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "screwdriver.cd local mode";
+    mainProgram = "sd-local";
     homepage = "https://github.com/screwdriver-cd/sd-local";
     license = licenses.bsd3;
     maintainers = with maintainers; [ midchildan ];
diff --git a/pkgs/development/tools/selene/default.nix b/pkgs/development/tools/selene/default.nix
index dbaeb264b3585..b464bee86e067 100644
--- a/pkgs/development/tools/selene/default.nix
+++ b/pkgs/development/tools/selene/default.nix
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A blazing-fast modern Lua linter written in Rust";
+    mainProgram = "selene";
     homepage = "https://github.com/kampfkarren/selene";
     changelog = "https://github.com/kampfkarren/selene/blob/${version}/CHANGELOG.md";
     license = licenses.mpl20;
diff --git a/pkgs/development/tools/semantic-release/default.nix b/pkgs/development/tools/semantic-release/default.nix
index bb99378b83db3..51d692ecb693b 100644
--- a/pkgs/development/tools/semantic-release/default.nix
+++ b/pkgs/development/tools/semantic-release/default.nix
@@ -34,6 +34,7 @@ buildNpmPackage rec {
 
   meta = {
     description = "Fully automated version management and package publishing";
+    mainProgram = "semantic-release";
     homepage = "https://semantic-release.gitbook.io/semantic-release/";
     license = lib.licenses.mit;
     maintainers = [ lib.maintainers.sestrella ];
diff --git a/pkgs/development/tools/sentry-cli/default.nix b/pkgs/development/tools/sentry-cli/default.nix
index c4c5437901d6d..06b77135d4840 100644
--- a/pkgs/development/tools/sentry-cli/default.nix
+++ b/pkgs/development/tools/sentry-cli/default.nix
@@ -40,6 +40,7 @@ rustPlatform.buildRustPackage rec {
     homepage = "https://docs.sentry.io/cli/";
     license = licenses.bsd3;
     description = "A command line utility to work with Sentry";
+    mainProgram = "sentry-cli";
     changelog = "https://github.com/getsentry/sentry-cli/raw/${version}/CHANGELOG.md";
     maintainers = with maintainers; [ rizary loewenheim ];
   };
diff --git a/pkgs/development/tools/shellharden/default.nix b/pkgs/development/tools/shellharden/default.nix
index 5006c5fe9cba6..dbf903e923bf7 100644
--- a/pkgs/development/tools/shellharden/default.nix
+++ b/pkgs/development/tools/shellharden/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "The corrective bash syntax highlighter";
+    mainProgram = "shellharden";
     longDescription = ''
       Shellharden is a syntax highlighter and a tool to semi-automate the
       rewriting of scripts to ShellCheck conformance, mainly focused on quoting.
diff --git a/pkgs/development/tools/sigrok-cli/default.nix b/pkgs/development/tools/sigrok-cli/default.nix
index 0e8d697ef36dd..f239d03cb6a42 100644
--- a/pkgs/development/tools/sigrok-cli/default.nix
+++ b/pkgs/development/tools/sigrok-cli/default.nix
@@ -15,6 +15,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Command-line frontend for the sigrok signal analysis software suite";
+    mainProgram = "sigrok-cli";
     homepage = "https://sigrok.org/";
     license = licenses.gpl3Plus;
     platforms = platforms.linux ++ platforms.darwin;
diff --git a/pkgs/development/tools/simavr/default.nix b/pkgs/development/tools/simavr/default.nix
index db3f9e6664e1a..3ce0a3cddf90b 100644
--- a/pkgs/development/tools/simavr/default.nix
+++ b/pkgs/development/tools/simavr/default.nix
@@ -45,6 +45,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A lean and mean Atmel AVR simulator";
+    mainProgram = "simavr";
     homepage    = "https://github.com/buserror/simavr";
     license     = licenses.gpl3;
     platforms   = platforms.unix;
diff --git a/pkgs/development/tools/skaffold/default.nix b/pkgs/development/tools/skaffold/default.nix
index 3d98bf472770e..bac6c119e350c 100644
--- a/pkgs/development/tools/skaffold/default.nix
+++ b/pkgs/development/tools/skaffold/default.nix
@@ -41,6 +41,7 @@ buildGoModule rec {
     homepage = "https://skaffold.dev/";
     changelog = "https://github.com/GoogleContainerTools/skaffold/releases/tag/v${version}";
     description = "Easy and Repeatable Kubernetes Development";
+    mainProgram = "skaffold";
     longDescription = ''
       Skaffold is a command line tool that facilitates continuous development for Kubernetes applications.
       You can iterate on your application source code locally then deploy to local or remote Kubernetes clusters.
diff --git a/pkgs/development/tools/skopeo/default.nix b/pkgs/development/tools/skopeo/default.nix
index 85efeb925b50d..b8f4ab5dc68db 100644
--- a/pkgs/development/tools/skopeo/default.nix
+++ b/pkgs/development/tools/skopeo/default.nix
@@ -71,6 +71,7 @@ buildGoModule rec {
   meta = with lib; {
     changelog = "https://github.com/containers/skopeo/releases/tag/${src.rev}";
     description = "A command line utility for various operations on container images and image repositories";
+    mainProgram = "skopeo";
     homepage = "https://github.com/containers/skopeo";
     maintainers = with maintainers; [ lewo developer-guy ] ++ teams.podman.members;
     license = licenses.asl20;
diff --git a/pkgs/development/tools/slimerjs/default.nix b/pkgs/development/tools/slimerjs/default.nix
index f800dedf615fe..dd3c5fd6d09b5 100644
--- a/pkgs/development/tools/slimerjs/default.nix
+++ b/pkgs/development/tools/slimerjs/default.nix
@@ -44,6 +44,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Gecko-based programmatically-driven browser";
+    mainProgram = "slimerjs";
     license = licenses.mpl20;
     maintainers = with maintainers; [ raskin ];
     platforms = platforms.linux;
diff --git a/pkgs/development/tools/smlfmt/default.nix b/pkgs/development/tools/smlfmt/default.nix
index 2094cde2ffcb9..b0cf14e8a5dd6 100644
--- a/pkgs/development/tools/smlfmt/default.nix
+++ b/pkgs/development/tools/smlfmt/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "A custom parser/auto-formatter for Standard ML";
+    mainProgram = "smlfmt";
     longDescription = ''
       A custom parser and code formatter for Standard ML, with helpful error messages.
 
diff --git a/pkgs/development/tools/snazy/default.nix b/pkgs/development/tools/snazy/default.nix
index 7abe2fd98cfc3..2b3a719d33d21 100644
--- a/pkgs/development/tools/snazy/default.nix
+++ b/pkgs/development/tools/snazy/default.nix
@@ -36,6 +36,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A snazzy json log viewer";
+    mainProgram = "snazy";
     longDescription = ''
       Snazy is a simple tool to parse json logs and output them in a nice format
       with nice colors.
diff --git a/pkgs/development/tools/so/default.nix b/pkgs/development/tools/so/default.nix
index 6d3e3fab0b7c4..e057d5290561a 100644
--- a/pkgs/development/tools/so/default.nix
+++ b/pkgs/development/tools/so/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A TUI interface to the StackExchange network";
+    mainProgram = "so";
     homepage = "https://github.com/samtay/so";
     license = licenses.mit;
     maintainers = with maintainers; [ mredaelli ];
diff --git a/pkgs/development/tools/solarus-quest-editor/default.nix b/pkgs/development/tools/solarus-quest-editor/default.nix
index 3dc60021b757f..e0743d13c1fc3 100644
--- a/pkgs/development/tools/solarus-quest-editor/default.nix
+++ b/pkgs/development/tools/solarus-quest-editor/default.nix
@@ -28,6 +28,7 @@ mkDerivation rec {
 
   meta = with lib; {
     description = "The editor for the Zelda-like ARPG game engine, Solarus";
+    mainProgram = "solarus-quest-editor";
     longDescription = ''
       Solarus is a game engine for Zelda-like ARPG games written in lua.
       Many full-fledged games have been writen for the engine.
diff --git a/pkgs/development/tools/spr/default.nix b/pkgs/development/tools/spr/default.nix
index a9ed5c3c21284..f2689c4692b1c 100644
--- a/pkgs/development/tools/spr/default.nix
+++ b/pkgs/development/tools/spr/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Submit pull requests for individual, amendable, rebaseable commits to GitHub";
+    mainProgram = "spr";
     homepage = "https://github.com/getcord/spr";
     license = licenses.mit;
     maintainers = with maintainers; [ sven-of-cord ];
diff --git a/pkgs/development/tools/sq/default.nix b/pkgs/development/tools/sq/default.nix
index 16fd797cca826..97e31162b7730 100644
--- a/pkgs/development/tools/sq/default.nix
+++ b/pkgs/development/tools/sq/default.nix
@@ -42,6 +42,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Swiss army knife for data";
+    mainProgram = "sq";
     homepage = "https://sq.io/";
     license = licenses.mit;
     platforms = platforms.all;
diff --git a/pkgs/development/tools/sqsh/default.nix b/pkgs/development/tools/sqsh/default.nix
index ba4a681a594d5..ec071f739efad 100644
--- a/pkgs/development/tools/sqsh/default.nix
+++ b/pkgs/development/tools/sqsh/default.nix
@@ -37,6 +37,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Command line tool for querying Sybase/MSSQL databases";
+    mainProgram = "sqsh";
     longDescription = ''
       Sqsh (pronounced skwish) is short for SQshelL (pronounced s-q-shell),
       it is intended as a replacement for the venerable 'isql' program supplied
diff --git a/pkgs/development/tools/sslmate/default.nix b/pkgs/development/tools/sslmate/default.nix
index 836b0bc1b08e9..2dded22da82f8 100644
--- a/pkgs/development/tools/sslmate/default.nix
+++ b/pkgs/development/tools/sslmate/default.nix
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
     homepage = "https://sslmate.com";
     maintainers = [ maintainers.domenkozar ];
     description = "Easy to buy, deploy, and manage your SSL certs";
+    mainProgram = "sslmate";
     platforms = platforms.unix;
     license = licenses.mit; # X11
   };
diff --git a/pkgs/development/tools/statik/default.nix b/pkgs/development/tools/statik/default.nix
index e77cf8f3bb0b1..8b4386860e0aa 100644
--- a/pkgs/development/tools/statik/default.nix
+++ b/pkgs/development/tools/statik/default.nix
@@ -23,6 +23,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/rakyll/statik";
     description = "Embed files into a Go executable ";
+    mainProgram = "statik";
     license = licenses.asl20;
     maintainers = with maintainers; [ Madouura ];
   };
diff --git a/pkgs/development/tools/steamos-devkit/default.nix b/pkgs/development/tools/steamos-devkit/default.nix
index 43c4af73f2a7a..4b2cabac6396f 100644
--- a/pkgs/development/tools/steamos-devkit/default.nix
+++ b/pkgs/development/tools/steamos-devkit/default.nix
@@ -128,6 +128,7 @@ python3.pkgs.buildPythonPackage rec {
 
   meta = with lib; {
     description = "SteamOS Devkit Client";
+    mainProgram = "steamos-devkit";
     homepage = "https://gitlab.steamos.cloud/devkit/steamos-devkit";
     license = licenses.mit;
     maintainers = with maintainers; [ myaats ];
diff --git a/pkgs/development/tools/subxt/default.nix b/pkgs/development/tools/subxt/default.nix
index fd557c96b04f9..2090fe1aacac6 100644
--- a/pkgs/development/tools/subxt/default.nix
+++ b/pkgs/development/tools/subxt/default.nix
@@ -35,6 +35,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     homepage = "https://github.com/paritytech/subxt";
     description = "Submit transactions to a substrate node via RPC.";
+    mainProgram = "subxt";
     license = with licenses; [ gpl3Plus asl20 ];
     maintainers = [ maintainers.FlorianFranzen ];
   };
diff --git a/pkgs/development/tools/summon/default.nix b/pkgs/development/tools/summon/default.nix
index 598e8fab63929..014655616b7b2 100644
--- a/pkgs/development/tools/summon/default.nix
+++ b/pkgs/development/tools/summon/default.nix
@@ -22,6 +22,7 @@ buildGoModule rec {
   meta = with lib; {
     description =
       "CLI that provides on-demand secrets access for common DevOps tools";
+    mainProgram = "summon";
     homepage = "https://cyberark.github.io/summon";
     license = lib.licenses.mit;
     maintainers = with maintainers; [ quentini ];
diff --git a/pkgs/development/tools/swc/default.nix b/pkgs/development/tools/swc/default.nix
index afb4ad5d58990..7847c253e7e5d 100644
--- a/pkgs/development/tools/swc/default.nix
+++ b/pkgs/development/tools/swc/default.nix
@@ -24,6 +24,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Rust-based platform for the Web";
+    mainProgram = "swc";
     homepage = "https://github.com/swc-project/swc";
     license = licenses.asl20;
     maintainers = with maintainers; [ dit7ya kashw2 ];
diff --git a/pkgs/development/tools/swiftpm2nix/default.nix b/pkgs/development/tools/swiftpm2nix/default.nix
index 25d6b06ef98bb..d9f50cb801d56 100644
--- a/pkgs/development/tools/swiftpm2nix/default.nix
+++ b/pkgs/development/tools/swiftpm2nix/default.nix
@@ -19,6 +19,7 @@ stdenv.mkDerivation {
 
   meta = {
     description = "Generate a Nix expression to fetch swiftpm dependencies";
+    mainProgram = "swiftpm2nix";
     maintainers = with lib.maintainers; [ dtzWill trepetti dduan trundle stephank ];
     platforms = lib.platforms.all;
   };
diff --git a/pkgs/development/tools/systemfd/default.nix b/pkgs/development/tools/systemfd/default.nix
index a695cf83a2954..001015af2d8b2 100644
--- a/pkgs/development/tools/systemfd/default.nix
+++ b/pkgs/development/tools/systemfd/default.nix
@@ -23,6 +23,7 @@ rustPlatform.buildRustPackage {
 
   meta = {
     description = "A convenient helper for passing sockets into another process";
+    mainProgram = "systemfd";
     homepage = "https://github.com/mitsuhiko/systemfd";
     license = lib.licenses.asl20;
     maintainers = [ lib.maintainers.adisbladis ];
diff --git a/pkgs/development/tools/tapview/default.nix b/pkgs/development/tools/tapview/default.nix
index 19c1113c5cd40..fa8b0d1a27742 100644
--- a/pkgs/development/tools/tapview/default.nix
+++ b/pkgs/development/tools/tapview/default.nix
@@ -24,6 +24,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A minimalist pure consumer for TAP (Test Anything Protocol)";
+    mainProgram = "tapview";
     homepage = "https://gitlab.com/esr/tapview";
     license = licenses.bsd2;
     platforms = platforms.all;
diff --git a/pkgs/development/tools/tarmac/default.nix b/pkgs/development/tools/tarmac/default.nix
index b8383fc5031d2..34471106d73aa 100644
--- a/pkgs/development/tools/tarmac/default.nix
+++ b/pkgs/development/tools/tarmac/default.nix
@@ -39,6 +39,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Resource compiler and asset manager for Roblox";
+    mainProgram = "tarmac";
     longDescription = ''
       Tarmac is a resource compiler and asset manager for Roblox projects.
       It helps enable hermetic place builds when used with tools like Rojo.
diff --git a/pkgs/development/tools/teller/default.nix b/pkgs/development/tools/teller/default.nix
index a906e6c1f5e57..a918e6759bfe2 100644
--- a/pkgs/development/tools/teller/default.nix
+++ b/pkgs/development/tools/teller/default.nix
@@ -63,6 +63,7 @@ buildGoModule {
   meta = with lib; {
     homepage = "https://github.com/tellerops/teller/";
     description = "Cloud native secrets management for developers";
+    mainProgram = "teller";
     license = licenses.asl20;
     maintainers = with maintainers; [ wahtique ];
   };
diff --git a/pkgs/development/tools/textql/default.nix b/pkgs/development/tools/textql/default.nix
index 74953d0e3fabb..1523a30d18f85 100644
--- a/pkgs/development/tools/textql/default.nix
+++ b/pkgs/development/tools/textql/default.nix
@@ -32,6 +32,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Execute SQL against structured text like CSV or TSV";
+    mainProgram = "textql";
     homepage = "https://github.com/dinedal/textql";
     license = licenses.mit;
     maintainers = with maintainers; [ vrthra ];
diff --git a/pkgs/development/tools/tf2pulumi/default.nix b/pkgs/development/tools/tf2pulumi/default.nix
index c108515ee6ad9..bc5c92a98f22c 100644
--- a/pkgs/development/tools/tf2pulumi/default.nix
+++ b/pkgs/development/tools/tf2pulumi/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Convert Terraform projects to Pulumi TypeScript programs";
+    mainProgram = "tf2pulumi";
     homepage = "https://www.pulumi.com/tf2pulumi/";
     license = licenses.asl20;
     maintainers = with maintainers; [ mausch ];
diff --git a/pkgs/development/tools/the-way/default.nix b/pkgs/development/tools/the-way/default.nix
index 9418afb6cfa6d..6b43e603a6e78 100644
--- a/pkgs/development/tools/the-way/default.nix
+++ b/pkgs/development/tools/the-way/default.nix
@@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Terminal code snippets manager";
+    mainProgram = "the-way";
     homepage = "https://github.com/out-of-cheese-error/the-way";
     changelog = "https://github.com/out-of-cheese-error/the-way/blob/v${version}/CHANGELOG.md";
     license = with licenses; [ mit ];
diff --git a/pkgs/development/tools/thrust/default.nix b/pkgs/development/tools/thrust/default.nix
index 5e7b90641704a..889d3bc3af365 100644
--- a/pkgs/development/tools/thrust/default.nix
+++ b/pkgs/development/tools/thrust/default.nix
@@ -38,6 +38,7 @@ in stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Chromium-based cross-platform / cross-language application framework";
+    mainProgram = "thrust_shell";
     homepage = "https://github.com/breach/thrust";
     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
     license = licenses.mit;
diff --git a/pkgs/development/tools/time-ghc-modules/default.nix b/pkgs/development/tools/time-ghc-modules/default.nix
index 7b0026b0692b8..bbe0e4152fc07 100644
--- a/pkgs/development/tools/time-ghc-modules/default.nix
+++ b/pkgs/development/tools/time-ghc-modules/default.nix
@@ -46,6 +46,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Analyze GHC .dump-timings files";
+    mainProgram = "time-ghc-modules";
     homepage = "https://github.com/codedownio/time-ghc-modules";
     license = licenses.mit;
     maintainers = [ maintainers.thomasjm ];
diff --git a/pkgs/development/tools/toast/default.nix b/pkgs/development/tools/toast/default.nix
index c4b486b96527a..a7fa40f035b15 100644
--- a/pkgs/development/tools/toast/default.nix
+++ b/pkgs/development/tools/toast/default.nix
@@ -20,6 +20,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Containerize your development and continuous integration environments";
+    mainProgram = "toast";
     homepage = "https://github.com/stepchowfun/toast";
     license = licenses.mit;
     maintainers = with maintainers; [ dit7ya ];
diff --git a/pkgs/development/tools/toml2json/default.nix b/pkgs/development/tools/toml2json/default.nix
index b2abf4eb72115..4d7fed800e213 100644
--- a/pkgs/development/tools/toml2json/default.nix
+++ b/pkgs/development/tools/toml2json/default.nix
@@ -13,6 +13,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A very small CLI for converting TOML to JSON";
+    mainProgram = "toml2json";
     homepage = "https://github.com/woodruffw/toml2json";
     license = with licenses; [ mit ];
     maintainers = with maintainers; [ rvarago ];
diff --git a/pkgs/development/tools/toml2nix/default.nix b/pkgs/development/tools/toml2nix/default.nix
index 6987619dbcb50..60eb3901318f1 100644
--- a/pkgs/development/tools/toml2nix/default.nix
+++ b/pkgs/development/tools/toml2nix/default.nix
@@ -17,6 +17,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A tool to convert TOML files to Nix expressions";
+    mainProgram = "toml2nix";
     homepage = "https://crates.io/crates/toml2nix";
     license = with licenses; [ mit /* or */ asl20 ];
     maintainers = with maintainers; [ figsoda ];
diff --git a/pkgs/development/tools/tora/default.nix b/pkgs/development/tools/tora/default.nix
index bb85babe7c466..512d5adc0a7ff 100644
--- a/pkgs/development/tools/tora/default.nix
+++ b/pkgs/development/tools/tora/default.nix
@@ -48,6 +48,7 @@ mkDerivation {
 
   meta = with lib; {
     description = "Tora SQL tool";
+    mainProgram = "tora";
     maintainers = with maintainers; [ peterhoeg ];
     platforms = platforms.linux;
     license = licenses.asl20;
diff --git a/pkgs/development/tools/tradcpp/default.nix b/pkgs/development/tools/tradcpp/default.nix
index 7d2606eba84e9..73d0cf5e81a46 100644
--- a/pkgs/development/tools/tradcpp/default.nix
+++ b/pkgs/development/tools/tradcpp/default.nix
@@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A traditional (K&R-style) C macro preprocessor";
+    mainProgram = "tradcpp";
     platforms = platforms.all;
     license = licenses.bsd2;
   };
diff --git a/pkgs/development/tools/trunk/default.nix b/pkgs/development/tools/trunk/default.nix
index 3df95747a3a1b..13352f11c5c97 100644
--- a/pkgs/development/tools/trunk/default.nix
+++ b/pkgs/development/tools/trunk/default.nix
@@ -54,6 +54,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     homepage = "https://github.com/trunk-rs/trunk";
     description = "Build, bundle & ship your Rust WASM application to the web";
+    mainProgram = "trunk";
     maintainers = with maintainers; [ freezeboy ];
     license = with licenses; [ asl20 ];
   };
diff --git a/pkgs/development/tools/ttfb/default.nix b/pkgs/development/tools/ttfb/default.nix
index f024280c08702..e8a86c21bc5d1 100644
--- a/pkgs/development/tools/ttfb/default.nix
+++ b/pkgs/development/tools/ttfb/default.nix
@@ -26,6 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = {
     description = "CLI-Tool to measure the TTFB (time to first byte) of HTTP(S) requests";
+    mainProgram = "ttfb";
     longDescription = ''
       ttfb measure the TTFB (time to first byte) of HTTP(S) requests. This includes data
       of intermediate steps, such as the relative and absolute timings of DNS lookup, TCP
diff --git a/pkgs/development/tools/twiggy/default.nix b/pkgs/development/tools/twiggy/default.nix
index f1ee4c68fb19e..25d8ab244d9ef 100644
--- a/pkgs/development/tools/twiggy/default.nix
+++ b/pkgs/development/tools/twiggy/default.nix
@@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec {
   meta = with lib; {
     homepage = "https://rustwasm.github.io/twiggy/";
     description = "A code size profiler for Wasm";
+    mainProgram = "twiggy";
     license = with licenses; [ asl20 mit ];
     maintainers = with maintainers; [ lucperkins ];
   };
diff --git a/pkgs/development/tools/twitch-cli/default.nix b/pkgs/development/tools/twitch-cli/default.nix
index cc145b08ed584..8417bf10a5d20 100644
--- a/pkgs/development/tools/twitch-cli/default.nix
+++ b/pkgs/development/tools/twitch-cli/default.nix
@@ -42,6 +42,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "The official Twitch CLI to make developing on Twitch easier";
+    mainProgram = "twitch-cli";
     homepage = "https://github.com/twitchdev/twitch-cli";
     license = licenses.asl20;
     maintainers = with maintainers; [ benediktbroich ];
diff --git a/pkgs/development/tools/txtpbfmt/default.nix b/pkgs/development/tools/txtpbfmt/default.nix
index 384320bb3b95a..af69078fe18c0 100644
--- a/pkgs/development/tools/txtpbfmt/default.nix
+++ b/pkgs/development/tools/txtpbfmt/default.nix
@@ -17,6 +17,7 @@ buildGoModule {
 
   meta = with lib; {
     description = "Formatter for text proto files";
+    mainProgram = "txtpbfmt";
     homepage = "https://github.com/protocolbuffers/txtpbfmt";
     license = licenses.asl20;
     maintainers = with maintainers; [ aaronjheng ];
diff --git a/pkgs/development/tools/typos/default.nix b/pkgs/development/tools/typos/default.nix
index 6aa8e5558dcc1..cb33025cf1834 100644
--- a/pkgs/development/tools/typos/default.nix
+++ b/pkgs/development/tools/typos/default.nix
@@ -15,6 +15,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Source code spell checker";
+    mainProgram = "typos";
     homepage = "https://github.com/crate-ci/typos";
     changelog = "https://github.com/crate-ci/typos/blob/${src.rev}/CHANGELOG.md";
     license = with licenses; [ asl20 /* or */ mit ];
diff --git a/pkgs/development/tools/uftrace/default.nix b/pkgs/development/tools/uftrace/default.nix
index 26bb1cf60e007..17be739ea02b8 100644
--- a/pkgs/development/tools/uftrace/default.nix
+++ b/pkgs/development/tools/uftrace/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = {
     description = "Function (graph) tracer for user-space";
+    mainProgram = "uftrace";
     homepage = "https://github.com/namhyung/uftrace";
     license = lib.licenses.gpl2;
     platforms = lib.platforms.linux;
diff --git a/pkgs/development/tools/unconvert/default.nix b/pkgs/development/tools/unconvert/default.nix
index ac49ad1f96969..21c0d08ab5ac8 100644
--- a/pkgs/development/tools/unconvert/default.nix
+++ b/pkgs/development/tools/unconvert/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Remove unnecessary type conversions from Go source";
+    mainProgram = "unconvert";
     homepage = "https://github.com/mdempsky/unconvert";
     license = licenses.bsd3;
     maintainers = with maintainers; [ kalbasit ];
diff --git a/pkgs/development/tools/vendir/default.nix b/pkgs/development/tools/vendir/default.nix
index 0420ef5e73a62..d7be7022a9d8f 100644
--- a/pkgs/development/tools/vendir/default.nix
+++ b/pkgs/development/tools/vendir/default.nix
@@ -17,6 +17,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "CLI tool to vendor portions of git repos, github releases, helm charts, docker image contents, etc. declaratively";
+    mainProgram = "vendir";
     homepage = "https://carvel.dev/vendir/";
     license = licenses.asl20;
     maintainers = with maintainers; [ russell ];
diff --git a/pkgs/development/tools/viceroy/default.nix b/pkgs/development/tools/viceroy/default.nix
index 9f195aee427f0..46b4240bfaf86 100644
--- a/pkgs/development/tools/viceroy/default.nix
+++ b/pkgs/development/tools/viceroy/default.nix
@@ -21,6 +21,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "Viceroy provides local testing for developers working with Compute@Edge";
+    mainProgram = "viceroy";
     homepage = "https://github.com/fastly/Viceroy";
     license = licenses.asl20;
     maintainers = with maintainers; [ ereslibre shyim ];
diff --git a/pkgs/development/tools/vndr/default.nix b/pkgs/development/tools/vndr/default.nix
index d4e665adc414a..29668e3097e7c 100644
--- a/pkgs/development/tools/vndr/default.nix
+++ b/pkgs/development/tools/vndr/default.nix
@@ -17,6 +17,7 @@ buildGoPackage rec {
 
   meta = {
     description = "Stupid golang vendoring tool, inspired by docker vendor script";
+    mainProgram = "vndr";
     homepage = "https://github.com/LK4D4/vndr";
     maintainers = with lib.maintainers; [ vdemeester rvolosatovs ];
     license = lib.licenses.asl20;
diff --git a/pkgs/development/tools/vultr/default.nix b/pkgs/development/tools/vultr/default.nix
index 71a0484557876..e7f600b9765fc 100644
--- a/pkgs/development/tools/vultr/default.nix
+++ b/pkgs/development/tools/vultr/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Vultr CLI and API client library";
+    mainProgram = "vultr";
     homepage = "https://jamesclonk.github.io/vultr";
     changelog = "https://github.com/JamesClonk/vultr/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/wails/default.nix b/pkgs/development/tools/wails/default.nix
index c94139f7fedac..34c4ae6aa3711 100644
--- a/pkgs/development/tools/wails/default.nix
+++ b/pkgs/development/tools/wails/default.nix
@@ -66,6 +66,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Build applications using Go + HTML + CSS + JS";
+    mainProgram = "wails";
     homepage = "https://wails.io";
     license = licenses.mit;
     maintainers = with maintainers; [ ianmjones ];
diff --git a/pkgs/development/tools/wally-cli/default.nix b/pkgs/development/tools/wally-cli/default.nix
index 547f68bf8f335..b0f3375984b44 100644
--- a/pkgs/development/tools/wally-cli/default.nix
+++ b/pkgs/development/tools/wally-cli/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "A tool to flash firmware to mechanical keyboards";
+    mainProgram = "wally-cli";
     homepage = "https://ergodox-ez.com/pages/wally-planck";
     platforms = with platforms; linux ++ darwin;
     license = licenses.mit;
diff --git a/pkgs/development/tools/wambo/default.nix b/pkgs/development/tools/wambo/default.nix
index f5e277d415ef5..fe79c186259b7 100644
--- a/pkgs/development/tools/wambo/default.nix
+++ b/pkgs/development/tools/wambo/default.nix
@@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = {
     description = "All-in-one tool to convert decimal/bin/oct/hex and interpret bits as integers";
+    mainProgram = "wambo";
     longDescription = ''
       wambo is a binary that can easily shows you a numeric value in all important numeral systems
       (bin, hex, dec) + interprets the input as both signed and unsigned values (from i8 to i64,
diff --git a/pkgs/development/tools/wasm-pack/default.nix b/pkgs/development/tools/wasm-pack/default.nix
index d805b529d6788..4354019aa0be0 100644
--- a/pkgs/development/tools/wasm-pack/default.nix
+++ b/pkgs/development/tools/wasm-pack/default.nix
@@ -26,6 +26,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A utility that builds rust-generated WebAssembly package";
+    mainProgram = "wasm-pack";
     homepage = "https://github.com/rustwasm/wasm-pack";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = [ maintainers.dhkl ];
diff --git a/pkgs/development/tools/wasmserve/default.nix b/pkgs/development/tools/wasmserve/default.nix
index 3248082e2a4c0..1372534d05e5a 100644
--- a/pkgs/development/tools/wasmserve/default.nix
+++ b/pkgs/development/tools/wasmserve/default.nix
@@ -18,6 +18,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "An HTTP server for testing Wasm";
+    mainProgram = "wasmserve";
     homepage = "https://github.com/hajimehoshi/wasmserve";
     license = licenses.asl20;
     maintainers = with maintainers; [ kirillrdy ];
diff --git a/pkgs/development/tools/wgo/default.nix b/pkgs/development/tools/wgo/default.nix
index 3ed1fc89bf4ea..9733cfd073436 100644
--- a/pkgs/development/tools/wgo/default.nix
+++ b/pkgs/development/tools/wgo/default.nix
@@ -31,6 +31,7 @@ buildGoModule {
 
   meta = with lib; {
     description = "Live reload for Go apps";
+    mainProgram = "wgo";
     homepage = "https://github.com/bokwoon95/wgo";
     license = licenses.mit;
     maintainers = with maintainers; [ ];
diff --git a/pkgs/development/tools/wiggle/default.nix b/pkgs/development/tools/wiggle/default.nix
index 2da789fdc6032..bb2ea26657494 100644
--- a/pkgs/development/tools/wiggle/default.nix
+++ b/pkgs/development/tools/wiggle/default.nix
@@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
   meta = with lib; {
     homepage = "https://blog.neil.brown.name/category/wiggle/";
     description = "Tool for applying patches with conflicts";
+    mainProgram = "wiggle";
     longDescription = ''
       Wiggle applies patches to a file in a similar manner to the patch(1)
       program. The distinctive difference is, however, that wiggle will
diff --git a/pkgs/development/tools/wiiload/default.nix b/pkgs/development/tools/wiiload/default.nix
index 3d7f1b7986339..f2ff285cb745d 100644
--- a/pkgs/development/tools/wiiload/default.nix
+++ b/pkgs/development/tools/wiiload/default.nix
@@ -17,6 +17,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "Load homebrew apps over network/usbgecko to your Wii";
+    mainProgram = "wiiload";
     homepage = "https://wiibrew.org/wiki/Wiiload";
     license = licenses.gpl2;
     maintainers = with maintainers; [ tomsmeets ];
diff --git a/pkgs/development/tools/winhelpcgi/default.nix b/pkgs/development/tools/winhelpcgi/default.nix
index 608ab00f50b66..c2d4dd31bf1ce 100644
--- a/pkgs/development/tools/winhelpcgi/default.nix
+++ b/pkgs/development/tools/winhelpcgi/default.nix
@@ -14,6 +14,7 @@
 
   meta = {
     description = "CGI module for Linux, Solaris, MacOS X and AIX to read Windows Help Files";
+    mainProgram = "winhelpcgi.cgi";
     homepage = "http://www.herdsoft.com/linux/produkte/winhelpcgi.html";
     license = lib.licenses.gpl2Only;
     maintainers = [ lib.maintainers.shlevy ];
diff --git a/pkgs/development/tools/wire/default.nix b/pkgs/development/tools/wire/default.nix
index 601c7fa8df7cc..540f5c6a845e9 100644
--- a/pkgs/development/tools/wire/default.nix
+++ b/pkgs/development/tools/wire/default.nix
@@ -26,6 +26,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/google/wire";
     description = "A code generation tool that automates connecting components using dependency injection";
+    mainProgram = "wire";
     license = licenses.asl20;
     maintainers = with maintainers; [ svrana ];
   };
diff --git a/pkgs/development/tools/wizer/default.nix b/pkgs/development/tools/wizer/default.nix
index d78059968af40..0f8e25e54bd6c 100644
--- a/pkgs/development/tools/wizer/default.nix
+++ b/pkgs/development/tools/wizer/default.nix
@@ -37,6 +37,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "The WebAssembly pre-initializer";
+    mainProgram = "wizer";
     homepage = "https://github.com/bytecodealliance/wizer";
     license = licenses.asl20;
     maintainers = with maintainers; [ lucperkins amesgen ];
diff --git a/pkgs/development/tools/worker-build/default.nix b/pkgs/development/tools/worker-build/default.nix
index 620fd87142ff9..8f78048e8e19a 100644
--- a/pkgs/development/tools/worker-build/default.nix
+++ b/pkgs/development/tools/worker-build/default.nix
@@ -27,6 +27,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "This is a tool to be used as a custom build command for a Cloudflare Workers `workers-rs` project.";
+    mainProgram = "worker-build";
     homepage = "https://github.com/cloudflare/workers-rs";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ happysalada ];
diff --git a/pkgs/development/tools/wp4nix/default.nix b/pkgs/development/tools/wp4nix/default.nix
index 08a202784ce01..6a829b4ae2672 100644
--- a/pkgs/development/tools/wp4nix/default.nix
+++ b/pkgs/development/tools/wp4nix/default.nix
@@ -31,6 +31,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Packaging helper for Wordpress themes and plugins";
+    mainProgram = "wp4nix";
     homepage = "https://git.helsinki.tools/helsinki-systems/wp4nix";
     license = licenses.mit;
     maintainers = with maintainers; [ onny ];
diff --git a/pkgs/development/tools/wrangler_1/default.nix b/pkgs/development/tools/wrangler_1/default.nix
index 44bd00cf69aa5..0302e40492aa4 100644
--- a/pkgs/development/tools/wrangler_1/default.nix
+++ b/pkgs/development/tools/wrangler_1/default.nix
@@ -25,6 +25,7 @@ rustPlatform.buildRustPackage rec {
 
   meta = with lib; {
     description = "A CLI tool designed for folks who are interested in using Cloudflare Workers";
+    mainProgram = "wrangler";
     homepage = "https://github.com/cloudflare/wrangler";
     license = with licenses; [ asl20 /* or */ mit ];
     maintainers = with maintainers; [ Br1ght0ne ];
diff --git a/pkgs/development/tools/xc/default.nix b/pkgs/development/tools/xc/default.nix
index 0e09b77e453e2..9acf27ca3c338 100644
--- a/pkgs/development/tools/xc/default.nix
+++ b/pkgs/development/tools/xc/default.nix
@@ -21,6 +21,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "Markdown defined task runner";
+    mainProgram = "xc";
     homepage = "https://xcfile.dev/";
     changelog = "https://github.com/joerdav/xc/releases/tag/${src.rev}";
     license = licenses.mit;
diff --git a/pkgs/development/tools/xqilla/default.nix b/pkgs/development/tools/xqilla/default.nix
index 342ca426801d7..352f41f47bb49 100644
--- a/pkgs/development/tools/xqilla/default.nix
+++ b/pkgs/development/tools/xqilla/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "An XQuery and XPath 2 library and command line utility written in C++, implemented on top of the Xerces-C library";
+    mainProgram = "xqilla";
     license     = licenses.asl20 ;
     maintainers = with maintainers; [ obadz ];
     platforms   = platforms.all;
diff --git a/pkgs/development/tools/yaml2json/default.nix b/pkgs/development/tools/yaml2json/default.nix
index 444b0b0017e18..908d650e16c76 100644
--- a/pkgs/development/tools/yaml2json/default.nix
+++ b/pkgs/development/tools/yaml2json/default.nix
@@ -20,6 +20,7 @@ buildGoModule rec {
   meta = with lib; {
     homepage = "https://github.com/bronze1man/yaml2json";
     description = "Convert yaml to json";
+    mainProgram = "yaml2json";
     license = with licenses; [ mit ];
     maintainers = [ ];
   };
diff --git a/pkgs/development/tools/ytt/default.nix b/pkgs/development/tools/ytt/default.nix
index 0520871d698cc..ea1cd39a6ccfc 100644
--- a/pkgs/development/tools/ytt/default.nix
+++ b/pkgs/development/tools/ytt/default.nix
@@ -30,6 +30,7 @@ buildGoModule rec {
 
   meta = with lib; {
     description = "YAML templating tool that allows configuration of complex software via reusable templates with user-provided values";
+    mainProgram = "ytt";
     homepage = "https://get-ytt.io";
     license = licenses.asl20;
     maintainers = with maintainers; [ brodes techknowlogick ];
diff --git a/pkgs/development/tools/yuicompressor/default.nix b/pkgs/development/tools/yuicompressor/default.nix
index fdde9941bd5ed..281aaee522c2a 100644
--- a/pkgs/development/tools/yuicompressor/default.nix
+++ b/pkgs/development/tools/yuicompressor/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "A JavaScript and CSS minifier";
+    mainProgram = "yuicompressor";
     homepage = "http://yui.github.io/yuicompressor/";
     sourceProvenance = with sourceTypes; [ binaryBytecode ];
     license = licenses.bsd3;
diff --git a/pkgs/development/tools/zsv/default.nix b/pkgs/development/tools/zsv/default.nix
index d9575d92bb389..c311a4de9df4e 100644
--- a/pkgs/development/tools/zsv/default.nix
+++ b/pkgs/development/tools/zsv/default.nix
@@ -21,6 +21,7 @@ stdenv.mkDerivation rec {
 
   meta = with lib; {
     description = "World's fastest (simd) CSV parser, with an extensible CLI";
+    mainProgram = "zsv";
     homepage = "https://github.com/liquidaty/zsv";
     changelog = "https://github.com/liquidaty/zsv/releases/tag/v${version}";
     license = licenses.mit;