Haskell 堆栈不在 Nixos 上构建 postgresql-libpq

Haskell Stack does not build postgresql-libpq on Nixos

postgresql-libpq 添加到我项目的 cabal 文件后,stack build 失败并显示以下内容:

Configuring postgresql-libpq-0.9.1.1...
setup: The program 'pg_config' is required but it could not be found.

我在 Nixos 上,pg_config 已安装并在我的 PATH 上:

$ whereis pg_config
pg_config: /nix/store/5bc6hzqkyw8dpi91sqznd3ik42mllwyz-system-path/bin/pg_config

我使用的是 stack 1.0.2,它似乎在 nixos-rebuild switch --upgrade 不稳定频道后也不会更新。这是我的错误还是其他原因?

我遇到了同样的问题,阅读 Michael Snoyman 链接的 docs 帮助了我。您需要将此添加到您的 stack.yaml:

nix:
  enable: true
  pure: false

我正在构建不属于我的包,所以我没有编辑项目特定的配置,而是将这些行添加到我的 global 配置中:~/.stack/config.yaml。或者,您可以使用命令行选项:

stack --nix --no-nix-pure build

作为 "non-pure" 构建的替代方案,您应该能够在 nix-shell 中指定所有系统依赖项以强制再现,但我没有尝试过。

我 运行 在 nixos 上使用堆栈解决了这个问题,并且在我的 stack.yaml 的 nix 块更改为以下内容时解决了这个问题。

nix:
  pure: true
  enable: true
  packages: [ postgresql ]