首页 > 解决方案 > Nix:如何用全局覆盖覆盖 stdenv.cc?

问题描述

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

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

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

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

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

有人可以帮我弄这个吗?

标签: nixnixosnixpkgs

解决方案


(import <nixpkgs> { overlays = [(self: super: { gcc = self.gcc10; })]; }).stdenv.cc

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


推荐阅读