Home Explore Blog CI



nix

1st chunk of `doc/manual/source/release-notes/rl-2.29.md`
cf00b48760c6fdbd235cec5e8393ba8fbdfe6f4a6e744fcd0000000100000fd8
# Release 2.29.0 (2025-05-14)

After the special backport-based release of Nix 2.28 (timed to coincide with Nixpkgs 25.05), the release process is back to normal with 2.29.
As such, we have slightly more weeks of work from `master` (since 2.28 was branched from 2.27) than usual.
This fact is counterbalanced by the fact that most of those changes are bug fixes rather than larger new features.

- Prettified JSON output on the terminal [#12555](https://github.com/NixOS/nix/issues/12555) [#12652](https://github.com/NixOS/nix/pull/12652)

  This makes the output easier to read.

  Scripts are mostly unaffected because for those, stdout will be a file or a pipe, not a terminal, and for those, the old single-line behavior applies.

  `--json --pretty` can be passed to enable it even if the output is not a terminal.
  If your script creates a pseudoterminal for Nix's stdout, you can pass `--no-pretty` to disable the new behavior.

- Repl: improve continuation prompt for incomplete expressions [#12846](https://github.com/NixOS/nix/pull/12846)

  Improved REPL user experience by updating the continuation prompt from invisible blank spaces to a visible `" > "`, enhancing clarity when entering multi-line expressions.

- REPL `:load-flake` and `:reload` now work together [#8753](https://github.com/NixOS/nix/issues/8753) [#13180](https://github.com/NixOS/nix/pull/13180)

  Previously, `:reload` only reloaded the files specified with `:load` (or on the command line).
  Now, it also works with the flakes specified with `:load-flake` (or on the command line).
  This makes it correctly reload everything that was previously loaded, regardless of what sort of thing (plain file or flake) each item is.

- Increase retry delays on HTTP 429 Too Many Requests [#13052](https://github.com/NixOS/nix/pull/13052)

  When downloading Nix, the retry delay was previously set to 0.25 seconds. It has now been increased to 1 minute to better handle transient CI errors, particularly on GitHub.

- S3: opt-in the STSProfileCredentialsProvider [#12646](https://github.com/NixOS/nix/pull/12646)

  Added support for STS-based authentication for S3-based binary caches, i.e. enabling seamless integration with `aws sso login`.

- Reduce connect timeout for http substituter [#12876](https://github.com/NixOS/nix/pull/12876)

  Previously, the Nix setting `connect-timeout` had no limit. It is now set to `5s`, offering a more practical default for users self-hosting binary caches, which may occasionally become unavailable, such as during updates.


- C API: functions for locking and loading a flake [#10435](https://github.com/NixOS/nix/issues/10435) [#12877](https://github.com/NixOS/nix/pull/12877) [#13098](https://github.com/NixOS/nix/pull/13098)

  This release adds functions to the C API for handling the loading of flakes. Previously, this had to be worked around by using `builtins.getFlake`.
  C API consumers and language bindings now have access to basic locking functionality.

  It does not expose the full locking API, so that the implementation can evolve more freely.
  Locking is controlled with the functions, which cover the common use cases for consuming a flake:
  - `nix_flake_lock_flags_set_mode_check`
  - `nix_flake_lock_flags_set_mode_virtual`
  - `nix_flake_lock_flags_set_mode_write_as_needed`
  - `nix_flake_lock_flags_add_input_override`, which also enables `virtual`

  This change also introduces the new `nix-fetchers-c` library, whose single purpose for now is to manage the (`nix.conf`) settings for the built-in fetchers.

  More details can be found in the [C API documentation](@docroot@/c-api.md).

- No longer copy flakes that are in the nix store [#10435](https://github.com/NixOS/nix/issues/10435) [#12877](https://github.com/NixOS/nix/pull/12877) [#13098](https://github.com/NixOS/nix/pull/13098)

  Previously, we would duplicate entries like `path:/nix/store/*` back into the Nix store.
  This was prominently visible for pinned system flake registry entries in NixOS, e.g., when running `nix run nixpkgs#hello`.

Title: Nix Release 2.29.0 (2025-05-14) - Enhancements and Bug Fixes
Summary
Nix 2.29.0 includes several enhancements and bug fixes, including prettified JSON output, improved REPL continuation prompts, better `:reload` functionality for flakes, increased retry delays for HTTP 429 errors, opt-in STS authentication for S3 binary caches, reduced connect timeout for HTTP substituters, new C API functions for locking and loading flakes, and prevention of copying flakes already in the Nix store.