How It Works

When NixCI runs for a commit, it goes through three stages to evaluate your Nix flake and run jobs.

Stage 1: Configure

Every suite starts with a configure run in which NixCI reads any optional configuration that the user may have put in the repository.

It is also at this stage that NixCI determines which system s to run for, and schedules an evaluation run for each.

See the page on per-commit in-repo Configuration for more information about how to optionally configure NixCI.

Stage 2: Evaluation

Next, NixCI evaluates the flake.nix on each of the chosen system s.

During evaluation, NixCI discovers which flake outputs exist and schedules build jobs for each. See the page on What Gets Built for details on which outputs NixCI builds.

Stage 3: Builds, tests, and deploys

Once all the jobs have been created in the evaluation stage, NixCI runs the jobs in parallel.

Deploy jobs are only run after all the other jobs in a suite have passed.

See the page on impure tests and continuous deployment for more details about how to configure those.