If you spot an inaccuracy in this table, please let us know .
NixCI reads your
flake.nix
and automatically discovers what to build.
All
configuration
is optional.
If it builds with
nix flake check
locally, it builds on NixCI.
GitLab CI requires a
.gitlab-ci.yml
that specifies jobs, stages, images, and scripts.
NixCI automatically discovers all flake outputs and creates build jobs for them.
NixCI uses standard Nix flakes. Your build definition is your flake.nix, which works everywhere Nix does.
GitLab CI uses GitLab-specific YAML pipeline files.
Every job on NixCI can be reproduced locally with a single command. NixCI shows you the exact command for each job, so when CI fails, you can start fixing it immediately on your machine.
GitLab CI pipelines run in Docker containers with specific images and variables. Reproducing a failure means manually approximating the pipeline environment.
NixCI provides the exact command to reproduce each job locally, including for impure tests and deployments.
NixCI works with GitHub , GitLab , and Codeberg . One CI system across all your forges.
NixCI supports self-hosted GitHub Enterprise instances.
NixCI integrates with Codeberg.org via webhooks and commit status updates.
NixCI supports self-hosted Forgejo instances.
A single NixCI installation can serve GitHub, GitLab, and Codeberg repositories simultaneously.
NixCI integrates with GitLab.com via webhooks and commit status updates.
NixCI supports self-hosted GitLab instances.
NixCI caches automatically without any configuration. Every build result is cached and subsequent builds pull from the cache to skip work that's already been done.
GitLab's built-in cache is file-based and not designed for Nix store paths. Using a Nix binary cache requires configuring a cache server and managing signing keys in CI variables.
NixCI has built-in Cachix support. Just add your Cachix cache name to your configuration.
GitLab CI can use Cachix, but it requires manual setup.
NixCI can push build results to your own binary cache via SSH.
GitLab CI can push to your own binary cache, but it requires manual setup.
NixCI's hosted workers have 16 vCPUs and 64 GB of RAM, billed per second of actual build time. You can also bring your own workers with whatever hardware you choose.
GitLab's default shared runners have 2 vCPUs and 8 GB of RAM. Larger runners (up to 32 vCPUs) are available on Premium and Ultimate tiers.
NixCI has built-in support for continuous deployment and impure tests with access to secrets and the network.
In GitLab CI, all tests run with full network and secret access by default. There is no distinction between pure and impure tests.
NixCI automatically runs deployment after all builds and tests pass, with no manual dependency declaration needed.
GitLab CI supports deployment, but you have to manually declare which jobs must pass before deployment runs.
NixCI can be fully self-hosted on your own infrastructure, including the leader, workers, and cache. It also works with self-hosted forges like GitLab and Forgejo.
GitLab is self-hostable. You can run your own GitLab instance with runners.
NixCI does not have FlakeHub integration. FlakeHub only allows publishing from trusted platforms .
GitLab CI has official FlakeHub support for publishing flakes.