将覆盖应用到 haskellPackages

Applying overlay to haskellPackages

我已经看到通过覆盖我们可以轻松地自定义 nixpkgs。快速 google 搜索我得到了这样的相当不错的结果,取自 :

# Creating an overlay
let overlay1 = self: super:
{
   google-chrome = super.google-chrome.override {
   commandLineArgs =
     "--proxy-server='https=127.0.0.1:3128;http=127.0.0.1:3128'";
   };
};

# Actually using it
import <nixpkgs> { overlays = [ overlay1 ]; }

但实际上我不知道如何使用覆盖修改现有的 haskell 包。我想禁用对 hasktags 的覆盖测试。求助!

经过更多挖掘,这对我有用:

self: super: {
  haskellPackages = super.haskellPackages.override {
    overrides = haskellSelf: haskellSuper: {
      hasktags = self.haskell.lib.dontCheck haskellSuper.hasktags;
    };
  };
}

并将其放在 ~/.config/nixpkgs/overlays.nix~/.config/nixpkgs/overlays/ 目录中。

上面的示例是您要在 hasktags 上禁用测试。这个想法适用于所有其他包。