diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 12af51b435f..9c4425794af 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -433,22 +433,24 @@ let symlinkJoin = name: paths: runCommand name {inherit paths;} "mkdir -p $out; for i in $paths; do ${xorg.lndir}/bin/lndir $i $out; done"; - # single text file derivation - writeTextFile = { name, # the name of the derivation - text, - executable ? false, # run chmod +x ? - destination ? "" # relative path appended to $out eg "/bin/foo" - } : + # Create a single file. + writeTextFile = + { name # the name of the derivation + , text + , executable ? false # run chmod +x ? + , destination ? "" # relative path appended to $out eg "/bin/foo" + }: runCommand name {inherit text executable; } '' n=$out${destination} mkdir -p "$(dirname "$n")" echo -n "$text" > "$n" [ -n "$executable"] && chmod +x "$n" - ''; - # the following write* functions are depreceated. You should use writeTextFile instead - writeText = name: text: runCommand name {inherit text;} "echo -n \"$text\" > $out"; - writeScript = name: text: runCommand name {inherit text;} "echo -n \"$text\" > $out; chmod +x $out"; - writeScriptBin = name: text: runCommand name {inherit text;} "mkdir -p \$out/bin; echo -n \"\$text\" > \$out/bin/\$name ; chmod +x \$out/bin/\$name"; + ''; + + # Shorthands for `writeTextFile'. + writeText = name: text: writeTextFile {inherit name text;}; + writeScript = name: text: writeTextFile {inherit name text; executable = true;}; + writeScriptBin = name: text: writeTextFile {inherit name text; executable = true; destination = "/bin/${name}";}; # entries is a list of attribute sets like { name = "name" ; path = "/nix/store/..."; } linkFarm = name: entries: runCommand name {} ("mkdir -p $out; cd $out; \n" +