Updates (April 13th, 2022)
garnix now by default builds the nixosConfigurations, devShells, devShell, and defaultPackage components. We also improved our UI, and started a discord channel.
We've made some changes to the way garnix works recently that we thought we'd share.
Now building more derivations
We've just deployed a new version of garnix that changes what derivations get built. The additions are:
- defaultPackage: We're accustomed to having defaultPackage.<system> be an alias for a particular package in the packages.<system> attribute set. But a lot of people don't structure their project this way¸ meaning that until now the only thing nix build . builds might not have gotten built by garnix at all!
- devShell: We now also build the devShell, which is particularly useful in connection to the garnix cache. Relatedly:
- devShells: We now build all items in the devShells attribute.
This is in addition to the existing behavior, which builds packages, checks and nixosConfigurations. In other words: everything that was previously being build still gets built, plus the above attributes (if they are present).
The old behavior confused a lot of people.
The fact that we now build defaultPackage and devShell mean that if you, like me, alias those to something in packages or devShells, you might get the same derivation showing up with two different names in your builds. But they only get built once, of course.
Nicer logs
A week or two ago, we changed how logs are displayed on the site. Previously you'd get the entirety of the logs as text. Now we split the logs into sections, corresponding to nix build phases, and keep them folded.
buildPhase
The spring lingers on in the scent of a damp log rotting in the sun
checkPhase
that was a haiku but imagine if it were all of the build logs instead: endless streams of text you'd want to hide [from] sometimes
Usually you'd have more phases, of course. (Sönke Hahn helped with this one.)
Small bug fixes
Like filtering out some irrelevant log lines, and getting log outputs in more cases.
We have a new discord server...
Link. If you have questions about garnix, you can now use this as a more synchronous channel. Or just hang out.
And we have a new blog!
This is it. You're reading it right now.
Continue Reading
We've added incremental compilation to garnix. In this blog, we discuss prior art on incremental compilation in Nix, and describe our own design.
A short note about custom typing for functions in Nix