garnix-io/garnix-ci
{ "createdAt": "2026-05-27T17:48:52Z", "defaultBranch": "main", "description": "CI and hosting for nix-based, flakified github repos", "fullName": "garnix-io/garnix-ci", "homepage": null, "language": "Haskell", "name": "garnix-ci", "pushedAt": "2026-06-02T00:04:45Z", "stargazersCount": 397, "topics": [], "updatedAt": "2026-06-05T15:11:16Z", "url": "https://github.com/garnix-io/garnix-ci"}Garnix
Section titled “Garnix”Garnix is a CI service for nixified, flake-based github repos.
Running Garnix locally in VMs
Section titled “Running Garnix locally in VMs”You can spin up a couple of qemu VMs that provide a full Garnix deployment with:
nix run -L .#examples_spinUpVmsThis will use nixos-compose.
If you run:
nixos-compose tapnixos-compose statusYou should then be able to point your browser to the ip address of the exampleGarnixServer to see the hosted ci.
And there’s an admin page on /garnix-admin that is useful for some development tasks.
Setting up a GitHub app
Section titled “Setting up a GitHub app”You will need a github app for Garnix to work, both for production and for testing.
On the /garnix-admin page you can create one by pressing the ‘Submit to GitHub’ button.
That will give you a bunch of credentials that you’ll have to put into the /secrets/dev.yaml file by running
sops edit secrets/dev.yamlThen you have to enable your new GitHub app on a repo that you want to build through the GitHub ui. Finally, you can submit a test build, with something like this:
curl -v \ -XPOST \ http://$(nixos-compose ip exampleGarnixServer)/api/build/submit \ -H 'Content-Type: application/json' \ -d '{ "owner": "garnix-io", "repo": "comment", "testCommit": "8b2b57d91dd1f4d094bb944a0a0ef65319a5663f" }'And then you can see the build under /repo/garnix-io/comment, for example.
Developing the frontend
Section titled “Developing the frontend”You can run the frontend in development mode against a backend in a VM like this:
nixos-compose up -vcd frontendnpm run devThen point your browser to localhost:3000.
Acknowledgments
Section titled “Acknowledgments”We erased git history when open sourcing, so we’ll be explicit here about our debt to everyone who contributed before the project became open source:
- Alex David
- Evie Ciobanu
- Greg Pfeil
- Jean-François Roche
- Julian Kirsten Arni
- Ramses de Norre
- Sönke Hahn
Thanks very very much!