【问题标题】:Nix: How to override stdenv.cc with overlay globally?Nix:如何用全局覆盖覆盖 stdenv.cc?
【发布时间】:2020-07-28 00:52:47
【问题描述】:

我想使用覆盖(即不更改 nixpkgs)全局覆盖 stdenv.cc 到特定的 GCC 版本(不一定在 nixpkgs 中)。有没有办法做到这一点?

这样的叠加会导致无限递归(因为包 gcc49stdenv 作为输入):

self: super:
{
  stdenv = super.overrideCC super.stdenv super.gcc49;
}

全局更改stdenv.cc 的正确方法是什么?

import nixpkgs 中手动设置stdenv = ... 是不可行的,因为我想替换cc 不仅在构建/使用nix 表达式时,而且在例如nix-shell -p package.

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: nix nixos nixpkgs


    【解决方案1】:
    (import <nixpkgs> { overlays = [(self: super: { gcc = self.gcc10; })]; }).stdenv.cc
    

    这将返回 gcc-10.1.0 的派生,因此它可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-18
      • 2014-09-27
      • 2019-05-21
      • 2013-05-27
      • 2019-07-14
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      相关资源
      最近更新 更多