关于调用 nix 表达式的参数
Arguments on invoking a nix expression
手册中GNU Hello的nix表达式,就是这个:
{ stdenv, fetchurl, perl }: 1
stdenv.mkDerivation { 2
name = "hello-2.1.1"; 3
builder = ./builder.sh; 4
src = fetchurl { 5
url = ftp://ftp.nluug.nl/pub/gnu/hello/hello-2.1.1.tar.gz;
sha256 = "1md7jsfd8pa45z73bz1kszpp01yw6x5ljkjk2hx7wl800any6465";
};
inherit perl; 6
}
您怎么知道 stdenv
、fetchurl
和 perl
在作为该 nix 表达式的参数传递的集合中?
同样在 Gabriel439/haskell-nix
的 release0.nix 中,callPackage
是做什么的?而我们如何知道 callPackage
存在于 haskellPackages
属性路径中呢?
上面还有1个release0.nix
。我猜 callPackage
就像 import
一样工作,但是当前集也作为参数传入,这是真的吗?如果是这样,我可以用这个改变表达式吗:
let
pkgs = import <nixpkgs> {};
haskellPkgs = pkgs.haskellPackages;
myPackages = import ./default.nix;
in
myPackages haskellPkgs
抱歉问题太多了!
关于你关于 callPackage
的问题,我认为 Luca Bruno (lethalman) 有一个 great explanation in his Nix Pill series. As to why we know it's there, callPackage
is there because someone wrote it that way. Its usage is documented in the Nixpkgs documentation。
回答你的最后一个问题:是的,你可以用你建议的表达式替换它,但是你需要在 default.nix 中做一点改变,因为函数需要忽略它不需要的所有属性来自 haskellPkgs
。您可以通过将 ...
添加到参数列表来做到这一点,如下所示:
{ mkDerivation, base, stdenv, ... }:
手册中GNU Hello的nix表达式,就是这个:
{ stdenv, fetchurl, perl }: 1
stdenv.mkDerivation { 2
name = "hello-2.1.1"; 3
builder = ./builder.sh; 4
src = fetchurl { 5
url = ftp://ftp.nluug.nl/pub/gnu/hello/hello-2.1.1.tar.gz;
sha256 = "1md7jsfd8pa45z73bz1kszpp01yw6x5ljkjk2hx7wl800any6465";
};
inherit perl; 6
}
您怎么知道 stdenv
、fetchurl
和 perl
在作为该 nix 表达式的参数传递的集合中?
同样在 Gabriel439/haskell-nix
的 release0.nix 中,callPackage
是做什么的?而我们如何知道 callPackage
存在于 haskellPackages
属性路径中呢?
上面还有1个release0.nix
。我猜 callPackage
就像 import
一样工作,但是当前集也作为参数传入,这是真的吗?如果是这样,我可以用这个改变表达式吗:
let
pkgs = import <nixpkgs> {};
haskellPkgs = pkgs.haskellPackages;
myPackages = import ./default.nix;
in
myPackages haskellPkgs
抱歉问题太多了!
关于你关于 callPackage
的问题,我认为 Luca Bruno (lethalman) 有一个 great explanation in his Nix Pill series. As to why we know it's there, callPackage
is there because someone wrote it that way. Its usage is documented in the Nixpkgs documentation。
回答你的最后一个问题:是的,你可以用你建议的表达式替换它,但是你需要在 default.nix 中做一点改变,因为函数需要忽略它不需要的所有属性来自 haskellPkgs
。您可以通过将 ...
添加到参数列表来做到这一点,如下所示:
{ mkDerivation, base, stdenv, ... }: