Nix:如何使用全局覆盖覆盖stdenv.cc?

问题描述 投票:2回答:1

我想使用覆盖图(即不更改nixpkgs)来将stdenv.cc覆盖为特定的GCC版本(不一定在nixpkgs中)。有办法吗?

这样的覆盖会导致无限递归(因为包gcc49具有stdenv作为输入):

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

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

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

有人可以帮我吗?

nix nixos nixpkgs
1个回答
0
投票
(import <nixpkgs> { overlays = [(self: super: { gcc = self.gcc10; })]; }).stdenv.cc

这将返回gcc-10.1.0的派生,因此可以使用。

© www.soinside.com 2019 - 2024. All rights reserved.