|
| 1 | +# Release 3.5.1 (2025-05-09) |
| 2 | + |
| 3 | +* Based on [upstream Nix 2.28.3](../release-notes/rl-2.28.md). |
| 4 | + |
| 5 | +## What's Changed |
| 6 | + |
| 7 | +Most notably, Lazy Trees has merged in to Determinate Nix and is in Feature Preview status, but remains disabled by default. |
| 8 | +Lazy trees massively improves performance in virtually all scenarios because it enables Nix to avoid making unnecessary copies of files into the Nix store. |
| 9 | +In testing, we saw iteration times on Nixpkgs **drop from over 12 seconds to 3.5 seconds**. |
| 10 | + |
| 11 | +After upgrading to Determinate Nix 3.5.1 with `sudo determinate-nixd upgrade`, enable lazy trees by adding this to `/etc/nix/nix.custom.conf`: |
| 12 | + |
| 13 | +``` |
| 14 | +lazy-trees = true |
| 15 | +``` |
| 16 | + |
| 17 | +Please note that our full flake regression test suite passes with no changes with lazy trees, and please report compatibility issues. |
| 18 | + |
| 19 | +Read [this GitHub comment](https://github.com/DeterminateSystems/nix-src/pull/27#pullrequestreview-2822153088) for further details and next steps. |
| 20 | +We'll be publishing an update on the [Determinate Systems blog](https://determinate.systems/posts/) in the next few days with more information as well. |
| 21 | + |
| 22 | +Relevant PRs: |
| 23 | +* Lazy trees v2 by @edolstra in [DeterminateSystems/nix-src#27](https://github.com/DeterminateSystems/nix-src/pull/27) |
| 24 | +* Improve lazy trees backward compatibility by @edolstra in [DeterminateSystems/nix-src#56](https://github.com/DeterminateSystems/nix-src/pull/56) |
| 25 | + |
| 26 | + |
| 27 | +### Additional changes in this release: |
| 28 | +* Bug fix: Flake input URLs are canonicalized before checking flake.lock file staleness, avoiding needlessly regenerating flake.lock files with `dir` in URL-style flakerefs by @edolstra in [DeterminateSystems/nix-src#57](https://github.com/DeterminateSystems/nix-src/pull/57) |
| 29 | +* `nix upgrade-nix` is deprecated in favor of `determinate-nixd upgrade`, by @gustavderdrache in [DeterminateSystems/nix-src#55](https://github.com/DeterminateSystems/nix-src/pull/55) |
| 30 | +* UX: Improved build failure and dependency failure error messages to include needed output paths by @edolstra in [DeterminateSystems/nix-src#58](https://github.com/DeterminateSystems/nix-src/pull/58). |
| 31 | + |
| 32 | +Previously: |
| 33 | + |
| 34 | +``` |
| 35 | +error: builder for '/nix/store/[...]-nested-failure-bottom.drv' failed with exit code 1 |
| 36 | +error: 1 dependencies of derivation '/nix/store/[...]-nested-failure-middle.drv' failed to build |
| 37 | +error: 1 dependencies of derivation '/nix/store/[...]-nested-failure-top.drv' failed to build |
| 38 | +``` |
| 39 | + |
| 40 | +Now: |
| 41 | + |
| 42 | +``` |
| 43 | +error: Cannot build '/nix/store/w37gflm9wz9dcnsgy3sfrmnlvm8qigaj-nested-failure-bottom.drv'. |
| 44 | + Reason: builder failed with exit code 1. |
| 45 | + Output paths: |
| 46 | + /nix/store/yzybs8kp35dfipbzdlqcc6lxz62hax04-nested-failure-bottom |
| 47 | +error: Cannot build '/nix/store/00gr5hlxfc03x2675w6nn3pwfrz2fr62-nested-failure-middle.drv'. |
| 48 | + Reason: 1 dependency failed. |
| 49 | + Output paths: |
| 50 | + /nix/store/h781j5h4bdchmb4c2lvy8qzh8733azhz-nested-failure-middle |
| 51 | +error: Cannot build '/nix/store/8am0ng1gyx8sbzyr0yx6jd5ix3yy5szc-nested-failure-top.drv'. |
| 52 | + Reason: 1 dependency failed. |
| 53 | + Output paths: |
| 54 | + /nix/store/fh12637kgvp906s9yhi9w2dc7ghfwxs1-nested-failure-top |
| 55 | +``` |
| 56 | + |
| 57 | +**Full Changelog**: [v3.4.2...v3.5.1](https://github.com/DeterminateSystems/nix-src/compare/v3.4.2...v3.5.1) |
0 commit comments