- Rust 69.9%
- Nix 30.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
kennel/build skipped: no services or static sites defined
CI / checks-1 (push) Failing after 1m7s
CI / checks (push) Failing after 0s
nixbot/nix-build gitea:ScottyLabs/kennel#checks.x86_64-linux.test failed
nixbot/nix-build 1 of 5 attributes failed
nixbot/nix-eval evaluation succeeded in 3m 14s (1 warning)
Signed-off-by: Anish Pallati <i@anish.land> |
||
| .forgejo | ||
| crates | ||
| nix | ||
| sites/docs | ||
| .gitattributes | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| osv-scanner.toml | ||
| README.md | ||
| secretspec.toml | ||
kennel
Kennel is the deployment platform for ScottyLabs. On every push it deploys what nixbot built and pushed to the binary cache, runs its services as systemd units and static sites through Caddy, provisions per-deployment resources, resolves secrets from OpenBao, manages DNS through Cloudflare, and serves it over HTTPS.
Every branch and open pull request gets its own deployment at {project}-{branch}.scottylabs.net, redeployed on every push and torn down when the branch or PR closes.
A project's flake.nix, built on the shared flake-parts module in this repo (nix/flake-module), defines its dev shell, its local services, its checks, and the services and sites kennel deploys. The daemon and the module are versioned together.
Internally, kennel is a single daemon that takes git webhooks and nixbot's build reports, substitutes each commit's artifact from the binary cache, deploys it, and reconciles running state against declared intent. It keeps intent in SQLite and leaves runtime state to systemd, Caddy, and Nix.
Kennel can also publish the hosts of its live deployments to a file. ricochet, a stateless OAuth2 callback relay, reads that file as its allowlist, so ephemeral previews can complete logins that identity providers won't issue wildcard redirect URIs for.
Layout
crates/kennel: the daemoncrates/kennel-config: shared types and thekennel.jsoncontractcrates/kennel-provision: resource provisioning (PostgreSQL, SQLite, Valkey, Garage)crates/entity,crates/migration: SQLite schema and SeaORM entitiesnix/flake-module: the flake-parts module projects build onnix/lib: the build helpers projects get as thehelpersmodule argumentnix/nixos.nix: NixOS module to run the daemon on a hostsites/docs: documentation (mdBook)
Adding options, checks, or build helpers is documented in nix/README.md.
License
Licensed under the GNU Affero General Public License v3.0.