如何将参数设置为 nix-expression

How are set argument to nix-expression

我是 Nix 的新手,我正在尝试理解示例中给出的 hello 推导。

我能理解语法和应该做什么,但我不明白 如何提供初始参数(尤其是 perl one_?

我的意思是,谁在调用此推导之前设置了 perl 参数。 这是否意味着 perlhello 的依赖项?

包通常写成set of dependencies -> derivation函数,稍后再组装。您询问的参数来自 pkgs/top-level/all-packages.nix,它包含 Nixpkgs 中所有软件包的集合。

当您在 all-packages.nix 中找到 hello 行时,您会注意到它使用的是 callPackage - 它的签名是 path to Nix expression -> overrides -> derivationcallPackage 加载路径,查看它加载的函数,并为每个参数提供来自 overrides 的值,或者,如果没有给出,则来自 all-packages.nix.[= 中的巨大集合19=]

有关 callPackage 的详细描述,请参阅 http://lethalman.blogspot.com/2014/09/nix-pill-13-callpackage-design-pattern.html - 这是一个不太简洁的解释,展示了您如何可以自己发明 callPackage :-)。