callPackage
実装としては、callPackageWithのwrapperになっている
code:nix
callPackage = callPackageWith pkgs;
callPackage <path> <overrides>という感じで使う
pathは、nixファイルのpathなので、これは関数が渡されることを意味する
その関数には、default引数が設定されているが、それの一部を上書きするために<override>を使う
これを
code:nix
rec {
lib1 = import package1.nix { inherit input1 input2 ...; };
program2 = import package1.nix { inherit inputX inputY lib1 ...; };
}
こう書ける
code:nix
{
lib1 = callPackage package1.nix { };
program2 = callPackage package2.nix { someoverride = overriddenDerivation; };
}
これ、翌々考えたら、input1とかinput2とかも暗黙的に全部引数として渡しているってこと #?? pillsの13.2でvalueがcを持っているのは多分そういうこと
楽にはなるが、わかりにくくないか?
pills 13の「repository」というのは、derivationの集積と言うか、オレオレnixpkgsみたいなやつのことを指している
pills 12の話を継続しているので。
何が嬉しいのかいまいちわかっていない
callPackageの前後でどう変わるのかをしりたい
そもそもの課題ってなんだっけ?
参考