Nixpkgs 存储库中的“callPackage”在哪里定义(或者一般如何找到 Nix lambda 定义)?
Where is `callPackage` defined in the Nixpkgs repo (or how to find Nix lambda definitions in general)?
找到很多描述 callPackage
及其内部结构的来源,但 none 指的是它的位置。这就像 Nix 的最保守秘密,手册甚至似乎在积极回避这个话题。我可以给定时间找到它,但它是一个巨大的回购协议。
资源:
答案其实指向了customisation.nix
中的callPackageWith
函数,但是callPackage
itself is defined elsewhere.
nix repl
可以告诉您定义 lambda 的位置。
$ nix repl
Welcome to Nix version 2.2.2. Type :? for help.
nix-repl> pkgs = import <nixpkgs> {}
nix-repl> pkgs.callPackage
«lambda @ /nix/store/9hffpjaa2a7djl19ncky7zcvlhyj76dn-nixos-19.03.172396.d740b2ee855/nixos/lib/customisation.nix:108:31»
直到 nixos
的部分是我的 <nixpkgs>
,因此给你答案:lib/customisation.nix
line 108。
在薄片之前我使用 nix edit nixpkgs.callPackage
和薄片 nix edit nixpkgs\#callPackage
。
无论是否为 lambda,它都能正常工作。例如。 nix edit nixpkgs\#nix.meta
找到很多描述 callPackage
及其内部结构的来源,但 none 指的是它的位置。这就像 Nix 的最保守秘密,手册甚至似乎在积极回避这个话题。我可以给定时间找到它,但它是一个巨大的回购协议。
资源:
答案其实指向了customisation.nix
中的callPackageWith
函数,但是callPackage
itself is defined elsewhere.
nix repl
可以告诉您定义 lambda 的位置。
$ nix repl
Welcome to Nix version 2.2.2. Type :? for help.
nix-repl> pkgs = import <nixpkgs> {}
nix-repl> pkgs.callPackage
«lambda @ /nix/store/9hffpjaa2a7djl19ncky7zcvlhyj76dn-nixos-19.03.172396.d740b2ee855/nixos/lib/customisation.nix:108:31»
直到 nixos
的部分是我的 <nixpkgs>
,因此给你答案:lib/customisation.nix
line 108。
在薄片之前我使用 nix edit nixpkgs.callPackage
和薄片 nix edit nixpkgs\#callPackage
。
无论是否为 lambda,它都能正常工作。例如。 nix edit nixpkgs\#nix.meta