From e929a99848b67822e69522d6895c91688c2b7cca Mon Sep 17 00:00:00 2001 From: Andrew Hamon Date: Sun, 19 Mar 2023 21:00:18 -0700 Subject: [PATCH] writeShellApplication: allow substitutions and remote building. Unlike most other trivial builders, writeShellApplication has a relatively heavy checkphase that invokes shellcheck. On my system, a small writeShellApplication takes over 1 second to build. This PR allows substitutions and stops preferring local builds for writeShellApplication. --- pkgs/build-support/trivial-builders.nix | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pkgs/build-support/trivial-builders.nix b/pkgs/build-support/trivial-builders.nix index e4c2ffb70349..2a4e93f82dff 100644 --- a/pkgs/build-support/trivial-builders.nix +++ b/pkgs/build-support/trivial-builders.nix @@ -132,13 +132,12 @@ rec { , destination ? "" # relative path appended to $out eg "/bin/foo" , checkPhase ? "" # syntax checks, e.g. for scripts , meta ? { } + , allowSubstitutes ? false + , preferLocalBuild ? true }: runCommand name - { inherit text executable checkPhase meta; + { inherit text executable checkPhase meta allowSubstitutes preferLocalBuild; passAsFile = [ "text" ]; - # Pointless to do this on a remote machine. - preferLocalBuild = true; - allowSubstitutes = false; } '' target=$out${lib.escapeShellArg destination} @@ -324,6 +323,8 @@ rec { inherit name; executable = true; destination = "/bin/${name}"; + allowSubstitutes = true; + preferLocalBuild = false; text = '' #!${runtimeShell} set -o errexit