explaingit

garnix-io/garnix-ci

Analysis updated 2026-05-18

349HaskellAudience · developerComplexity · 5/5Setup · hard

TLDR

Garnix is a continuous integration and hosting service built specifically for GitHub repositories that use the Nix package manager's flake format.

Mindmap

mindmap
  root((garnix ci))
    What it does
      Builds Nix flakes
      Runs on push
      Hosts build outputs
    Tech stack
      Haskell
      Nix
      GitHub App
    Local development
      qemu virtual machines
      Web interface
      Admin panel
    Setup steps
      Create GitHub App
      Submit test build
    Frontend
      Live reload mode

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Automatically build and test GitHub repositories that use Nix flakes on every push.

USE CASE 2

Host the outputs of successful Nix builds instead of only verifying they pass.

USE CASE 3

Run a local Garnix development environment inside virtual machines for contributing.

What is it built with?

HaskellNixqemu

How does it compare?

garnix-io/garnix-cipsibi/shell-conduitpsibi/yesod-postgres
Stars349964
LanguageHaskellHaskellHaskell
Last pushed2020-06-202018-08-24
MaintenanceDormantDormant
Setup difficultyhardmoderatemoderate
Complexity5/53/53/5
Audiencedeveloperdeveloperdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · hard Time to first run · 1day+

Requires setting up a GitHub App and virtual machines via qemu to run a working local instance.

In plain English

Garnix is a continuous integration (CI) service built specifically for GitHub repositories that use Nix flakes. Nix is a package manager and build system that describes software environments in a very precise, reproducible way. A "flake" is a specific format for Nix projects that makes them easier to share and build consistently across machines. Garnix reads these flake definitions and automatically builds and tests the code whenever changes are pushed. The project is written in Haskell and is now open source. In addition to running CI builds, Garnix also handles hosting, meaning it can serve the outputs of successful builds, not just verify that they pass. For developers who want to run Garnix locally or contribute to it, the README explains how to spin up virtual machines on their computer using a tool called qemu. A helper command sets up a small simulated Garnix deployment that includes a web interface for monitoring builds and an admin panel for development tasks. Setting up a working instance also requires creating a GitHub App, which is how Garnix authenticates with GitHub to receive notifications about new commits and report build results back to pull requests. The README walks through that setup process and shows how to submit a test build via a command-line request. Frontend development is also documented: you can run the web interface in a live-reload development mode while the backend runs inside a virtual machine. The acknowledgments section notes that git history was cleared when the project was open-sourced, and lists the contributors who worked on it before that point.

Copy-paste prompts

Prompt 1
Walk me through setting up a GitHub App for Garnix to authenticate with my repository.
Prompt 2
Explain how Garnix uses qemu virtual machines for local development.
Prompt 3
Help me submit a test build to a local Garnix instance using the command line.
Prompt 4
Show me how to run the Garnix frontend in live reload mode.

Frequently asked questions

What is garnix-ci?

Garnix is a continuous integration and hosting service built specifically for GitHub repositories that use the Nix package manager's flake format.

What language is garnix-ci written in?

Mainly Haskell. The stack also includes Haskell, Nix, qemu.

How hard is garnix-ci to set up?

Setup difficulty is rated hard, with roughly 1day+ to a first successful run.

Who is garnix-ci for?

Mainly developer.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.