2016-11-10 76 views
5

我在NixOS 16.09上,我想使用當前僅在nixpkgs-unstable/nixos-unstable中的程序包。使用nix-shell從nixpkgs-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不穩定通道。

現在,我使用此解決方法:

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?它看起來也不漂亮。

回答

6

歡迎與nix-envNIX_PATH長期混淆。明確指出,nix-env不使用NIX_PATH,這使得它(我認爲)是唯一不尊重NIX_PATH的Nix工具。

所以,實際的問題是nix-env在這裏,而不是nix-shell。眼下

,我用這個解決辦法:我會把有關這對尼克斯bug跟蹤一堆的問題

所以現在你可以看到,這不是一種解決方法。總是指定您想要使用的確切Nixpkgs是一個好習慣:根通道版本,通道版本,上游遠程通道版本,本地git檢出或固定git版本。

相關問題