【问题标题】:Loading dependencies from nixpkgs-unstable with nix-shell使用 nix-shell 从 nixpkgs-unstable 加载依赖项
【发布时间】:2017-03-24 18:54:38
【问题描述】:

我在 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 nixos


    【解决方案1】:

    欢迎与nix-envNIX_PATH 长期混淆。明确指出,nix-env 不使用 NIX_PATH,这使得它(我认为)是唯一不尊重 NIX_PATH 的 Nix 工具。

    所以,这里的实际问题是nix-env,而不是nix-shell。我将在 Nix 错误跟踪器上发布一堆关于此的问题:

    现在,我正在使用这个解决方法:

    所以现在您可以看到,这不是一种解决方法。始终指定您想使用的确切 Nixpkg 是一个好习惯:您的根频道版本、您的频道版本、上游远程频道版本、本地 git checkout 或固定 git 版本。

    【讨论】:

      【解决方案2】:

      要完成另一个答案,这是我刚刚找到的一个很好的参考资料,它解释了NIX_PATH 以及nix-env 不使用它的事实:http://lethalman.blogspot.fr/2014/09/nix-pill-15-nix-search-paths.html

      【讨论】:

        猜你喜欢
        • 2017-07-30
        • 2018-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-05
        • 2013-11-18
        • 2016-10-21
        相关资源
        最近更新 更多