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.
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
@thufschmitt 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
-
@adisbladis made a performance improvement to nixpkgs
lib.unique
, which in turn allowed the evaluation ofpkgs.texlive
to use 2.6 times less memory! - @edolstra has continued work on optimizing Nix function calls
- Adam is continuing maintenance of poetry2nix.
- @guibou has started some efforts for improving Nix’s evaluation performance by improving the memory layout. Initial tests reveal a potential reduction of memory usage by 5%!
-
@edolstra made some changes to project-local
nix.conf
settings: Nix now interactively asks before using such values and stores the result. - RFC 67 meeting #1 was held with @Infinisil as the shepherd leader. A change in this RFC’s direction has great potential at improving nixpkgs overriding.
- Another RFC 42 meeting was held with @Infinisil being the author. Not much is needed for it to be accepted.
- The nix-serve command has seen some love, including a bug fix for “hash mismatch” errors on the client side.
-
@Infinisil has continued working on a nixpkgs PR that improves module system assertions and warnings, allowing them to be disabled/changed, and makes them usable in submodules as well (meaning
mkRenamedOptionModule
and co. work in submodules too!)