使用 nix-shell 从 nixpkgs-unstable 加载依赖项
Loading dependencies from nixpkgs-unstable with nix-shell
我在 NixOS 16.09 上,我想使用目前仅在 nixpkgs-unstable / nixos-unstable 中的软件包。
使用 nix-channel --add
,我能够将 nixpkgs-unstable 添加到我的(用户)频道并使用它来安装一些带有 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-unstable 通道。
现在,我正在使用此解决方法:
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
?也不太好看
欢迎与 nix-env
和 NIX_PATH
长期混淆。明确指出,nix-env
不使用 NIX_PATH,这使它(我认为)成为唯一不尊重 NIX_PATH
.
的 Nix 工具
因此,实际问题出在 nix-env
,而不是 nix-shell
。我将 post 关于 Nix 错误跟踪器的一系列问题:
- https://github.com/NixOS/nix/issues/993
- https://github.com/NixOS/nix/issues/1067
- https://github.com/NixOS/nix/issues/886
Right now, I using this workaround:
现在您可以看到,这不是解决方法。始终指定您想使用的确切 Nixpkgs 是一个好习惯:您的根频道版本、您的频道版本、上游远程频道版本、本地 git 签出或固定 git 版本。
为了完成另一个答案,这是我刚刚找到的一个很好的参考,它解释了 NIX_PATH
以及 nix-env
不使用它的事实:http://lethalman.blogspot.fr/2014/09/nix-pill-15-nix-search-paths.html
我在 NixOS 16.09 上,我想使用目前仅在 nixpkgs-unstable / nixos-unstable 中的软件包。
使用 nix-channel --add
,我能够将 nixpkgs-unstable 添加到我的(用户)频道并使用它来安装一些带有 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-unstable 通道。
现在,我正在使用此解决方法:
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
?也不太好看
欢迎与 nix-env
和 NIX_PATH
长期混淆。明确指出,nix-env
不使用 NIX_PATH,这使它(我认为)成为唯一不尊重 NIX_PATH
.
因此,实际问题出在 nix-env
,而不是 nix-shell
。我将 post 关于 Nix 错误跟踪器的一系列问题:
- https://github.com/NixOS/nix/issues/993
- https://github.com/NixOS/nix/issues/1067
- https://github.com/NixOS/nix/issues/886
Right now, I using this workaround:
现在您可以看到,这不是解决方法。始终指定您想使用的确切 Nixpkgs 是一个好习惯:您的根频道版本、您的频道版本、上游远程频道版本、本地 git 签出或固定 git 版本。
为了完成另一个答案,这是我刚刚找到的一个很好的参考,它解释了 NIX_PATH
以及 nix-env
不使用它的事实:http://lethalman.blogspot.fr/2014/09/nix-pill-15-nix-search-paths.html