Tweag + Nix Dev Update #5

Here’s what Tweag has been working on relating to Nix since the last update!

Nix: UX improvements

The nix command is currently an experimental replacement for the existing nix-* commands. It’s intended to give Nix a user interface for the 2020s. This includes a consistent command line interface, completion for all widely used shells, suggestions for new users, useful error messages, and a good progress indicator. Since the last update, we’ve been working on a draft Nix CLI guidelines document and a replacement for the current progress bar.

asciicast

Nix: nixos.org Features page

Continuing with the redesign of https://nixos.org, the Explore/Features page got a nice rework by @garbas, with some furry graphics, check it out!

Nix: Content-addressed derivations

@regnat continues his efforts towards content-addressed derivations. Just recently, he successfully built a fully content-addressed Firefox and graphviz! There’s still some parts missing though, check the ca-derivations label in the issue tracker for seeing the progress. He recently also wrote a blog post about how self-references work with CA derivations if you’re interested in some details. In addition, for the audiophiles out there, you can listen to a podcast episode on this topic!

Nickel

@yannham continues his work on the Nickel language:

  • It now has a structopt-based command line parser, with a number of subcommands.
  • It can now serialize to JSON and raw strings using nickel export.
  • It gained a subcommand for querying individual fields in records, similar to nixos-option.
  • The syntax for static type annotations is now just a colon (:).
  • The syntax for interpolated strings was changed from ${ to variable-length #{. Multiline interpolated strings only interpolate the corresponding number of #'s:
      m#"
      #{"this is" + "interpolated"}
      ##{"this isn't"}
      "#m
    
  • Initial work on open record contracts, which are similar to Nix’s ellipses () in function arguments, checking presence/conformity of some fields, while also allowing additional ones.

“Top secret” project: Trustix

Last update teased this already, but now we can finally tell you about it. In short, Trustix implements distributed trust and reproducibility tracking for binary caches, which is really exciting for the decentralization of Nix! It is developed by @adisbladis. For more info, check out the blogpost for it!

Nix: Misc

29 Likes

lovely. for not to say: exciting. investing trust into the nix ecosystem has been a good choice.

2 Likes

This sounds super cool! I’ll be looking forward to seeing how this project progresses :grin: I’m currently one of the developers on radicle.xyz, and I feel like the desires here are related :slight_smile:

1 Like

That progress bar is AWESOME. Massive improvement.