nix-gitlab-ci/docs/usage.md
technofab cf80010d07 docs: write docs & improve tooling
Squashed commit of the following:

commit 86eadd3ec42b7bce0dc5716d65798af95d0d8cbc
Author: technofab <admin@technofab.de>
Date:   Fri May 2 17:10:33 2025 +0200

docs(README): fix built with nix badge

commit f50057da69e89974f17bc37b5e140b2ef9f817f6
Author: technofab <admin@technofab.de>
Date:   Fri May 2 16:09:00 2025 +0200

ci: change back rule so docs only get deployed on main

commit ce02b043f4bd83c36285e5620e71701fc3bcc998
Author: technofab <admin@technofab.de>
Date:   Fri May 2 16:08:10 2025 +0200

docs: write docs and improve formatter etc.

commit e996b23cf877d8021759b782aa5996f5e2bf12ac
Author: technofab <admin@technofab.de>
Date:   Fri May 2 16:07:56 2025 +0200

docs: update README

commit 650f97b5608c32cf6cf66cc3fdd0965dc42e4860
Author: technofab <admin@technofab.de>
Date:   Wed Apr 23 21:05:14 2025 +0200

docs: add favicon

commit 67e1bfecbcaf0b8f7dad2eecfaccf774cc560874
Author: technofab <admin@technofab.de>
Date:   Wed Apr 23 20:53:44 2025 +0200

docs: initial setup
2025-05-02 17:30:53 +02:00

768 B

Usage

To create a basic pipeline, configure it by setting ci in perSystem. The schema is similar to the .gitlab-ci.yml, only jobs are defined differently:

ci = {
  # Nix GitLab CI specific config, see `configType` in `flakeModule.nix`
  config = {};
  jobs = {
    "job-a" = {};
    "job-b" = {};
  };
};

For every job, there are a couple of settings you can adjust aswell:

"job-a" = {
  # see `jobType` in `flakeModule.nix`
  nix = {
    enable = true; # is this a nix-based job?
    deps = []; # dependencies to install for this job
    # for gitlab runner cache:
    enable-runner-cache = false;
    runner-cache-key = "";
  };
};

Since V2 multiple pipelines are supported. See Multiple Pipelines for more.