پشتیبانی از ساخت
pkgs.substitute
pkgs.substitute یک پوشان
substitute $infile $outfile --replace-fail @foo@ ${foopkg}/bin/foo معادل است با:
{ substitute, foopkg }:
substitute {
src = ./sourcefile.txt;
substitutions = [
"--replace"
"@foo@"
"${foopkg}/bin/foo"
];
} pkgs.replaceVars
عبارت pkgs.replaceVars <src> <replacements> تمام نمونههای @varName@ (ش
#! @bash@/bin/bash
echo @unchanged@
@hello@/bin/hello --greeting @greeting@ درایویشن زیر جایگزینیهایی را روی @bash@، @hello@ و @greeting@ اعمال خواهد کرد:
{
replaceVars,
bash,
hello,
}:
replaceVars ./say-goodbye.sh {
inherit bash hello;
greeting = "goodbye";
unchanged = null;
} بهطوری که $out به چیزی شبیه به زیر منجر خواهد شد:
#! /nix/store/s30jrpgav677fpc9yvkqsib70xfmx7xi-bash-5.2p26/bin/bash
echo @unchanged@
/nix/store/566f5isbvw014h7knmzmxa5l6hshx43k-hello-2.12.1/bin/hello --greeting goodbye توجه داشته باشید که در مقایسه با substituteAll قدیمی، unchanged = null باید بهطور صریح تنظیم شود.
هر الگوی @...@ ار
{ replaceVarsWith }:
replaceVarsWith {
src = ./say-goodbye.sh;
replacements = {
inherit bash hello;
greeting = "goodbye";
unchanged = null;
};
name = "say-goodbye";
dir = "bin";
isExecutable = true;
meta.mainProgram = "say-goodbye";
} این کار فایل حاصل را قابل اجرا میکند، آن را در bin/say-goodbye قرار میدهد و صفات meta را به ترتیب تنظیم میکند.