我想使用覆盖图(即不更改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
。
有人可以帮我吗?
(import <nixpkgs> { overlays = [(self: super: { gcc = self.gcc10; })]; }).stdenv.cc
这将返回gcc-10.1.0的派生,因此可以使用。