nix - Nixpkgs 存储库中定义的 `callPackage` 在哪里(或如何找到一般的 Nix lambda 定义)?

标签 nix nixpkgs

找到很多描述 callPackage 的来源和它的一些内部结构,但没有一个是指它的位置。这就像 Nix 最保守的 secret ,手册甚至似乎都在积极回避这个话题。我可以在给定的时间内找到它,但这是一个巨大的 repo 。
资源:

  • How does Nix's “callPackage” call functions defined without an ellipsis? (Stackoverlow)
  • Nix Pills, Chapter 13. Callpackage Design Pattern
    尼克斯

  • 答案居然指向callPackageWith customisation.nix中的函数, 但是 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 - Nixpkgs 存储库中定义的 `callPackage` 在哪里(或如何找到一般的 Nix lambda 定义)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56121361/

    相关文章:

    haskell - 如何在 nix 中从 haskell 包(使用 stack/cabal)构建可执行文件?

    nix - 什么是 nix 表达式 "<nixpkgs>"?

    nix - Nix 的 "callPackage"如何调用没有省略号定义的函数?

    haskell - Haskell Miso 的编译速度更快

    nix - 如何构建 nix hello world

    nix - 这个元素真的是一个集合吗?

    macos - 使用 nix 包管理器在 osx 上运行 postgres

    yarnpkg - 如何在我的 nix shell 中同步 Node 和 Yarn 版本?

    nixos - 如何安装 vscode 的扩展?

    Nix:如何使用覆盖全局覆盖 stdenv.cc?