Dev News Daily ENDE

Lix 2.96 deprecates ssh:// store URIs and rewrites flake.nix validation

The Lix team released Lix 2.96 "Bingsu" on 13 October 2026, the seventh major version of the community-run Nix implementation. The announcement groups the work under four headings: security, debugger support, quality-of-life changes, and progress towards a new Cap'n'Proto RPC protocol and Rust code in the codebase.

The change that needs planning: ssh:// stores are on their way out. Lix 2.96 deprecates ssh:// store URIs while keeping them working, without printing a warning for now. The project says support will be removed in Lix 2.97; ssh-ng:// stays, and in this release it is declared stable. The team gives two reasons — clearing the way for the RPC work and fixing security inconsistencies between the two transports — and notes that ssh-ng applies stricter checks: untrusted users can no longer copy unsigned outputs to a remote store over it. Anyone relying on ssh:// because ssh-ng lacks a feature is asked to contact the project before 2.97.

Breaking changes in evaluation. Validation of flake.nix now follows a single rule: no function calls outside outputs. That loosens things in one direction — let blocks and string interpolation are now accepted in flake inputs — and the team flags the consequence itself: flakes written this way may not evaluate on other Nix implementations. The floor and ceil builtins now throw instead of silently losing precision when converting large floats to integers, a case the release notes say could turn a positive float into a negative integer. Many nix3 commands also stop building their arguments first, which ends oddities such as nix store delete downloading a missing path just to delete it. Shadowing internal files through Nix search paths, deprecated in 2.95, is now an error unless configured otherwise.

Lix 2.96 deprecates ssh:// store URIs and rewrites flake.nix validation
Lix 2.96 deprecates ssh:// store URIs and rewrites flake.nix validation — Dev News Daily

Smaller additions worth knowing. Nested attributes can be passed with --arg and --argstr (so --arg foo.bar.baz 1 now builds a nested set), inputs are fetched by one process at a time when several want the same set, and evaluation links mimalloc, for which the team reports 5–12% faster evaluation. nix doctor now reports system details and can probe configured remote builders. The REPL moved from editline to rustyline, which brings proper UTF-8 input, and the debugger gets relative frame navigation.

What is still experimental. The new RPC protocol ships behind the rpc-sockets experimental feature and needs system setup that the NixOS module does not yet do. A 2.96.1 point release is already planned, with items such as --keep-going for ssh-ng stores and SHA-256 support for Git fetchers.

The team asks users not to upgrade with nix upgrade-nix but with the upgrade script from its installation guide.

Source: Lix, "Announcing Lix 2.96 'Bingsu'" — https://lix.systems/blog/2026-10-13-lix-2.96-release/