如何将参数设置为nix-expression

时间:2015-01-10 21:42:00

标签: nixos

我是Nix的新手,我试图理解示例中给出的hello派生。

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

我的意思是,在调用此派生之前,谁在设置perl参数。 这是否意味着perlhello的依赖关系?

1 个答案:

答案 0 :(得分:2)

软件包通常被编写为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中的大集。

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