Provides NixOS-like declarative services for Nix flakes, enabling reproducible development environments on macOS and Linux.
services-flake is a Nix module that provides declarative, composable services for development environments using Nix flakes. It solves the problem of running and managing external services like databases and web servers with project-specific configuration and data isolation across macOS and Linux. It enables reproducible service stacks that can be launched via flake apps.
Nix developers and teams working on multiple projects who need isolated, reproducible service environments without manual configuration. It's particularly useful for those using Nix flakes and flake-parts in their workflow.
Developers choose services-flake for its pure flakes integration, ability to run multiple service instances, and decoupled design that avoids ecosystem lock-in. It offers better modularity and sharing capabilities compared to alternatives like devenv.
NixOS-like services for Nix flakes [maintainer=@shivaraj-bh]
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses Nix flakes and flake-parts for reproducible environments without impure modes, as highlighted in the comparison with devenv's requirement for --impure flag.
Runs services natively on both macOS and Linux, enabling consistent development setups across teams without platform-specific adjustments.
Allows configuring multiple instances of the same service within a project, such as running several PostgreSQL databases for testing different scenarios.
Ensures service data remains segregated across different projects, preventing conflicts when working on multiple codebases simultaneously.
Exposes services as flake apps launchable via `nix run` commands, simplifying the startup of entire service stacks outside of devShells.
Relies heavily on Nix flakes and the flake-parts module system, making it inaccessible for developers unfamiliar with Nix's declarative configuration and steep learning curve.
The curated list of supported services may not cover all needs, requiring custom module development for unsupported services, which adds complexity.
Documentation is hosted on an external community site (community.flake.parts), which might be less integrated or maintained compared to built-in docs, potentially hindering onboarding.
While avoiding ecosystem lock-in, the decoupled design forces users to manage and integrate multiple modules themselves, increasing initial setup time compared to all-in-one tools.
services-flake is an open-source alternative to the following products: