Release 3.16.0 (2026-02-12)

Support .gitattributes in subdirectories

For performance, the Git backwards compatibility hack was only applied to repositories that had a .gitattributes in the root directory. However, it is possible to have a .gitattributes file in a subdirectory, and there are real-world repos that do this, so we have dropped that restriction.

PR: DeterminateSystems/nix-src#335

Fix hung downloads when http-connections = 0

When we started limiting the number of active cURL handles in DeterminateSystems/nix-src#315, we did not take into account that http-connections = 0 is a special value that means, roughly "as many connections as possible" (the exact behavior is up to cURL).

This should now be fixed.

PR: DeterminateSystems/nix-src#327

builtins.getFlake now supports relative paths

builtins.getFlake now supports using relative paths, like:

builtins.getFlake ./..

instead of the hacky

builtins.getFlake (builtins.flakeRefToString { type = "path"; path = self.sourceInfo.outPath; narHash = self.narHash; });

Note that allowing builtins.getFlake to fetch from store paths is probably a bad idea, since it's ambiguous when using chroot stores, so a warning will be printed when this is encountered.

PRs:

Fixed a bug with too many open files

Recently, some users have reported seeing errors like:

error: creating git packfile indexer: failed to create temporary file '/Users/anon/.cache/nix/tarball-cache-v2/objects/pack/pack_git2_56d617039ac17c2b': Too many open files

This should now be fixed.

PR: DeterminateSystems/nix-src#347

Full Changelog: v3.15.2...v3.16.0