Shell Scripts: Difference between revisions
imported>Milahu + Command not found |
imported>Milahu + External builder.sh script |
||
Line 15: | Line 15: | ||
}; | }; | ||
</syntaxHighlight> | </syntaxHighlight> | ||
== External builder.sh script == | |||
Longer bash scripts are usually stored as external script files, and called from Nix: | |||
<syntaxHighlight lang="nix"> | |||
# default.nix | |||
{ | |||
outputTxtPath = stdenv.mkDerivation rec { | |||
name = "output.txt"; | |||
# disable unpackPhase etc https://github.com/NixOS/nixpkgs/issues/23099 | |||
phases = "buildPhase"; | |||
builder = ./builder.sh; | |||
nativeBuildInputs = [ coreutils jq ]; | |||
PATH = lib.makeBinPath nativeBuildInputs; | |||
# only strings can be passed to builder | |||
someString = "hello"; | |||
someNumber = builtins.toString 42; | |||
someJson = builtins.toJSON { dst = "world"; }; | |||
}; | |||
} | |||
</syntaxHighlight> | |||
<syntaxHighlight lang="bash"> | |||
# builder.sh | |||
echo "$someString $(echo "$someJson" | jq -r '.dst') $someNumber" >$out | |||
</syntaxHighlight> | |||
see also [https://nixos.org/guides/nix-pills/working-derivation.html Nix Pills: Chapter 7. Working Derivation] | |||
== Packaging == | == Packaging == |