Nix 和 运行 的服务并停止

Nix and services to run and stop

我的主要目标不是可重现环境,而是独立环境。

我可以通过使用 docker 来实现这一点,即 docker-compose,我可以在其中描述我需​​要的服务并轻松 start/stop 它们。这样我就可以在两个不同的项目中使用两个版本的数据库,而不会污染我的 global-space 。这一切听起来不错而且闪亮,但我在 macOs 上,所有这些都特别慢。扩展到甚至无法使用。

作为 docker/containers 的一个小替代方案,人们经常提出 nix。我喜欢它的想法。你有 reproducibleisolated 环境,上面没有任何 virtualizition/containerization。凉爽的!我 可以 说过是否有任何关于服务的信息以及如何将它们与 nix 一起使用。我唯一发现的是 shellHook 这样的东西,它允许你在输入 nix shell 时做任何事情,比如启动数据库。但是如果你离开它或者你只是关闭终端,你不能自动停止它。

nix 世界中有没有什么东西可以帮助管理服务,而它有助于管理libraries/languages/frameworks?

听起来您需要流程管理器。

您或许可以在 macOS 上使用 nix-processmgmt to write service configurations that you can run with supervisord。也支持 Launchd,但如果可以避免,项目配置不应与系统配置混合。

我还没有尝试过,因为我可以使用 arion 在 NixOS 上完成我的后端工作,它使用 docker compose 作为后端。我很想知道您对 nix-processmgmt.

的看法