我在NixOS 16.09上,我想使用目前只有nixpkgs-不稳定/nixos-不稳定的包。
使用nix-channel --add,我可以将nixpkgs--不稳定的--添加到我的(用户)通道中,并使用它安装一些带有nix-env的包的最新版本。
然而,我理解nix-env依赖于用户定义的通道,而nix-shell则依赖于NIX_PATH环境变量,在我的例子中:
$ echo $NIX_PATH
nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos/nixpkgs:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels这清楚地说明了问题所在:nix-shell将使用系统范围的NixOS 16.09通道,而不是用户定义的nixpkgs-不稳定通道。
现在,我正在使用这个解决方法:
nix-shell -I nixpkgs=~/.nix-defexpr/channels/nixpkgs在我看来不太漂亮。这样做的推荐方法是什么?
是否要添加这样的内容:
export NIX_PATH="nixpkgs=~/.nix-defexpr/channels/nixpkgs:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels"我的.profile?它看起来也不太漂亮。
发布于 2016-11-11 04:48:57
欢迎来到长期与nix-env和NIX_PATH混淆的地方.明确指出,nix-env不使用NIX_PATH,这使它成为唯一不尊重NIX_PATH的Nix工具。
所以,实际的问题在于这里的nix-env,而不是nix-shell。我将在Nix bug跟踪器上发布一系列有关这方面的问题:
现在,我用这个解决办法:
所以现在你可以看到,这不是一个解决办法。最好总是指定您希望使用的确切的Nixpkgs :根通道版本、通道版本、上游远程通道版本、本地git签出版本或固定git版本。
发布于 2017-01-03 13:49:53
为了完成另一个答案,下面是我刚刚找到的一个很好的参考,它解释了NIX_PATH和nix-env不使用它的事实:http://lethalman.blogspot.fr/2014/09/nix-pill-15-nix-search-paths.html
https://stackoverflow.com/questions/40532798
复制相似问题