When I grow up, I want to write like this:
https://iankduncan.com/engineering/2026-02-05-github-actions-killing-your-team/
When I grow up, I want to write like this:
https://iankduncan.com/engineering/2026-02-05-github-actions-killing-your-team/
@Migueldeicaza nice shoutout to garnix and nix
@Migueldeicaza A build system that was actually pleasant to work with was @nuke by @matkoch
It‘s for the #dotnet #csharp world. It made a lot of right design choices.
OMG:
"Microsoft is where ambitious developer tools go to become enterprise SKUs. The original engineers have long since been reorged into other divisions or ground down into product managers..."
@alexmdunne no lies detected
@Migueldeicaza There is a followup and it gets even better :D
https://www.iankduncan.com/engineering/2026-02-06-bash-is-not-enough
@fleaz @Migueldeicaza But, but I Like Bash! 😉 Seriously, GitHub Actions is a PITA.
@sjvn @Migueldeicaza The "but i like bash" person in my team wrote a 800+ LOC
Behemoth that updates our production k8s clusters :D
@fleaz @sjvn @Migueldeicaza
But have you got an automated build system that relies on numerous scripts from at least two different repositories running as cron jobs on multiple hand-configured servers?
Oh, and written in several scripting languages, of which bash is only one.
@GerardThornley @fleaz @Migueldeicaza Messy. What are they using?
@Migueldeicaza I was not expecting this post to provide the most compact, compelling argument for Nix I've ever seen
@mcc now I need to figure out what nix is
@Migueldeicaza You remember Gentoo right?
Arch is Gentoo with better documentation.
Nix is Arch but they made the build/packaging system more systematic and also set it up so you can use it standalone as a build system on non-NixOS systems.
(There's also a Guix, a GNU-sponsored version of Nix which seems to be the same except, since it's GNU it uses LISP instead of the bespoke Nix configuration language and it doesn't have sponsorship relationships with United States military contractors.)
@mcc Thanks for the breakdown! So it is a full distro then?
@Migueldeicaza Nix is a combined package manager / build system. NixOS is a full Linux distribution based around Nix.
Nix® is, I have just learned by accident on Kagi, a child-safe anti-lice treatment. I cannot comment on its efficacy.
@Migueldeicaza besides the great writing, I can 100% recommend Buildkite.
We've been using it for years at work & I genuinely find it better than all CIs I tried over my DevOps career (eg Jenkins, Travis, CircleCI, TeamCity, … all of which I've loathed for all the hair pulls they gave me over the years). It's night and day. Buildkite showed me CI doesn't _have_ to suck.
Cherry on top: their support is one of the best I've ever seen, caring humans who reply fast and really help.
@aligatr can I use this for my oss projects? Might take it for a spin
@Migueldeicaza technically yes; though as the article says it's probably more suited for when you need a larger CI infra like in a company rather than solo OSS projects, as while they do have hosted workers (eg EC2), where it shines (at least in my experience at work) is when you bring your own machines and install the `buildkite-agent` in them. If you have eg a MacMini around to use for that though, worth a try!
@Migueldeicaza "You’ve upgraded the engine but you’re still driving the car that catches fire when you turn on the radio" 
@Migueldeicaza We invented fast computers so we could compile a full OS in 10 minutes. So they invented CI systems to fix that.
@Migueldeicaza
I, a simple network engineer, have lashed with GitHub actions a bit and find them fascinating. I have a working setup taken from tutorials that feels like it’s grotesquely overkill for the issue.
So for a few sites running #Hugo (a static site generator) every time the repo is updated it has to run a build. On a local machine that could be just the command “hugo” plus “Hugo deploy” or appropriate to sync files to a destination server directory.
In GitHub, every time there’s a change it has to download a fresh copy of Hugo and supporting tools, set up a VM, and execute it. This is time consuming and seems inefficient.
@Migueldeicaza I am trying (for my pet project) to use a configuration, that allows building locally just like on GitHub runner. Actually, I want GitHub to build as I would locally. I want one source of truth and tbh, it takes a lot of gun out of my pet project
@Migueldeicaza What language is this written in?
“if you’re a Nix shop, take a look at Garnix. It evaluates your flake, figures out what needs building, and builds it.”
A nix shop? Flake? It seems rough out there outside the Apple ecosphere.
@erikt @Migueldeicaza tim apple won’t protect you https://github.com/nix-darwin/nix-darwin