4.8 KiB
Release 2.31.0 (2025-08-21)
-
build-cores = 0now auto-detects CPU cores #13402When
build-coresis set to0, Nix now automatically detects the number of available CPU cores and passes this value viaNIX_BUILD_CORES, instead of passing0directly. This matches the behavior whenbuild-coresis unset. This prevents the builder from having to detect the number of cores. -
Fix Git LFS SSH issues #13337 #13743
Fixed some outstanding issues with Git LFS and SSH.
- Added support for
NIX_SSHOPTS. - Properly use the parsed port from URL.
- Better use of the response of
git-lfs-authenticateto determine API endpoint when the API is not exposed on port 443.
- Added support for
-
Add support for
user@address:portsyntax in store URIs #7044 #3425It's now possible to specify the port used for SSH stores directly in the store URL in accordance with RFC3986. Previously the only way to specify custom ports was via
ssh_configor theNIX_SSHOPTSenvironment variable, because Nix incorrectly passed the port number together with the host name to the SSH executable.This change affects store references passed via the
--storeand similar flags in CLI as well as in the configuration for remote builders. For example, the following store URIs now work:ssh://127.0.0.1:2222ssh://[b573:6a48:e224:840b:6007:6275:f8f7:ebf3]:22ssh-ng://[b573:6a48:e224:840b:6007:6275:f8f7:ebf3]:22
-
Represent IPv6 RFC4007 ZoneId literals in conformance with RFC6874 #13445
Prior versions of Nix since #4646 accepted IPv6 scoped addresses in URIs like store references in the textual representation with a literal percent character:
[fe80::1%18]. This was ambiguous, because the the percent literal%is reserved by RFC3986, since it's used to indicate percent encoding. Nix now requires that the percent%symbol is percent-encoded as%25. This implements RFC6874, which defines the representation of zone identifiers in URIs. The example from above now has to be specified as[fe80::1%2518].
Contributors
This release was made possible by the following 34 contributors:
- John Soo (@jsoo1)
- Alan Urmancheev (@alurm)
- Manse (@PedroManse)
- Pol Dellaiera (@drupol)
- DavHau (@DavHau)
- Leandro Emmanuel Reina Kiperman (@kip93)
- h0nIg (@h0nIg)
- Philip Taron (@philiptaron)
- Eelco Dolstra (@edolstra)
- Connor Baker (@ConnorBaker)
- kenji (@a-kenji)
- Oleksandr Knyshuk (@k1gen)
- Maciej Krüger (@mkg20001)
- Justin Bailey (@jgbailey-well)
- Emily (@emilazy)
- Volker Diels-Grabsch (@vog)
- gustavderdrache (@gustavderdrache)
- Elliot Cameron (@de11n)
- Alexander V. Nikolaev (@avnik)
- tomberek (@tomberek)
- Matthew Kenigsberg (@mkenigs)
- Sergei Zimmerman (@xokdvium)
- Cosima Neidahl (@OPNA2608)
- John Ericson (@Ericson2314)
- m4dc4p (@m4dc4p)
- Graham Christensen (@grahamc)
- Jason Yundt (@Jayman2000)
- Jens Petersen (@juhp)
- the-sun-will-rise-tomorrow (@the-sun-will-rise-tomorrow)
- Farid Zakaria (@fzakaria)
- AGawas (@aln730)
- Robert Hensing (@roberth)
- Dmitry Bogatov (@KAction)
- Jörg Thalheim (@Mic92)
- Philipp Otterbein