我是 Nix 的新手,我试图理解示例中给出的hello推导。
我可以理解语法和应该做什么,但是我不明白初始参数(尤其是perl
one_ 是如何输入的?
perl
我的意思是,在调用这个推导之前是谁在设置参数。这是否意味着这perl
是一个依赖hello
?
包通常被编写为set of dependencies -> derivation
函数,以便稍后组装。您询问的参数来自 pkgs/top-level/all-packages.nix,它包含 Nixpkgs 中所有包的集合。
当您hello
在 all-packages.nix 中找到 ' 行时,您会注意到它正在使用callPackage
- 它的签名是path to Nix expression -> overrides -> derivation
. callPackage
加载路径,查看它加载的函数,并为每个参数提供来自overrides
all-packages.nix 中巨大集合的值,如果没有给出,则提供。
有关详细说明,callPackage
请参见http://lethalman.blogspot.com/2014/09/nix-pill-13-callpackage-design-pattern.html - 这是一个不那么简洁的解释,展示了您如何发明callPackage
自己 :-) .