使用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
相关产品推荐
相关产品推荐

