Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .version-determinate
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.14.0
3.15.0
1 change: 1 addition & 0 deletions doc/manual/source/SUMMARY.md.in
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@
- [Contributing](development/contributing.md)
- [Determinate Nix Release Notes](release-notes-determinate/index.md)
- [Changes between Nix and Determinate Nix](release-notes-determinate/changes.md)<!-- next -->
- [Release 3.15.0 (2025-12-19)](release-notes-determinate/v3.15.0.md)
- [Release 3.14.0 (2025-12-08)](release-notes-determinate/v3.14.0.md)
- [Release 3.13.2 (2025-11-19)](release-notes-determinate/v3.13.2.md)
- [Release 3.13.1 (2025-11-12)](release-notes-determinate/v3.13.1.md)
Expand Down
76 changes: 28 additions & 48 deletions doc/manual/source/release-notes-determinate/changes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changes between Nix and Determinate Nix

This section lists the differences between upstream Nix 2.32 and Determinate Nix 3.14.0.<!-- differences -->
This section lists the differences between upstream Nix 2.33 and Determinate Nix 3.15.0.<!-- differences -->

* In Determinate Nix, flakes are stable. You no longer need to enable the `flakes` experimental feature.

Expand All @@ -22,9 +22,9 @@ This section lists the differences between upstream Nix 2.32 and Determinate Nix

<!-- Determinate Nix version 3.5.1 -->

* `nix upgrade-nix` is now inert, and suggests using `determinate-nixd upgrade` -- [DeterminateSystems/nix-src#55](https://github.com/DeterminateSystems/nix-src/pull/55)
* `nix upgrade-nix` is now inert, and suggests using `determinate-nixd upgrade`. [DeterminateSystems/nix-src#55](https://github.com/DeterminateSystems/nix-src/pull/55)

* Lazy Trees support has been merged. ([DeterminateSystems/nix-src#27](https://github.com/DeterminateSystems/nix-src/pull/27), [DeterminateSystems/nix-src#56](https://github.com/DeterminateSystems/nix-src/pull/56))
* Determinate Nix has Lazy Trees, avoiding expensive copying of flake inputs to the Nix store. ([DeterminateSystems/nix-src#27](https://github.com/DeterminateSystems/nix-src/pull/27), [DeterminateSystems/nix-src#56](https://github.com/DeterminateSystems/nix-src/pull/56))

<!-- Determinate Nix version 3.5.2 -->

Expand All @@ -34,40 +34,29 @@ This section lists the differences between upstream Nix 2.32 and Determinate Nix

<!-- Determinate Nix version 3.6.2 -->

* Faster `nix store copy-sigs` by @edolstra in [DeterminateSystems/nix-src#80](https://github.com/DeterminateSystems/nix-src/pull/80)
* Documentation on how to replicate `nix-store --query --deriver` with the new `nix` cli. [DeterminateSystems/nix-src#82](https://github.com/DeterminateSystems/nix-src/pull/82)

* Document how to replicate nix-store --query --deriver with the nix cli by @grahamc in [DeterminateSystems/nix-src#82](https://github.com/DeterminateSystems/nix-src/pull/82)
* In `nix profile`, the symbols `ε` and `∅` have been replaced with descriptive English words. [DeterminateSystems/nix-src#81](https://github.com/DeterminateSystems/nix-src/pull/81)

* nix profile: Replace ε and ∅ with descriptive English words by @grahamc in [DeterminateSystems/nix-src#81](https://github.com/DeterminateSystems/nix-src/pull/81)

* Call out that `--keep-failed` with remote builders will keep the failed build directory on that builder by @cole-h in [DeterminateSystems/nix-src#85](https://github.com/DeterminateSystems/nix-src/pull/85)
<!-- Determinate Nix version 3.6.3 revoked -->

<!-- Determinate Nix version 3.6.4 revoked -->

<!-- Determinate Nix version 3.6.5 -->

* When remote building with --keep-failed, only show "you can rerun" message if the derivation's platform is supported on this machine by @cole-h in [DeterminateSystems/nix-src#87](https://github.com/DeterminateSystems/nix-src/pull/87)

* Indicate that sandbox-paths specifies a missing file in the corresponding error message. by @cole-h in [DeterminateSystems/nix-src#88](https://github.com/DeterminateSystems/nix-src/pull/88)

* Use FlakeHub inputs by @lucperkins in [DeterminateSystems/nix-src#89](https://github.com/DeterminateSystems/nix-src/pull/89)
* When remote building with `--keep-failed`, Determinate Nix shows "you can rerun" message if the derivation's platform is supported on this machine. [DeterminateSystems/nix-src#87](https://github.com/DeterminateSystems/nix-src/pull/87)

* Proactively cache more flake inputs and fetches by @edolstra in [DeterminateSystems/nix-src#93](https://github.com/DeterminateSystems/nix-src/pull/93)

* Improve caching of inputs in dry-run mode by @edolstra in [DeterminateSystems/nix-src#98](https://github.com/DeterminateSystems/nix-src/pull/98)
* Improved error message when `sandbox-paths` specifies a missing file. [DeterminateSystems/nix-src#88](https://github.com/DeterminateSystems/nix-src/pull/88)

<!-- Determinate Nix version 3.6.6 -->

<!-- Determinate Nix version 3.6.7 -->

<!-- Determinate Nix version 3.6.8 -->

* Add lazy-locks setting by @edolstra in [DeterminateSystems/nix-src#113](https://github.com/DeterminateSystems/nix-src/pull/113)

<!-- Determinate Nix version 3.7.0 -->

* `nix store delete` now explains why deletion fails by @edolstra in [DeterminateSystems/nix-src#130](https://github.com/DeterminateSystems/nix-src/pull/130)
* `nix store delete` now explains why deletion fails. [DeterminateSystems/nix-src#130](https://github.com/DeterminateSystems/nix-src/pull/130)

<!-- Determinate Nix version 3.8.0 -->

Expand All @@ -81,21 +70,21 @@ This section lists the differences between upstream Nix 2.32 and Determinate Nix

<!-- Determinate Nix version 3.8.5 -->

* Tab completing arguments to Nix avoids network access [DeterminateSystems/nix-src#161](https://github.com/DeterminateSystems/nix-src/pull/161)
* Tab completing arguments to Nix avoids network access. [DeterminateSystems/nix-src#161](https://github.com/DeterminateSystems/nix-src/pull/161)

* Importing Nixpkgs and other tarballs to the cache is 2-4x faster [DeterminateSystems/nix-src#149](https://github.com/DeterminateSystems/nix-src/pull/149)
* Importing Nixpkgs and other tarballs to the cache is 2-4x faster. [DeterminateSystems/nix-src#149](https://github.com/DeterminateSystems/nix-src/pull/149)

* Adding paths to the store is significantly faster [DeterminateSystems/nix-src#162](https://github.com/DeterminateSystems/nix-src/pull/162)
* Adding paths to the store is significantly faster. [DeterminateSystems/nix-src#162](https://github.com/DeterminateSystems/nix-src/pull/162)

<!-- Determinate Nix version 3.8.6 -->

<!-- Determinate Nix version 3.9.0 -->

* Build-time flake inputs [DeterminateSystems/nix-src#49](https://github.com/DeterminateSystems/nix-src/pull/49)
* Determinate Nix allows flake inputs to be fetched at build time. [DeterminateSystems/nix-src#49](https://github.com/DeterminateSystems/nix-src/pull/49)

<!-- Determinate Nix version 3.9.1 -->

* The default `nix flake init` template is much more useful [DeterminateSystems/nix-src#180](https://github.com/DeterminateSystems/nix-src/pull/180)
* The default `nix flake init` template is much more useful. [DeterminateSystems/nix-src#180](https://github.com/DeterminateSystems/nix-src/pull/180)

<!-- Determinate Nix version 3.10.0 -->

Expand All @@ -104,26 +93,21 @@ This section lists the differences between upstream Nix 2.32 and Determinate Nix

<!-- Determinate Nix version 3.11.0 -->

* Multithreaded evaluation support [DeterminateSystems/nix-src#125](https://github.com/DeterminateSystems/nix-src/pull/125)
* Multithreaded evaluation support. [DeterminateSystems/nix-src#125](https://github.com/DeterminateSystems/nix-src/pull/125)

<!-- Determinate Nix version 3.11.1 -->


<!-- Determinate Nix version 3.11.2 -->

* Fix some interactions with the registry and flakes that include a `?dir=` parameter [DeterminateSystems/nix-src#196](https://github.com/DeterminateSystems/nix-src/pull/196), [DeterminateSystems/nix-src#199](https://github.com/DeterminateSystems/nix-src/pull/199)

* Only try to substitute input if fetching from its original location fails [DeterminateSystems/nix-src#202](https://github.com/DeterminateSystems/nix-src/pull/202)
* Determinate Nix only tries to substitute inputs if fetching from its original location fails.[DeterminateSystems/nix-src#202](https://github.com/DeterminateSystems/nix-src/pull/202)

<!-- Determinate Nix version 3.11.3 -->


<!-- Determinate Nix version 3.12.0 -->

* `nix flake clone` supports arbitrary input types. [DeterminateSystems/nix-src#229](https://github.com/DeterminateSystems/nix-src/pull/229)

* A new command `nix nario` that replaces `nix-store --export|--export`. It also has a new file format (`--format 2`) that supports store path attributes such as signatures, and that can be imported more efficiently.
[DeterminateSystems/nix-src#215](https://github.com/DeterminateSystems/nix-src/pull/215)
* A new command `nix nario` that replaces `nix-store --export|--export`. It also has a new file format (`--format 2`) that supports store path attributes such as signatures, and that can be imported more efficiently. [DeterminateSystems/nix-src#215](https://github.com/DeterminateSystems/nix-src/pull/215)

* Determinate Nix prints the Nix version when using `-vv` or higher verbosity. [DeterminateSystems/nix-src#237](https://github.com/DeterminateSystems/nix-src/pull/237)

Expand All @@ -134,37 +118,33 @@ This section lists the differences between upstream Nix 2.32 and Determinate Nix

<!-- Determinate Nix version 3.12.2 -->

* Computing the `revCount` attribute is multi-threaded, making it much faster for repositories like Nixpkgs. [DeterminateSystems/nix-src#245](https://github.com/DeterminateSystems/nix-src/pull/245)

* Flakerefs in error messages are abbreviated for readability. [DeterminateSystems/nix-src#243](https://github.com/DeterminateSystems/nix-src/pull/243)
* Flakerefs in error messages and lockfile diffs are abbreviated for readability. [DeterminateSystems/nix-src#243](https://github.com/DeterminateSystems/nix-src/pull/243), [DeterminateSystems/nix-src#264](https://github.com/DeterminateSystems/nix-src/pull/264)

<!-- Determinate Nix version 3.13.0 -->

* Git fetching has a progress indication [DeterminateSystems/nix-src#250](https://github.com/DeterminateSystems/nix-src/pull/250)

<!-- Determinate Nix version 3.13.1 -->


<!-- Determinate Nix version 3.13.2 -->

* Abbreviate flakerefs in lockfile diffs and `nix flake metadata` [DeterminateSystems/nix-src#264](https://github.com/DeterminateSystems/nix-src/pull/264)
* The Git fetcher doesn't compute `revCount` or `lastModified` if they're already specified [DeterminateSystems./nix-src#269](https://github.com/DeterminateSystems/nix-src/pull/269)

* nix flake prefetch-inputs: Skip build-time inputs [DeterminateSystems/nix-src#263](https://github.com/DeterminateSystems/nix-src/pull/263)
* The Git fetcher avoids doing a shallow Git fetch if it previously did a non-shallow fetch of the same repository. [DeterminateSystems/nix-src#270](https://github.com/DeterminateSystems/nix-src/pull/270)

* Git fetcher: Don't compute revCount/lastModified if they're already specified [DeterminateSystems/nix-src#269](https://github.com/DeterminateSystems/nix-src/pull/269)
* Determinate Nix has a builtin copy of the flake registry, making it more resilient to network outages. [DeterminateSystems/nix-src#271](https://github.com/DeterminateSystems/nix-src/pull/271)

* Avoid unnecessary Git refetches [DeterminateSystems/nix-src#270](https://github.com/DeterminateSystems/nix-src/pull/270)
<!-- Determinate Nix version 3.14.0 -->

* Use mirrored flake registry [DeterminateSystems/nix-src#271](https://github.com/DeterminateSystems/nix-src/pull/271)
* `nix build` and `nix profile` report failing or succeeding installables. [DeterminateSystems/nix-src#281](https://github.com/DeterminateSystems/nix-src/pull/281)

<!-- Determinate Nix version 3.14.0 -->
* `nix flake check` shows which outputs failed or succeeded. [DeterminateSystems/nix-src#285](https://github.com/DeterminateSystems/nix-src/pull/285)

* Fixed a builtins.path regression: Propagate references from derivation outputs [DeterminateSystems/nix-src#283](https://github.com/DeterminateSystems/nix-src/pull/283)
* Determinate Nix has a `nix ps` command to show active builds. [DeterminateSystems/nix-src#282](https://github.com/DeterminateSystems/nix-src/pull/282)

* nix build, nix profile: Report failing/succeeding installables [DeterminateSystems/nix-src#281](https://github.com/DeterminateSystems/nix-src/pull/281)
* Determinate Nix has improved backward compatibility with lock files created by Nix < 2.20. [DeterminateSystems/nix-src#278](https://github.com/DeterminateSystems/nix-src/pull/278)

* nix flake check: Show which outputs failed or succeeded [DeterminateSystems/nix-src#285](https://github.com/DeterminateSystems/nix-src/pull/285)
<!-- Determinate Nix version 3.15.0 -->

* Add `nix ps` command [DeterminateSystems/nix-src#282](https://github.com/DeterminateSystems/nix-src/pull/282)
* Determinate Nix has a builtin function `builtins.filterAttrs`. [DeterminateSystems/nix-src#291](https://github.com/DeterminateSystems/nix-src/pull/291)

* Backward compatibility for Nix < 2.20: Git inputs using git-archive [DeterminateSystems/nix-src#278](https://github.com/DeterminateSystems/nix-src/pull/278)
* `builtins.fetchTree` implicitly sets `__final = true` when a `narHash` is supplied. This allows the tree to be substituted. [DeterminateSystems/nix-src#297](https://github.com/DeterminateSystems/nix-src/pull/297)
28 changes: 28 additions & 0 deletions doc/manual/source/release-notes-determinate/v3.15.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Release 3.15.0 (2025-12-19)

* Based on [upstream Nix 2.33.0](../release-notes/rl-2.33.md).

## `fetchTree` improvement

`builtins.fetchTree` now implicitly treats the fetched tree as "final" when a `narHash` is supplied, meaning that it will not return attributes like `lastModified` or `revCount` unless they were specified by the caller. This makes it possible to substitute the tree from a binary cache, which is often more efficient. Furthermore, for Git inputs, it allows Nix to perform a shallow fetch, which is much faster.

This is primarily useful for users of `flake-compat`, since it uses `builtins.fetchTree` internally.

PR: [DeterminateSystems/nix-src#297](https://github.com/DeterminateSystems/nix-src/pull/297)

## New builtin function `builtins.filterAttrs`

Nixpkgs heavily relies on this function to select attributes from an attribute set:

```nix
filterAttrs = pred: set: removeAttrs set (filter (name: !pred name set.${name}) (attrNames set));
```

Determinate Nix now has this function built-in, which makes it much faster.

PR: [DeterminateSystems/nix-src#291](https://github.com/DeterminateSystems/nix-src/pull/291)

## New Contributors
* @not-ronjinger made their first contribution in [DeterminateSystems/nix-src#291](https://github.com/DeterminateSystems/nix-src/pull/291)

**Full Changelog**: [v3.14.0...v3.15.0](https://github.com/DeterminateSystems/nix-src/compare/v3.14.0...v3.15.0)