我是Nix的新手,我试图理解示例中给出的hello派生。
我可以理解语法和应该做什么,但我不明白
如何提供初始参数(特别是perl
one_?
我的意思是,在调用此派生之前,谁在设置perl
参数。
这是否意味着perl
是hello
的依赖关系?
答案 0 :(得分:2)
软件包通常被编写为set of dependencies -> derivation
函数,稍后将进行汇编。您询问的参数来自pkgs / top-level / all-packages.nix,它包含Nixpkgs中所有包的集合。
当你在all-packages.nix中找到hello
的行时,你会注意到它正在使用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
: - 。