Skip to content

Commit

Permalink
add getting started page; enable higlightjs
Browse files Browse the repository at this point in the history
  • Loading branch information
shivaraj-bh committed Jan 20, 2024
1 parent 5670c5a commit 930aed5
Show file tree
Hide file tree
Showing 3 changed files with 82 additions and 0 deletions.
2 changes: 2 additions & 0 deletions doc/services-flake.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

page:
siteTitle: services-flake
headHtml: |
<snippet var="js.highlightjs" />
template:
# You can add your own variables here, like editBaseUrl.
Expand Down
20 changes: 20 additions & 0 deletions doc/services-flake/services.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
short-title: Services
---

# Supported services

>[!warning]
> This list denotes the progress of documentation, not implementation. See full list of implemented services at [gh].
- [ ] Apache Kafka
- [ ] Elasticsearch
- [ ] MySQL
- [ ] Nginx
- [ ] PostgreSQL
- [ ] Redis
- [ ] Redis Cluster
- [ ] Zookeeper
- [ ] ...

[gh]: https://github.com/juspay/services-flake
60 changes: 60 additions & 0 deletions doc/services-flake/start.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
order: -10
---

# Getting started


## New project

Use the [template flake](https://github.com/juspay/services-flake/blob/main/example/flake.nix) provided by `services-flake`:
```sh
mkdir example && cd ./example
nix flake init -t github:juspay/services-flake
nix run
```

## Existing project

services-flake uses [process-compose-flake](https://community.flake.parts/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:
```nix
{
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 = [
inputs.process-compose-flake.flakeModule
];
perSystem = { ... }: {
process-compose."default" = {
imports = [
inputs.services-flake.processComposeModules.default
];
};
}
};
}
```
As an example, let's add the [[redis]] service to your flake:
```nix
# Inside `perSystem.process-compose.default`
{
services.redis."r1".enable = true;
}
```

Time to run the service:
```sh
nix run
```

## Under the hood

- The `services-flake` module configures [process settings](https://community.flake.parts/process-compose-flake#usage) 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 by `process-compose-flake`.
- The `process-compose-flake` module uses these settings to generate `packages.${system}.default`[^how-default] (`nix run` above, runs this package by default), which runs [process-compose](https://github.com/F1bonacc1/process-compose) with the generated YAML configuration[^sample-config].

[^how-default]: `default` is the name of the process group that is derived from `process-compose.<name>` in `perSystem.process-compose`.

[^sample-config]: See the example configuration from the [getting started](https://f1bonacc1.github.io/process-compose/intro/) section of the process-compose docs.

0 comments on commit 930aed5

Please sign in to comment.