Tweag + Nix dev update #21

One day late because of the “local” bank holiday yesterday, here’s the new update from the Tweag Nix team (and the previous one is still here, and like a good old linked list you can even go back in time provided you’re ready to go through enough indirections).

Nix 2.4 !

The obvious big event of these last two weeks is the release of Nix 2.4 by @edolstra :partying_face::

This caused a few issues (mostly caught as part of #144197), but surprisingly few given the size of the release.

UX improvements

With the help of @tomberek, the team started a more focused approach to improve the overall Nix UX.
This is tracked in the UX github project, and started bearing some fruits, notably

  • The first Nix UX working hour. This has been a one-shot experiment so far, but hopefully more will follow

  • @thufschmitt and @Radvendii started improving the experience with flake-local options (#5504), as well as laying the path to make it even more usable (#5505 and #5507)

  • @garbas worked on generating docker images straight from the Nix repository (#5453), so that anyone can easily get a docker image with the latest Nix version.

  • As a way to solve (part of) the eternal documentation problem, @edolstra authored a pull request to allow attaching some documentation to functors, and display it in the repl (#5527):

CA derivations

regnat tackled a couple issues that CA-derivation users were facing, namely,

  • Tried to suppress a bottleneck making the substitution of CA derivations way to slow (#5472);
  • Fixed an issue where the use of CA derivations was introducing a weird pseudo-cyclic dependency graph causing sqlite to refuse removing some paths (#5479);
  • Fixed nix-repl :b in presence of CA-derivations (#5476)


  • @thufschmitt reworked the internals of --experimental-features, making it easier to add (and more importantly remove) experimental features, and opening the way to more flexible things, like store-level experimental features (#5432)
  • @balsoft recently joined the team, and started right away, restoring the possibility to use builtins.{path,filterSource} on store paths with references (#5494), and working on fixing a locking bug with flakes (#5518)
  • @edolstra improved the performance of primops call by un-currying them, allowing a speedup up to 8% on nix-env (#5501)


The Nickel team also got itself busy:

  • @yannham, @garbas, @thufschmitt and francois-caddet held a bikeshedding meeting disucssing the handling of external dependencies (#329);

  • @ysndr and Avi-D-coder did some more work on the LSP server.

    • Thanks to Avi-D-coder, it is now natively integrated into neovim’s built-in lsp server (nvim-lspconfig#1369).
    • The server itself got extended further to support much more constructs, and now properly handles a basic “hover” popup and go-to-definition:

  • @yannham fixed an issue where mixing contracts and default values wasn’t working as intended (#441)

  • litchpi fixed a strictness-related issue that caused function application to do weird things with nickel query (#433 and #443);

  • litchipi started working on user-defined type aliases (#422).

And that’s all, folks