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

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管理依赖并编译:

  1. 创建default.nix文件:
{ pkgs ? import <nixpkgs> {} }:
pkgs.stdenv.mkDerivation {
  name = "purescript-hello-world";
  src = ./.;
  buildInputs = [
    pkgs.purescript
    pkgs.nodejs
  ];
  buildPhase = ''
    purs compile src/**/*.purs
  '';
}
  1. 执行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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:52:34