Tweag+Nix dev update #17

Long time no see, it turns out that summer can turn even the most hardcore Nix enthusiasts away from their screen. But in the month-and-a-half that separates us from the last update, stuff has been happening nontheless:


  • The nickel team got a couple of new members with the persons of @francois-caddet and @Accacia, who already started some good work on it.

  • After a fair amount of discussion, @yannham added support for closed contracts, meaning that for example it’s now possible to specify that a record should only contain some explicitly specified fields. This is now the default, and a new syntax has been added to mark a contract as being open (#374).

  • As part of a general work to make Nickel more reliable, the CI got a number of tweaks (#371, #379, #382, #385, #391) thanks to @yannham and @AleksanderGondek.

  • In the same vein, @yannham nixified and automated the build process of the Nickel WASM REPL, so that the website’s playground ( stays tested and up-to-date (#386).

  • The UI also got its share of love this month, with the REPL now having a dedicated :print command (#380, thanks to @ErinvanderVeen), and the nickel query command now also showing the type of the resulting expression (#369, thanks to @yannham)

  • @ErinvanderVeen also greatly improved the stdlib by extensively documenting it and ensuring that the naming scheme was consistent through all the modules.

  • @Accacia changed the representation of the environment (the data structure which holds bindings) to something more adapted, improving performance (#381).


  • True to tradition, the previously announced 2.4 release has been delayed and hasn’t happened yet. But it’s still being actively worked on, the main blocker being the eternal bikeshedding around the name of nix shell (#4715).
  • @thufschmitt started working on allowing the Nix daemon to run as an unpriviledged user (#5208). The first bit of this work materialized as a small rewrite of the way profiles are handled to move everything on the client side (#5226).
  • Like the usual, a number of smaller fixes and improvements also made their way to mainline. To quote a few:
    • @radvendii added antiquotations to the Nix paths, so that it’s now possible to write ./${foo}/bar.nix in a Nix expression (#5066)
    • @edolstra worked around a libarchive issue to prevent Nix from crashing when fetching archives containing utf8 (c7a765)
    • @thufschmitt fixed a CA-related bug that was causing the GC to crash because of some ill-named files in the store (#5203)
    • @pamplemousse fixed a few build-system related issues (#5123, #5175, #5153/files)

And that’s all, folks