You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用haskell.nix时如何禁止patchPhase以使用本地google-oauth2库

如何在haskell.nix中禁用google-oauth2包的patchPhase

要解决这个问题,你只需要在flake.nix的包定义中覆盖google-oauth2的patchPhase属性,将其设为空字符串,这样构建过程就不会执行任何补丁操作,直接使用你本地src里的原始cabal配置。

具体修改方式如下:

在你调用pkgs.haskell-nix.project的部分,添加overrides配置来修改google-oauth2的构建属性:

packages = pkgs.haskell-nix.project {
  # 你的现有配置(比如src、submodules等)
  src = ./.;
  submodules = true;

  overrides = self: super: {
    google-oauth2 = super.google-oauth2.overrideAttrs (oldAttrs: {
      # 清空patchPhase,完全禁用所有补丁操作
      patchPhase = "";
    });
  };
};

这样设置后,haskell.nix构建google-oauth2时会跳过所有补丁步骤,直接使用你本地升级到0.4.0.0版本的google-oauth2.cabal文件,保留其中正确的mtl依赖声明,自然就能找到Control.Monad.Except模块了。

如果之后你需要保留部分补丁但只移除替换cabal文件的那个,可以针对性修改patchPhase的内容,但直接清空是最直接解决当前问题的方式。

内容的提问来源于stack exchange,提问作者zichao liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 17:22:32