如何将我的 Haskell 堆栈构建推送到 Cachix

How to push my Haskell Stack build to Cachix

我使用 Stack 做了一些后端。

当我执行 stack build --nix 时,我的 Stack 项目成功了,它似乎在构建可执行文件的本地项目缓存目录中创建了一个 nix 包。 (.stack-work/install/x86_64-osx-<some sha1>)

如何在 Cachix 上缓存它? Cachix 文档说 nix-build | cachix push 但我不能,因为我使用的是 stack build

仅供参考,我的最终目标是 运行 它在 AWS 上并通过 Cachix 交付包裹。

stack build --nix 仅使用 Nix 获取编译器和系统依赖项。 Haskell 构建仍然是 运行 作为用户,而不是在 Nix 中,因此它们不会生成您可以推送的存储路径。

您需要编写一个 Nix 表达式来构建您的项目。对于堆栈,我推荐 haskell.nix.

它确实在很大程度上依赖于“从推导中导入”。如果你需要一个 CI 对此有很好的支持,我推荐 Hercules CI。 (完全透明:我创造了它)