NixOS下Spago安装PureScript依赖失败:Git路径错误求助
解决NixOS上Spago依赖安装路径错误的问题
一、核心修复步骤
1. 彻底重置Spago项目与缓存
执行以下命令清理所有旧配置和缓存文件,生成干净的初始项目结构:
rm -rf .spago spago.dhall packages.dhall .psc-package node_modules spago init --force
--force参数会强制覆盖现有配置,避免残留配置干扰依赖安装路径。
2. 修正Git目录识别配置
NixOS环境中Git的异常配置可能导致Spago克隆路径错误,执行以下命令移除冲突配置:
git config --global --unset core.worktree git config --local --unset core.worktree
3. 调整shell.nix环境配置
修改shell.nix,确保Spago在纯净环境中运行,移除可能干扰的shellHook:
{ pkgs ? import <nixpkgs> {} }: pkgs.mkShell { buildInputs = [ pkgs.spago pkgs.purescript pkgs.nodejs ]; shellHook = ""; }
重新执行nix-shell进入环境后,再运行spago install。
4. 强制指定Spago缓存目录
如果上述方法无效,手动设置缓存路径强制依赖安装到正确位置:
export SPAGO_CACHE_DIR=$(pwd)/.spago spago install
二、替代方案:用Nix直接构建PureScript项目
若Spago问题持续,可跳过Spago,直接通过Nix管理依赖并编译:
- 创建
default.nix文件:
{ pkgs ? import <nixpkgs> {} }: pkgs.stdenv.mkDerivation { name = "purescript-hello-world"; src = ./.; buildInputs = [ pkgs.purescript pkgs.nodejs ]; buildPhase = '' purs compile src/**/*.purs ''; }
- 执行
nix-build完成编译,编译产物在result目录中。
三、版本适配建议
当前Spago 0.21.0与PureScript 0.15.15兼容,也可尝试升级Spago到最新稳定版(如0.22.x),在shell.nix中指定版本:
pkgs.spago.overrideAttrs (old: { version = "0.22.0"; src = pkgs.fetchFromGitHub { owner = "purescript"; repo = "spago"; rev = "v0.22.0"; sha256 = "替换为对应版本的哈希值"; }; })
内容的提问来源于stack exchange,提问作者mherzl
相关产品推荐
相关产品推荐

