我正在尝试创建一个安装 nvm 的 .nix 文件
首先,我尝试在 configuration.nix 中添加:
system.activationScripts = {
dotfiles = pkgs.lib.stringAfters [ "users" ]
''
curl NVM_URL | bash
''
}
}
但它抱怨 bash 和 curl 没有定义....
所以我尝试创建一个小的 .nix 包,
{ stdenv, fileurl };
stdenv.mkDerivation {
name="nvm-0.33.0"
builder = ./install.sh;
fileurl{
url: NVM_GIT_MASTER.zip;
};
}
但随后它抱怨`不能自动调用一个没有默认值的参数的函数{'stdenv'}
运行 nix-build --dry-run ./text,nix 后
这是怎么回事?我正在阅读 nix 页,并将头撞在墙上。
我应该认为错误是因为在构建派生时
not defined
既不存在 curl 也不存在 bash 。的手册条目说:PATH
system
system.activationScripts
system.activationScripts
所以我想出于这个原因,无论如何你都应该拥有最少的代码。该
cannot autocall
错误表明您编写的包在没有提供参数的情况下被调用。解决这个问题的正常方法是使用集合中的 callPackage 函数pkgs.lib
。您可以在整个 nixpkgs 中找到它的使用示例。我认为您没有使用 nix 正确的方法来解决您的目标。如果您可以找到使用节点包的现有 config.nix 来了解它是如何完成的,那可能值得一看。此外,我注意到nix 中已经支持 nodePackages,所以也许这可能会对您有所帮助。IRC 上的 nixos 频道也更有帮助。
希望有帮助!