Tweag + Nix dev update #23

Hi everyone!

A slightly delayed update (still trying to hold that biweekly schedule, and the last one was already two weeks ago) as I got sick during the past weeks and had to take some time off. But back to business:


Nix 2.5 release

@edolstra released Nix 2.5.
This is a somewhat exciting (and hopefolly boring) release, as it is the first one following the tentative 6 weeks schedule.

Developer workflow

  • A mild frustration for some Nix hackers was that although Nix builds both with gcc and clang, the flake was hardcoding the use of gcc on Linux and clang on OSX. This was frustrating in particular because of some really nifty tools (clangd, libfuzzer) that rely on LLVM, and as such weren’t easily available to Linux developers. This is now fixed since @edolstra merged a (somewhat old) PR by @regnat allowing to choose the stdenv when running nix develop(#4996)
  • In an attempt to make the hydra checks more useful − in particular to make it visible when they were failing as there’s currently no notification − @regnat created a scheduled github action polling hydra to get the status of the last evaluation (#5691). Although this is far from ideal so far (in particular it’s only notifying @edolstra and is spamming him as long as a build is failing which isn’t very nice), this is already a first step.


  • @edolstra fixed a regression preventing plain files to be used as flake inputs (#5771).
  • @regnat fixed a bug causing the autocompletion engine to try completing flakes even if the feature isn’t enabled (#5667)


  • @balsoft, @ravendii and a few others collaborated to add a :log command to the repl (#5666)
  • While doing some hairy Nixpkgs work, @infinisil noticed a nice potential performance improvement by making lib.groupBy a primop, which he did in #5715.
  • @yorickVP did a nice round of bugfixing,
    • spotting the (sneaky) cause for an old issue causing some occasional segfault, and fixing it in #5763
    • Fixing another sneaky regression causing some archives to cause a segfault when extracting (#5761)
    • Fixing another small bug preventing booleans to be used in the nixConfig flake section (#5623)
  • @regnat fixed a regression in the REPL causing re-assignments to a variable to be ignored (#5752).


  • The main event of the past few weeks is a meeting that @yannham held with a few other Tweagers to discuss the small things that would need to be settled before the release. You can look at the notes and the original agenda. This was also an occasion to properly define the milestone for a first release.
  • @avi-d-coder and @ysndr added some glue and documentation to make the lsp server easier to use (#505 and #506)
  • @yannham started writing a proper introduction to the language (#485)
  • @yannham added support for curried operator syntax (#501)
  • A long awaited feature, @yannham started implementing the recursive overriding of records (#491) (kinda similar to the merge of NixOS options)

And that’s all, folks


I’m excited to see Nickel approach a state where the average Nix user can play with the language and see how it feels similar to the Nix language and how it feels different.

It’s impressive how much effort has gone into making the development of Nickel not just nominally open but very visible and accessible to the Nix community, right from the start. Using a PR-based workflow even when the code has come largely from one person at a time seems like a wise decision.

It’s also nice to have a slew of recent bugfixes highlighted shortly after a release as big as Nix 2.4. Thanks guys!