私は Nix が初めてで、例に示されているhelloの派生を理解しようとしています。
構文と何をすべきかは理解できますが、最初の引数 (特にperlone_ がどのように供給されるのか) がわかりません。
つまり、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