mirror of
https://github.com/juspay/services-flake.git
synced 2024-09-11 04:15:36 +03:00
2.6 KiB
2.6 KiB
order |
---|
-10 |
Getting started
New project
Use the template flake provided by services-flake
:
mkdir example && cd ./example
nix flake init -t github:juspay/services-flake
nix run
Existing project
services-flake uses process-compose-flake to manage the services. Let's first import the flake-parts
modules provided by process-compose-flake
and services-flake
in your flake:
{
# 1. Add the inputs
inputs.process-compose-flake.url = "github:Platonic-Systems/process-compose-flake";
inputs.services-flake.url = "github:juspay/services-flake";
...
outputs = inputs:
inputs.flake-parts.lib.mkFlake { inherit inputs; } {
imports = [
# 2. Import the flake-module
inputs.process-compose-flake.flakeModule
];
perSystem = { ... }: {
# 3. Create the process-compose configuration, importing services-flake
process-compose."myservices" = {
imports = [
inputs.services-flake.processComposeModules.default
];
};
}
};
}
As an example, let's add the redis
service to your flake:
# Inside `perSystem.process-compose."myservices"`
{
services.redis."r1".enable = true;
}
Time to run the service:
nix run .#myservices
Under the hood
- The
services-flake
module configures process settings for a service. In simple terms, it handles stuff like health checks, restart policies, setup scripts, etc. by using the easy to configure APIs provided byprocess-compose-flake
. - The
process-compose-flake
module uses these settings to generatepackages.${system}.myservices
1 (nix run .#myservices
above, runs this package by default), which runs process-compose with the generated YAML configuration2.
Examples
- In Nammayatri, services-flakes is used to run the local services stack (which used to be run with docker-compose). Read about it in this blog post.
-
myservices
is the name of the process group that is derived fromprocess-compose.<name>
inperSystem.process-compose
. ↩︎ -
See the example configuration from the getting started section of the process-compose docs. ↩︎