Announcing Nixkite - Buildkite pipelines using the NixOS module system

Hey there! First post here ever.

At work we’re using Buildkite for CI - https://buildkite.com - and I’m also using it personally for my open source projects (it’s free for open source and students, just have to ask for it).

I’ve gone through several iterations of pipeline generation using Nix by now but finally I decided to try using the NixOS module system. The result is Nixkite, a somewhat opinionated pipeline generator in that it only supports the relatively new dag versions of Buildkite steps (eg. command, trigger and input steps).

Using the dag versions means we can handle dependencies very nicely through the NixOS module system. I’m personally using this for my own NixOS machine configurations here: GitHub - johnae/nixos-configuration: I'm not using this anymore as I've moved completely to Nix Flakes: see https://github.com/johnae/world and also in some private repos as well.

If you’re interested in Nixkite (I know some within the community are using Buildkite at least), you can find it here: GitHub - johnae/nixkite: Nixkite is a Buildkite pipeline generation tool using the NixOS module system.

Feedback and anything else is most welcome. Thanks!

7 Likes

Nice!

I’d really recommend writing a tutorial so that anyone trying it out can easily see what they are getting into.

1 Like

Thanks for the feedback @domenkozar - I’ll look into doing so.

Hi Johnae, this looks great. We also use buildkite at work - we use it to deploy nixops deployments. However we just use it in the traditional way - shell scripts. This DAG approach through nix might be a good way of improving some of the parts that annoy me (mainly needing to repeat certain shell commands to ensure they are not outdated at the time of unblocking)

Thanks,

Joe