Skip to main content
Determinate CI

Effortless Nix CI in GitHub Actions

Determinate CI is a complete, opinionated Nix CI workflow. Point it at your flake and it discovers and builds every output across every architecture, caches everything with FlakeHub Cache, and can publish to FlakeHub on every tag or commit.

Builds every architecture automatically

Discovers your flake's outputs and builds them across every architecture your flake supports, no matrix to hand-maintain.
Flake schemas: Understands non-standard flake outputs

Understands non-standard flake outputs

Uses flake schemas to discover and build outputs beyond the standard packages and devShells, so custom output types get built and cached too.
Flake schemas (opens in a new tab)
FlakeHub Cache Action: Caches everything with FlakeHub Cache

Caches everything with FlakeHub Cache

Every build output is pushed to FlakeHub Cache on a paid FlakeHub plan, so subsequent runs and teammates' machines skip redundant builds.
FlakeHub Cache Action
Publishing to FlakeHub: Publish to FlakeHub, if you opt in

Publish to FlakeHub, if you opt in

Publish public, unlisted, or private flakes to FlakeHub on every push to your default branch or every tag.
Publishing to FlakeHub (opens in a new tab)
Configuration options: A few lines of YAML

A few lines of YAML

Replace a hand-built matrix workflow with a single reusable workflow call, then configure runners, SSH keys, and visibility as needed.
Configuration options (opens in a new tab)
Workflow outputs: Outputs for downstream workflows

Outputs for downstream workflows

Exposes flake_name, flake_version, and precise flakerefs as workflow outputs, so dependent jobs can build on exactly what was just published.
Workflow outputs (opens in a new tab)
  • Determinate CI on GitHub

    Determinate CI on GitHub (opens in a new tab)

    The ci repository, with configuration options, advanced runner setups, and workflow outputs.

  • Determinate CI guide

    Determinate CI guide (opens in a new tab)

    A step-by-step guide to setting up Determinate CI for your flake.

Explore other Actions