NixOS-like services for Nix flakes [maintainer=@shivaraj-bh,@srid]
767
stars
710
commits
Nix
primary language
Sep 11, 2026
updated
services-flake provides declarative, composable and reproducible services for Nix development
environment, as a process-compose-flake
module (based on flake-parts). It enables users to have NixOS-like services
on macOS and Linux.

services-flake is designed to solve the following problems:
Consider a scenario where we are juggling two projects, located at ~/code/foo and ~/code/bar.
The foo project integrates postgres and nginx, while bar encompasses postgres, pgAdmin, and
kafka. It's crucial that the postgres data remains segregated across these projects. Additionally,
the bar project is designed to facilitate multiple instances of postgres. Both projects are
equipped with a flake app, streamlining the launch of their respective service stacks. Consequently,
anyone using a Linux or macOS system can effortlessly clone either project and execute
nix run .#services to activate the full suite of services without the need for manual
configuration.
See https://community.flake.parts/services-flake/start
List of supported services is available at https://community.flake.parts/services-flake/services
| services-flake | devenv services | |
|---|---|---|
| macOS support | ✔️ | ✔️ |
| Pure Flakes | ✔️ | ✖️1 |
| Services as flake apps | ✔️ | ✖️2 |
| Multiple instances of a service | ✔️ | ✖️3 |
| Share services | ✔️ | ✖️4 |
| No coupling | ✔️ | ✖️5 |
Want to compare with other tools? Let us know.
See https://community.flake.parts/services-flake/datadir
To discuss the project, please join our Zulip or post in Github Discussions.
See https://community.flake.parts/services-flake/contributing
Thanks to the devenv project, which originally inspired this project to provide the same for Nix flake users.
Devenv's flakes integration requires you use run
the nix shell in impure mode by passing --impure. ↩
services-flake produces a flake app that you can run using the Nix command (nix run) outside
of the devShell, whereas with devenv you must use devenv's CLI, devenv up, inside of devShell.
See here. ↩
services-flake allows you to configure multiple instances of the same service, whereas
devenv does not. ↩
services-flake is built on top of flake-parts, thus you may share your
service and process modules for re-use across flakes (see example),
whilst making them general enough for customization based on the module system. With devenv, as
far as we can ascertain, you can only share whole devenv configuration as modules. See
here. ↩
service-flake exposes
process-compose-flake modules for
each service, which can be reused as long as your project is using flake-parts. With devenv,
decoupling is not possible (nor
prioritized in future)
unless you buy into the whole devenv ecosystem. ↩
(top 30 of 37)
Nix
99.2%
NixOS-like services for Nix flakes [maintainer=@shivaraj-bh,@srid]
767
stars
710
commits
Nix
primary language
Sep 11, 2026
updated
services-flake provides declarative, composable and reproducible services for Nix development
environment, as a process-compose-flake
module (based on flake-parts). It enables users to have NixOS-like services
on macOS and Linux.

services-flake is designed to solve the following problems:
Consider a scenario where we are juggling two projects, located at ~/code/foo and ~/code/bar.
The foo project integrates postgres and nginx, while bar encompasses postgres, pgAdmin, and
kafka. It's crucial that the postgres data remains segregated across these projects. Additionally,
the bar project is designed to facilitate multiple instances of postgres. Both projects are
equipped with a flake app, streamlining the launch of their respective service stacks. Consequently,
anyone using a Linux or macOS system can effortlessly clone either project and execute
nix run .#services to activate the full suite of services without the need for manual
configuration.
See https://community.flake.parts/services-flake/start
List of supported services is available at https://community.flake.parts/services-flake/services
| services-flake | devenv services | |
|---|---|---|
| macOS support | ✔️ | ✔️ |
| Pure Flakes | ✔️ | ✖️1 |
| Services as flake apps | ✔️ | ✖️2 |
| Multiple instances of a service | ✔️ | ✖️3 |
| Share services | ✔️ | ✖️4 |
| No coupling | ✔️ | ✖️5 |
Want to compare with other tools? Let us know.
See https://community.flake.parts/services-flake/datadir
To discuss the project, please join our Zulip or post in Github Discussions.
See https://community.flake.parts/services-flake/contributing
Thanks to the devenv project, which originally inspired this project to provide the same for Nix flake users.
Devenv's flakes integration requires you use run
the nix shell in impure mode by passing --impure. ↩
services-flake produces a flake app that you can run using the Nix command (nix run) outside
of the devShell, whereas with devenv you must use devenv's CLI, devenv up, inside of devShell.
See here. ↩
services-flake allows you to configure multiple instances of the same service, whereas
devenv does not. ↩
services-flake is built on top of flake-parts, thus you may share your
service and process modules for re-use across flakes (see example),
whilst making them general enough for customization based on the module system. With devenv, as
far as we can ascertain, you can only share whole devenv configuration as modules. See
here. ↩
service-flake exposes
process-compose-flake modules for
each service, which can be reused as long as your project is using flake-parts. With devenv,
decoupling is not possible (nor
prioritized in future)
unless you buy into the whole devenv ecosystem. ↩
(top 30 of 37)
Nix
99.2%