私は Nix が初めてで、例に示されているhelloの派生を理解しようとしています。
構文と何をすべきかは理解できますが、最初の引数 (特にperl
one_ がどのように供給されるのか) がわかりません。
つまり、perl
この派生を呼び出す前に引数を設定しているのは誰ですか。perl
それはの依存関係であることを意味しhello
ますか?
パッケージは通常、set of dependencies -> derivation
関数として記述され、後でアセンブルされます。あなたが尋ねる引数は、Nixpkgs のすべてのパッケージのセットを保持する pkgs/top-level/all-packages.nix から供給されます。
all-packages.nix で の行を見つけると、hello
それが using であることに気付くでしょうcallPackage
- その署名はpath to Nix expression -> overrides -> derivation
. callPackage
パスをロードし、ロードした関数を見て、引数ごとoverrides
に all-packages.nix の膨大なセットから、または指定されていない場合は値を提供します。
の優れた説明については、http://lethalman.blogspot.com/2014/09/nix-pill-13-callpackage-design-pattern.htmlcallPackage
を参照してください。これは、あまり凝縮されていない説明であり、どのようにして自分自身を発明できたのかを示しています :-) .callPackage