From 0b4c5d23cdaaf8729e3653a246860823333c35d4 Mon Sep 17 00:00:00 2001 From: Charlie Moog Date: Fri, 11 Aug 2023 00:09:11 -0500 Subject: [PATCH] trivial-builders: add meta.mainProgram to writeShellScriptBin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Derivations built with `writeShellScriptBin` should always be runnable with `nix run`. At present, the derivation is missing both `meta.mainProgram` and `pname`– this means that `nix run` falls back to inferring the bin path from `name`. This is unreliable and depends on faulty heuristics. For context, reference the following snippet from `nix run --help`: If installable evaluates to a derivation, it will try to execute the program /bin/, where out is the primary output store path of the derivation, and name is the first of the following that exists: · The meta.mainProgram attribute of the derivation. · The pname attribute of the derivation. · The name part of the value of the name attribute of the derivation. --- pkgs/build-support/trivial-builders/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/build-support/trivial-builders/default.nix b/pkgs/build-support/trivial-builders/default.nix index 0c63cc5a9be9..7c4d204df407 100644 --- a/pkgs/build-support/trivial-builders/default.nix +++ b/pkgs/build-support/trivial-builders/default.nix @@ -304,6 +304,7 @@ rec { checkPhase = '' ${stdenv.shellDryRun} "$target" ''; + meta.mainProgram = name; }; /*