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 ==