我正在尝试创build一个安装nvm的.nix文件
首先,我试图添加configuration.nix里面:
system.activationScripts = { dotfiles = pkgs.lib.stringAfters [ "users" ] '' curl NVM_URL | bash '' } }
但它抱怨bash和curl没有定义….
所以我试图创build一个小的.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错误是因为在构buildsystem派生时PATH不存在curl和bash。 system.activationScripts的手动条目说:
一组在NixOS系统configuration激活时执行的shell脚本片段。 例子是更新/等,创build帐户,等等。 由于每次启动系统或运行nixos-rebuild时都会执行这些操作,所以它们是幂等快速的,这一点很重要。
所以我想这是因为你应该在system.activationScripts有最less量的代码。
cannot autocall错误表明,你写的包被调用没有它提供的参数。 处理这个问题的一般方法是使用pkgs.lib集合中的callPackage函数。 你可以find在整个nixpkgs中使用的例子。
我认为你不是用正确的方式来解决你的目标。 如果你能find现有的使用节点包的config.nix来看看结果如何,那么值得一看。 另外我注意到nix中已经支持nodePackages,所以也许可以帮助你。 IRC上的nixos频道也更有帮助。
希望有所帮助!