Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
245 commits
Select commit Hold shift + click to select a range
f4bde1f
Split release artifacts into a dedicated Hydra jobset
Mic92 Apr 8, 2026
892d870
libstore: Plug thread safety issues in recursive-nix
xokdvium Apr 13, 2026
099fd30
libstore: Reduce memory usage of the Worker even more
xokdvium Apr 15, 2026
88c1377
libstore: Move childEvents from the promise into Goal itself
xokdvium Apr 15, 2026
1cded5e
derivation-resolution-goal: Make use of deducing this for a recursive…
xokdvium Apr 15, 2026
5092347
derivation-resolution-goal: Replace value_comparison with a lambda
xokdvium Apr 15, 2026
136e1a2
fetchClosure: Add temproot before checking path
dramforever Apr 7, 2026
7fe57da
libstore: don't print URL userinfo in FileTransfer diagnostics
Mic92 Apr 20, 2026
f77a33b
Merge pull request #15715 from Mic92/filetransfer-redact-userinfo
Mic92 Apr 20, 2026
f0d9109
libexpr: Fix error message in InvalidPathError
xokdvium Apr 19, 2026
2949729
libflake: Fix argument order evaluation footgun
xokdvium Apr 17, 2026
49b2680
nix flake archive: Use 'deducing this' recursive lambda instead of st…
xokdvium Apr 19, 2026
d5f162d
libexpr-c: Fix UAF on readOnlyMode
xokdvium Apr 19, 2026
d34b442
flake archive: Factor out storePath computation/fetching into a lambda
xokdvium Apr 20, 2026
9fcb58f
libexpr-c: Remove unsafe_new_with_self
xokdvium Apr 20, 2026
bf54efb
Merge pull request #15716 from xokdvium/bundle-of-fixes
Mic92 Apr 20, 2026
7d12269
libfetchers: Use source accessor if the mercurial fetcher, use makeFS…
xokdvium Jan 9, 2026
48100ab
libutil: Add a dirFd callback for iterative openFileEnsureBeneathNoSy…
xokdvium Apr 20, 2026
293aa8d
Add redirect for language/values.html
Apr 20, 2026
e069dae
release-jobs: include all buildCross.nix-everything targets
Mic92 Apr 20, 2026
7981f28
libutil: Implement unix source accessors that work with file descriptors
xokdvium Apr 20, 2026
732f9c1
libstore: LocalStoreAccessor uses makeFSSourceAccessor
xokdvium Jan 9, 2026
7847c51
libstore: Use requireStoreObjectAccessor in addToStore
xokdvium Jan 9, 2026
344ab0a
libstore: Use makeFSStoreAccessor in derivation builder
xokdvium Jan 9, 2026
b16a5c3
nix: Use makeFSSourceAccessor in place of createAtRoot
xokdvium Jan 9, 2026
a8bcc08
libutil: Use makeFSSourceAccessor in dumpPath
xokdvium Jan 9, 2026
c349fbf
libutil: Add a new overload of readDirectory (for fd-relative operati…
xokdvium Apr 20, 2026
ba7db4e
nix-perl: Get rid of the last occurence of createAtRoot
xokdvium Jan 9, 2026
316e33a
libutil: Get rid of PosixSourceAccessor::createAtRoot
xokdvium Jan 9, 2026
52011de
libstore: Use copyRecursive when copying FOD outputs
xokdvium Apr 20, 2026
8e7702d
makeFSSourceAccessor: add finalSymlink parameter
xokdvium Apr 21, 2026
c296e25
PosixDirectorySourceAccessor: Improve dirFd caching
xokdvium Apr 21, 2026
043cafa
SourceAccessor: remove invalidateCache, remove raw usage of PosixSour…
xokdvium Apr 21, 2026
5aa60ea
Rename PosixSourceAccessor to WindowsSourceAccessor
xokdvium Apr 21, 2026
5450d99
tests/functional/multiple-output: Move invalid outtput name tests abo…
xokdvium Apr 21, 2026
e5e7aa2
Merge pull request #15718 from NixOS/directory-source-accessor3
Ericson2314 Apr 21, 2026
c2a31ef
Merge pull request #15717 from Krish-jswl/fix-html-redirect
xokdvium Apr 21, 2026
b51d41a
Merge pull request #15640 from Mic92/release-workflow
Mic92 Apr 21, 2026
0214ee7
repl: Make :reload robust against load failures
Mic92 Apr 21, 2026
e0f3115
release: name artifact jobsets maintenance-X.Y-release
Mic92 Apr 21, 2026
50bce0b
repl: Invalidate git workdir-info cache on :reload
Mic92 Apr 21, 2026
15d583f
Merge pull request #15722 from Mic92/nix-repl
Mic92 Apr 21, 2026
e7d27c7
PosixDirectorySourceAccessor: Drop dirfd cache on resetFileCache()
Mic92 Apr 21, 2026
387ae98
clang-tidy: Ban raw std::filesystem::create_directories, fix hydraJob…
xokdvium Apr 21, 2026
5951680
Merge pull request #15721 from Mic92/fix-stale-dirfd
xokdvium Apr 21, 2026
ad15006
Clean up dead code, redundant .string() on std::filesystem::path
xokdvium Apr 21, 2026
3e56d68
Fix FreeBSD build, return <exception> includes, now with IWYU comments
xokdvium Apr 21, 2026
61e1be2
Fix Darwin build
xokdvium Apr 21, 2026
b74401e
Fix functional_root tests
xokdvium Apr 21, 2026
d1b5ac3
Move std::filesystem cleanup
xokdvium Apr 21, 2026
b3e84b7
Ban std::filesystem::remove_all in the codebase
xokdvium Apr 21, 2026
cd16aee
Merge pull request #15724 from NixOS/more-filesystem-cleanup
xokdvium Apr 22, 2026
77db3d4
libutil: Bound NAR directory depth and guard coroutine stacks
edef1c Apr 15, 2026
0d461dc
libutil: Bound string lengths in the NAR parser
edef1c Apr 15, 2026
ee68e87
libutil: Reject empty and NUL-containing symlink targets in NARs
edef1c Apr 15, 2026
5d84062
daemon: Limit the number of crashes before exiting to 64
xokdvium Apr 16, 2026
88b5bcd
libutil: Make formatter happy
xokdvium Apr 16, 2026
7cdf3ba
packaging: build the Rust nix-installer with embedded Nix
Mic92 Apr 22, 2026
b12be69
ci: run the Rust installer in installer_test
Mic92 Apr 22, 2026
0c303d9
Merge pull request #15729 from NixOS/nix-installer-embedded
xokdvium Apr 22, 2026
23d53de
PosixDirectorySourceAccessor: Correct the SymlinkNotAllowed error mes…
xokdvium Apr 21, 2026
3e458a7
PosixDirectorySourceAccessor: Improve dirFd caching for readFile/open…
xokdvium Apr 21, 2026
794f00a
Add CachingSourceAccessor for the sake of the evaluator, cache positi…
xokdvium Apr 22, 2026
6c2f1b4
libexpr: Cache findFile lookups better
xokdvium Apr 22, 2026
e6c56cb
Merge pull request #15720 from dramforever/fetchclosure-addtemproot
xokdvium Apr 23, 2026
bae48a5
Input::getAccessorUnchecked(): Wrap fetches in a path lock
edolstra Apr 1, 2026
eb5c677
libfetchers: Acquire fetcher-locks only when input is not substituted
xokdvium Apr 23, 2026
903afcf
Merge pull request #15644 from NixOS/lock-tree-fetches
xokdvium Apr 23, 2026
5f5fb7a
RemoteStore::addToStore(): Fix version comparison
edolstra Apr 24, 2026
e9adf46
Merge pull request #15734 from NixOS/version-comparison
edolstra Apr 24, 2026
84c7a35
Merge pull request #15695 from NixOS/memory-optimisations-worker
Ericson2314 Apr 24, 2026
f63e138
Tune error messages
xokdvium Apr 24, 2026
aca83d8
Merge pull request #15679 from NixOS/recursive-nix-thread-safety
Ericson2314 Apr 24, 2026
2f28dd9
Merge pull request #15725 from NixOS/dirfd-accessor-touchups
Ericson2314 Apr 24, 2026
fb4d488
libflake: Drop unused NixStringContext in getFlake
xokdvium Apr 19, 2026
569ee75
libexpr: Add a way to collect string context from ValuePrinter
xokdvium Apr 19, 2026
a8e2e00
linux-derivation-builder: Also block *listxattr
pcc Apr 25, 2026
891ef14
Don't copy flakes to the store unnecessarily
xokdvium Apr 19, 2026
d4ea1a0
Enable more clang-tidy checks, related fixes
lisanna-dettwyler Apr 24, 2026
de52c42
Merge pull request #15731 from lisanna-dettwyler/more-tidy-checks
xokdvium Apr 26, 2026
8b974a3
tests/functional/json: fix script(1) invocation for util-linux 2.42
Mic92 Apr 26, 2026
4567646
doc/rl-next: add release note for blocking *listxattr in sandbox
Mic92 Apr 26, 2026
6a659e1
Merge pull request #15744 from Mic92/fix-json-test-util-linux-2.42
xokdvium Apr 26, 2026
266c2e1
Merge pull request #15723 from Mic92/faster-nix-release
Mic92 Apr 27, 2026
02df27e
rust-installer: 2.34.5 -> 2.34.6
Mic92 Apr 27, 2026
92e090f
Merge pull request #15743 from pcc/listxattr
Mic92 Apr 27, 2026
498f96d
libutil: Use poll() in FdSource::hasData() to avoid fd_set overflow
Mic92 Apr 27, 2026
c2acffe
Merge pull request #15711 from NixOS/lazy-store-paths-for-flakes
Mic92 Apr 27, 2026
9ff5b82
Merge pull request #15757 from Mic92/poll
xokdvium Apr 27, 2026
852dc59
Merge pull request #15754 from Mic92/bump-nix-installer-2.34.6
Ericson2314 Apr 27, 2026
934a7af
dependabot: enable Nix ecosystem for flake.lock updates
Mic92 Apr 27, 2026
b744171
Merge pull request #15759 from Mic92/flake-inputs
xokdvium Apr 27, 2026
f2720c2
build(deps): bump cachix/install-nix-action from 31.10.4 to 31.10.5
dependabot[bot] Apr 27, 2026
741de5d
build(deps): bump the flake-inputs group with 2 updates
dependabot[bot] Apr 27, 2026
f63f603
Misc gc/deletion improvements / fixes
lisanna-dettwyler Apr 22, 2026
87032c6
libstore: Drop queryMissing from Worker::run
xokdvium Apr 28, 2026
8aebbeb
Merge pull request #15766 from lisanna-dettwyler/gc-improvements
Ericson2314 Apr 28, 2026
e069c5a
Merge pull request #15769 from NixOS/drop-query-missing-in-worker
Ericson2314 Apr 28, 2026
8c03190
include <thread> in src/libfetchers/fetchers.cc
kolmodin Apr 26, 2026
8759b15
Merge pull request #15756 from kolmodin/pr-15755
xokdvium Apr 29, 2026
53a9007
libstore: Anchor all Store and StoreConfig vtables
xokdvium Apr 29, 2026
92a2823
Merge pull request #15770 from xokdvium/vtable-anchoring
xokdvium Apr 29, 2026
8041657
Migrate C++ error trace tests into functional/lang tests.
kolmodin Apr 28, 2026
7e4ac81
Merge pull request #15771 from kolmodin/issue-14500-functional-tests
Ericson2314 Apr 30, 2026
940825b
Filter systemd socket activation sockets by name
artemist Apr 30, 2026
a79b0f4
LocalStore::addToStore(): Handle negative path info cache entry
edolstra Apr 30, 2026
3cba36b
Merge pull request #15773 from obsidiansystems/activation-name
Ericson2314 Apr 30, 2026
2d26f28
Merge pull request #15774 from NixOS/addToStore-path-info-cache
xokdvium Apr 30, 2026
026e930
nix-profile{,-daemon}.fish: set NIX_PROFILES to use $NIX_LINK
ryota2357 Oct 18, 2025
fa6417b
Merge pull request #14293 from ryota2357/fix-fish-nix-profiles-use-ni…
xokdvium May 1, 2026
0072b32
Ignore keep-{outputs,derivations} for delete
lisanna-dettwyler May 1, 2026
cfa3e80
Merge pull request #15776 from lisanna-dettwyler/delete-no-keep
Ericson2314 May 1, 2026
6bf83e2
Add `--also-referrers` to `nix store delete`
lisanna-dettwyler Apr 22, 2026
e6d05b4
Add some examples for GCing a closure
lisanna-dettwyler Apr 22, 2026
66d9c62
Fix observe_string_cb to not assume a NUL terminated string
xokdvium May 2, 2026
5f90b0c
Don't assume NUL terminated std::string_view in SQLiteStmt::Use::oper…
xokdvium May 2, 2026
77ecdaf
Add unit test to reproduce #15713.
kolmodin Apr 26, 2026
828764b
Merge pull request #15727 from lisanna-dettwyler/gc-delete-dead-refer…
Ericson2314 May 2, 2026
eca01f3
Merge pull request #15761 from NixOS/dependabot/github_actions/cachix…
xokdvium May 2, 2026
6974f9e
Fix FreeBSD non-unity build
lisanna-dettwyler May 2, 2026
2c26a23
Remove Perl bindings
Ericson2314 May 2, 2026
5d514fa
Merge pull request #15782 from lisanna-dettwyler/fix-freebsd
xokdvium May 2, 2026
b015ba0
Merge pull request #15777 from NixOS/string-view-assuming-nul-byte-fixes
Ericson2314 May 2, 2026
3b92b85
Merge pull request #15783 from NixOS/remove-perl-bindings
Ericson2314 May 2, 2026
5172f04
Deduplicate terminal realisation queries in CA derivation resolution
kolmodin May 1, 2026
e094bbd
Fix exponential complexity in CA derivation output resolution
kolmodin May 1, 2026
94e24dd
libutil: Fix path traversal in unpackTarfile
xokdvium May 2, 2026
f9cf341
Merge pull request #15763 from kolmodin/pr-15713-ca-derivations
Ericson2314 May 2, 2026
f59d7c1
Merge pull request #15762 from NixOS/dependabot/nix/flake-inputs-84ec…
xokdvium May 3, 2026
e29ca2f
Simplify the Meson now that upstream bug is fixed
Ericson2314 Apr 24, 2025
eaeb7b3
Merge pull request #13081 from NixOS/meson-13584-simplify
Ericson2314 May 3, 2026
2585efd
tests/functional: Migrate more repl tests into characterisation frame…
xokdvium May 3, 2026
61024d0
Merge pull request #15786 from NixOS/repl-characterisation-tests
Ericson2314 May 3, 2026
a953d61
derivaton-builder: Reap recursive-nix daemon worker threads early
xokdvium May 2, 2026
8fdaf24
Merge remote-tracking branch 'nix-ghsa-vh5x-56v6-4368/hardening'
xokdvium May 4, 2026
53ab737
Merge remote-tracking branch 'nix-ghsa-gr92-w2r5-qw5p/fix-unpackTarfile'
xokdvium May 4, 2026
2acb40b
Don't destroy _fileTransfer on shutdown
edolstra May 4, 2026
8f40805
feat(libutil): add `memo<T>(f0)` memoization combinator
roberth Apr 19, 2026
ee78fe1
feat(libfetchers): add lazy attribute values
roberth Apr 21, 2026
a08c14b
feat(libexpr): emit thunks for lazy fetcher attributes
roberth Apr 21, 2026
e9336fa
feat(git): make revCount lazy
roberth Apr 21, 2026
0c7b61d
fix(flake): don't force revCount in fingerprint
roberth Apr 30, 2026
ad649e3
chore: remove redundant comment
roberth May 4, 2026
7609abe
Document how to use GC roots safely
edolstra May 5, 2026
b87d9e8
Add TODO item
edolstra May 5, 2026
64255a9
Merge pull request #15798 from NixOS/root-registration-docs
edolstra May 5, 2026
e2490c7
StoreDirConfig::parseStorePath(): Don't crash on empty paths
edolstra May 5, 2026
8f3d702
canonPath(): Don't crash on empty paths
edolstra May 5, 2026
1a4d578
Clean up and deduplicate some Logger code
xokdvium May 6, 2026
a253942
libmain: Hide/unhide cursor in the progress bar
xokdvium May 6, 2026
4a705c0
Merge pull request #15800 from NixOS/empty-paths
xokdvium May 6, 2026
e4e3482
Merge pull request #15803 from NixOS/progress-bar-small-improvements
xokdvium May 6, 2026
4fa3a8c
libstore: Use member fileTransfer instead of global getFileTransfer()…
xokdvium May 6, 2026
5a72561
Merge pull request #15792 from NixOS/filetransfer-shutdown
xokdvium May 6, 2026
00ed7bf
Merge pull request #15807 from NixOS/s3-store-reuse-file-transfer-var…
xokdvium May 6, 2026
220ccc7
fix: Restore fingerprint value for untrustworthy revCount values
roberth May 6, 2026
c9e2eb7
Merge pull request #15772 from roberth/lazy-revcount
xokdvium May 7, 2026
2a42376
tests/nixos: serve fetchers-substitute cache via nginx
Mic92 May 8, 2026
616df97
Merge pull request #15812 from Mic92/fetchers-substitute-nginx
Mic92 May 8, 2026
67e442b
flake.lock: Update
xokdvium May 10, 2026
31f253b
tests: Fix daemon compat tests for structured attrs
xokdvium May 10, 2026
acadae1
packaging: Use libgit2 >= 1.9.3
xokdvium May 10, 2026
bd2d659
packaging: Use mimalloc >= 3.3.2
xokdvium May 10, 2026
c5aa96e
packaging: Remove .broken override for libcurl
xokdvium May 10, 2026
6d4308e
Merge pull request #15498 from NixOS/bump-nixpkgs
Mic92 May 10, 2026
3fd52d9
doc: add documentation to __addErrorContext primop
Zocker1999NET May 8, 2026
cabb895
build(deps): bump cachix/install-nix-action from 31.10.5 to 31.10.6
dependabot[bot] May 10, 2026
fcbe6cc
build(deps): bump aws-actions/configure-aws-credentials
dependabot[bot] May 10, 2026
87614fe
Merge pull request #15827 from NixOS/dependabot/github_actions/cachix…
tomberek May 11, 2026
0601548
Merge pull request #15828 from NixOS/dependabot/github_actions/aws-ac…
tomberek May 11, 2026
5a870ac
Fix typos in all .md, .sh, .nix files
znmz May 11, 2026
2529588
parseString(): Fix out-of-bounds read
edolstra May 11, 2026
e6dab09
NAR listing: always serialize `executable` field
Ericson2314 May 11, 2026
8ecf744
Fix posix_fallocate() error case
edolstra May 11, 2026
ac934ef
Merge pull request #15835 from NixOS/parseString-oob-read-upstream
Ericson2314 May 11, 2026
ace50b9
Merge pull request #15836 from NixOS/fix-posix_fallocate
edolstra May 11, 2026
9a4ed22
Merge pull request #15834 from obsidiansystems/nar-listing-executable…
Ericson2314 May 11, 2026
008fbd4
Merge pull request #15833 from znmz/typos
edolstra May 11, 2026
033ac55
Avoid size_t overflow
edolstra May 11, 2026
f61d992
Avoid calling lseek() with an unintended negative offset
edolstra May 11, 2026
7afb83f
readError(): Replace assertions by exceptions
edolstra May 11, 2026
f4c2b7a
Merge pull request #15838 from NixOS/serialise-fixes
xokdvium May 11, 2026
ce72fca
Merge pull request #15781 from NixOS/reap-recursive-nix-workers
Ericson2314 May 11, 2026
c73ad66
libexpr: Avoid a call to builtins.getAttr in builtins.derivation
adisbladis May 12, 2026
b092b4d
Merge pull request #15841 from adisbladis/builtins-drv-getattr-begone
edolstra May 12, 2026
101bcac
RemoteStore: Don't call setOptions when running recursive
artemist May 6, 2026
8f4c500
libfetchers: verify git-lfs returns the same objects as git
RossComputerGuy May 12, 2026
b3b4609
Merge pull request #15805 from obsidiansystems/no-set-options
Ericson2314 May 12, 2026
1ba67c5
Merge pull request #15845 from DeterminateSystems/upstream-fix/git-lfs
xokdvium May 13, 2026
b8f6a1b
libutil: Fix various 32 bit size_t truncations from uint64_t, fix Fra…
xokdvium May 13, 2026
5e50465
libutil: Improve readPadding
xokdvium May 13, 2026
0548d85
libutil: Document and test readPadding
xokdvium May 14, 2026
ff05a94
Merge pull request #15850 from NixOS/serialise-fixes-32-bit-and-frame…
Mic92 May 14, 2026
ff84852
libstore: Fix LocalStore::openGCLock error check
xokdvium May 15, 2026
534d376
fix(libstore/filetransfer): re-enable TCP keep-alive
tomberek May 14, 2026
631c492
fix(libstore/filetransfer): retry S3 errors embedded in XML
tomberek May 14, 2026
2ad7969
Fix instructions to disable unit tests when building from source
ReubenJ May 15, 2026
c186636
Merge pull request #15858 from NixOS/fix-local-store-open-gc-lock-err…
edolstra May 15, 2026
ebeb8c7
daemon: Drop unused TunnelSink
xokdvium May 15, 2026
d967870
Merge pull request #15866 from NixOS/drop-dead-tunnel-sink
Ericson2314 May 15, 2026
d027dc3
fix: rewrite output hashes via a fresh tempdir, not <actualPath>.tmp
kolmodin May 14, 2026
6f7e134
Merge pull request #15860 from kolmodin/pr-15839-tmp-collision
xokdvium May 16, 2026
e3f58bc
fix(libstore/filetransfer): add missing S3 retryable error codes
Mic92 May 17, 2026
378753a
test(filetransfer): add S3 XML error retry integration test
Mic92 May 17, 2026
5778327
build(deps): bump korthout/backport-action from 4.3.0 to 4.5.2
dependabot[bot] May 17, 2026
c563ff7
build(deps): bump the flake-inputs group across 1 directory with 2 up…
dependabot[bot] May 17, 2026
0d9e73a
Merge pull request #15855 from tomberek/tomberek/dead_socket
tomberek May 18, 2026
88355c7
Merge pull request #15871 from NixOS/dependabot/github_actions/kortho…
tomberek May 18, 2026
7d0f150
Merge pull request #15872 from NixOS/dependabot/nix/flake-inputs-2acf…
tomberek May 18, 2026
e9db4b5
Merge pull request #15817 from Zocker1999NET/doc-addErrorContext
tomberek May 18, 2026
e7fd44a
Merge pull request #15861 from ReubenJ/patch-1
tomberek May 18, 2026
4bd0000
HttpBinaryCacheStore: Don't ignore 401/407 errors
edolstra May 18, 2026
ff85268
nix search: switch to boost::regex for ~1.74x speedup
kolmodin May 17, 2026
fd1a702
packaging: disable mimalloc on FreeBSD
artemist May 19, 2026
6b91512
doc: Add FreeBSD support release note
artemist May 19, 2026
915772a
Merge pull request #15882 from obsidiansystems/mimalloc-fix
Ericson2314 May 19, 2026
355fcdf
fix: remove follows after git-hooks bump
tomberek May 18, 2026
828ffb2
build: embed C API symbols in release binaries
noib3 Apr 15, 2026
f9f70cc
Merge pull request #15883 from obsidiansystems/freebsd-release-note
edolstra May 20, 2026
2a1dc8b
Remove non-atomically initialised variable vImportedDrvToDerivation
edolstra May 20, 2026
34a2f40
Merge pull request #15881 from kolmodin/issue-15823-boost-regex-for-s…
edolstra May 20, 2026
589b611
Merge pull request #15876 from tomberek/tomberek/flake/git-hooks-foll…
tomberek May 20, 2026
bc385bc
Merge pull request #15696 from noib3/expose-c-api-symbols
xokdvium May 20, 2026
7681240
Merge pull request #15889 from NixOS/imported-drv-to-derivation-race
xokdvium May 20, 2026
be84169
Fix logging segfault by leaking logger
lisanna-dettwyler May 20, 2026
a6b3f2b
fix: restore multi-line string continuation in REPL bindings
roberth May 20, 2026
fe55edc
refactor: clarify parseReplBindings contract and deduplicate incomple…
roberth May 20, 2026
2491dfc
refactor: make IncompleteReplExpr inherit from Error, not ParseError
roberth May 20, 2026
41b28ad
Merge pull request #15892 from roberth/fix-repl-multiline-binding-con…
xokdvium May 20, 2026
fe58a07
Fix FreeBSD makeFSSourceAccessor on symlinks
artemist May 21, 2026
2bcde72
Merge pull request #15877 from NixOS/401-errors
xokdvium May 21, 2026
2d309b1
Merge pull request #15897 from obsidiansystems/freebsd-errno
xokdvium May 21, 2026
4615c4f
libstore: Refactor to extract function checkCAFixedOutput
dramforever May 18, 2026
39b860f
derivation-builder: Allow locking final output to fail for hash-misma…
dramforever May 18, 2026
950d94b
tests/functional/fixed-slow-vs-bad: Add test case
dramforever May 18, 2026
02e5998
Merge pull request #15884 from lisanna-dettwyler/logging-segfault-leak
edolstra May 22, 2026
7fedce0
Fix nix-copy-closure --include-outputs
rkjnsn May 21, 2026
85587e7
libstore: skip optimisation when GC removes a link concurrently
domenkozar May 22, 2026
de6e43d
Stop leaked logger in Finally block
lisanna-dettwyler May 22, 2026
d4979d9
Merge pull request #15905 from lisanna-dettwyler/fix-logging
xokdvium May 23, 2026
62adee8
Merge pull request #15896 from rkjnsn/fix-copy-closure-include-outputs
xokdvium May 24, 2026
a450f6f
Merge pull request #15904 from cachix/optimise-store-skip-gc-removed-…
xokdvium May 26, 2026
a09d113
Merge pull request #15874 from dramforever/fod-slow-vs-bad
xokdvium May 26, 2026
ceabc31
Separate building/scheduling from storage
Ericson2314 Mar 20, 2026
aee006b
libstore: ship build inputs with the build request
ArkhamKnight25 Jun 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
70 changes: 0 additions & 70 deletions .github/actions/install-nix-action/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,12 @@ inputs:
dogfood:
description: "Whether to use Nix installed from the latest artifact from master branch"
required: true # Be explicit about the fact that we are using unreleased artifacts
experimental-installer:
description: "Whether to use the experimental installer to install Nix"
default: false
experimental-installer-version:
description: "Version of the experimental installer to use. If `latest`, the newest artifact from the default branch is used."
# TODO: This should probably be pinned to a release after https://github.com/NixOS/experimental-nix-installer/pull/49 lands in one
default: "latest"
extra_nix_config:
description: "Gets appended to `/etc/nix/nix.conf` if passed."
install_url:
description: "URL of the Nix installer"
required: false
default: "https://releases.nixos.org/nix/nix-2.32.1/install"
tarball_url:
description: "URL of the Nix tarball to use with the experimental installer"
required: false
github_token:
description: "Github token"
required: true
Expand Down Expand Up @@ -51,74 +41,14 @@ runs:

gh run download "$RUN_ID" --repo "$DOGFOOD_REPO" -n "$INSTALLER_ARTIFACT" -D "$INSTALLER_DOWNLOAD_DIR"
echo "installer-path=file://$INSTALLER_DOWNLOAD_DIR" >> "$GITHUB_OUTPUT"
TARBALL_PATH="$(find "$INSTALLER_DOWNLOAD_DIR" -name 'nix*.tar.xz' -print | head -n 1)"
echo "tarball-path=file://$TARBALL_PATH" >> "$GITHUB_OUTPUT"

echo "::notice ::Dogfooding Nix installer from master (https://github.com/$DOGFOOD_REPO/actions/runs/$RUN_ID)"
env:
GH_TOKEN: ${{ inputs.github_token }}
DOGFOOD_REPO: "NixOS/nix"
- name: "Gather system info for experimental installer"
shell: bash
if: ${{ inputs.experimental-installer == 'true' }}
run: |
echo "::notice Using experimental installer from $EXPERIMENTAL_INSTALLER_REPO (https://github.com/$EXPERIMENTAL_INSTALLER_REPO)"

if [ "$RUNNER_OS" == "Linux" ]; then
EXPERIMENTAL_INSTALLER_SYSTEM="linux"
echo "EXPERIMENTAL_INSTALLER_SYSTEM=$EXPERIMENTAL_INSTALLER_SYSTEM" >> "$GITHUB_ENV"
elif [ "$RUNNER_OS" == "macOS" ]; then
EXPERIMENTAL_INSTALLER_SYSTEM="darwin"
echo "EXPERIMENTAL_INSTALLER_SYSTEM=$EXPERIMENTAL_INSTALLER_SYSTEM" >> "$GITHUB_ENV"
else
echo "::error ::Unsupported RUNNER_OS: $RUNNER_OS"
exit 1
fi

if [ "$RUNNER_ARCH" == "X64" ]; then
EXPERIMENTAL_INSTALLER_ARCH=x86_64
echo "EXPERIMENTAL_INSTALLER_ARCH=$EXPERIMENTAL_INSTALLER_ARCH" >> "$GITHUB_ENV"
elif [ "$RUNNER_ARCH" == "ARM64" ]; then
EXPERIMENTAL_INSTALLER_ARCH=aarch64
echo "EXPERIMENTAL_INSTALLER_ARCH=$EXPERIMENTAL_INSTALLER_ARCH" >> "$GITHUB_ENV"
else
echo "::error ::Unsupported RUNNER_ARCH: $RUNNER_ARCH"
exit 1
fi

echo "EXPERIMENTAL_INSTALLER_ARTIFACT=nix-installer-$EXPERIMENTAL_INSTALLER_ARCH-$EXPERIMENTAL_INSTALLER_SYSTEM" >> "$GITHUB_ENV"
env:
EXPERIMENTAL_INSTALLER_REPO: "NixOS/experimental-nix-installer"
- name: "Download latest experimental installer"
shell: bash
id: download-latest-experimental-installer
if: ${{ inputs.experimental-installer == 'true' && inputs.experimental-installer-version == 'latest' }}
run: |
RUN_ID=$(gh run list --repo "$EXPERIMENTAL_INSTALLER_REPO" --workflow ci.yml --branch main --status success --json databaseId --jq ".[0].databaseId")

EXPERIMENTAL_INSTALLER_DOWNLOAD_DIR="$GITHUB_WORKSPACE/$EXPERIMENTAL_INSTALLER_ARTIFACT"
mkdir -p "$EXPERIMENTAL_INSTALLER_DOWNLOAD_DIR"

gh run download "$RUN_ID" --repo "$EXPERIMENTAL_INSTALLER_REPO" -n "$EXPERIMENTAL_INSTALLER_ARTIFACT" -D "$EXPERIMENTAL_INSTALLER_DOWNLOAD_DIR"
# Executable permissions are lost in artifacts
find $EXPERIMENTAL_INSTALLER_DOWNLOAD_DIR -type f -exec chmod +x {} +
echo "installer-path=$EXPERIMENTAL_INSTALLER_DOWNLOAD_DIR" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ inputs.github_token }}
EXPERIMENTAL_INSTALLER_REPO: "NixOS/experimental-nix-installer"
- uses: cachix/install-nix-action@c134e4c9e34bac6cab09cf239815f9339aaaf84e # v31.5.1
if: ${{ inputs.experimental-installer != 'true' }}
with:
# Ternary operator in GHA: https://www.github.com/actions/runner/issues/409#issuecomment-752775072
install_url: ${{ inputs.dogfood == 'true' && format('{0}/install', steps.download-nix-installer.outputs.installer-path) || inputs.install_url }}
install_options: ${{ inputs.dogfood == 'true' && format('--tarball-url-prefix {0}', steps.download-nix-installer.outputs.installer-path) || '' }}
extra_nix_config: ${{ inputs.extra_nix_config }}
- uses: DeterminateSystems/nix-installer-action@786fff0690178f1234e4e1fe9b536e94f5433196 # v20
if: ${{ inputs.experimental-installer == 'true' }}
with:
diagnostic-endpoint: ""
# TODO: It'd be nice to use `artifacts.nixos.org` for both of these, maybe through an `/experimental-installer/latest` endpoint? or `/commit/<hash>`?
local-root: ${{ inputs.experimental-installer-version == 'latest' && steps.download-latest-experimental-installer.outputs.installer-path || '' }}
source-url: ${{ inputs.experimental-installer-version != 'latest' && 'https://artifacts.nixos.org/experimental-installer/tag/${{ inputs.experimental-installer-version }}/${{ env.EXPERIMENTAL_INSTALLER_ARTIFACT }}' || '' }}
nix-package-url: ${{ inputs.dogfood == 'true' && steps.download-nix-installer.outputs.tarball-path || (inputs.tarball_url || '') }}
extra-conf: ${{ inputs.extra_nix_config }}
8 changes: 8 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,11 @@ updates:
directory: "/"
schedule:
interval: "weekly"
- package-ecosystem: "nix"
directory: "/"
schedule:
interval: "weekly"
groups:
flake-inputs:
patterns:
- "*"
2 changes: 1 addition & 1 deletion .github/workflows/backport.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
# required to find all branches
fetch-depth: 0
- name: Create backport PRs
uses: korthout/backport-action@3c06f323a58619da1e8522229ebc8d5de2633e46 # v4.3.0
uses: korthout/backport-action@66065406958f46e82238fd59546f5a99e69e22aa # v4.5.2
id: backport
with:
# Config README: https://github.com/korthout/backport-action#backport-action
Expand Down
37 changes: 17 additions & 20 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -164,19 +164,19 @@ jobs:
- scenario: on ubuntu
runs-on: ubuntu-24.04
os: linux
experimental-installer: false
rust-installer: false
- scenario: on macos
runs-on: macos-14
os: darwin
experimental-installer: false
- scenario: on ubuntu (experimental)
rust-installer: false
- scenario: on ubuntu (rust)
runs-on: ubuntu-24.04
os: linux
experimental-installer: true
- scenario: on macos (experimental)
rust-installer: true
- scenario: on macos (rust)
runs-on: macos-14
os: darwin
experimental-installer: true
rust-installer: true
name: installer test ${{ matrix.scenario }}
runs-on: ${{ matrix.runs-on }}
steps:
Expand All @@ -188,22 +188,19 @@ jobs:
path: out
- name: Looking up the installer tarball URL
id: installer-tarball-url
run: |
echo "installer-url=file://$GITHUB_WORKSPACE/out" >> "$GITHUB_OUTPUT"
TARBALL_PATH="$(find "$GITHUB_WORKSPACE/out" -name 'nix*.tar.xz' -print | head -n 1)"
echo "tarball-path=file://$TARBALL_PATH" >> "$GITHUB_OUTPUT"
- uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31.10.4
if: ${{ !matrix.experimental-installer }}
run: echo "installer-url=file://$GITHUB_WORKSPACE/out" >> "$GITHUB_OUTPUT"
- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
if: ${{ !matrix.rust-installer }}
with:
install_url: ${{ format('{0}/install', steps.installer-tarball-url.outputs.installer-url) }}
install_options: ${{ format('--tarball-url-prefix {0}', steps.installer-tarball-url.outputs.installer-url) }}
- uses: ./.github/actions/install-nix-action
if: ${{ matrix.experimental-installer }}
with:
dogfood: false
experimental-installer: true
tarball_url: ${{ steps.installer-tarball-url.outputs.tarball-path }}
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: Run rust installer
if: ${{ matrix.rust-installer }}
run: |
chmod +x out/nix-installer
./out/nix-installer install --no-confirm
env:
RUST_BACKTRACE: full
- run: sudo apt install fish zsh
if: matrix.os == 'linux'
- run: brew install fish
Expand Down Expand Up @@ -258,7 +255,7 @@ jobs:
id: installer-tarball-url
run: |
echo "installer-url=file://$GITHUB_WORKSPACE/out" >> "$GITHUB_OUTPUT"
- uses: cachix/install-nix-action@616559265b40713947b9c190a8ff4b507b5df49b # v31.10.4
- uses: cachix/install-nix-action@8aa03977d8d733052d78f4e008a241fd1dbf36b3 # v31.10.6
with:
install_url: ${{ format('{0}/install', steps.installer-tarball-url.outputs.installer-url) }}
install_options: ${{ format('--tarball-url-prefix {0}', steps.installer-tarball-url.outputs.installer-url) }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/upload-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
workflow_dispatch:
inputs:
eval_id:
description: "Hydra evaluation ID"
description: "Hydra evaluation ID (from the maintenance-X.Y-release jobset)"
required: true
type: number
is_latest:
Expand Down Expand Up @@ -34,7 +34,7 @@ jobs:
# get the same uberhack that nix-shell has to support it.
echo "NIX_PATH=nixpkgs=$NIXPKGS_PATH" >> "$GITHUB_ENV"
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708 # v5.1.1
uses: aws-actions/configure-aws-credentials@d979d5b3a71173a29b74b5b88418bfda9437d885 # v6.1.1
with:
role-to-assume: "arn:aws:iam::080433136561:role/nix-release"
role-session-name: nix-release-oidc-${{ github.run_id }}
Expand Down
2 changes: 0 additions & 2 deletions ci/gha/tests/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,6 @@ rec {
nix-expr = prev.nix-expr.override { enableGC = !withSanitizers; };

mesonComponentOverrides = lib.composeManyExtensions componentOverrides;
# Unclear how to make Perl bindings work with a dynamically linked ASAN.
nix-perl-bindings = if withSanitizers then null else prev.nix-perl-bindings;
}
);

Expand Down
6 changes: 5 additions & 1 deletion ci/gha/tests/prepare-installer-for-github-actions
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@

set -euo pipefail

nix build -L ".#installerScriptForGHA" ".#binaryTarball"
nix build -L \
".#installerScriptForGHA" \
".#binaryTarball" \
".#rustInstaller"

mkdir -p out
cp ./result/install "out/install"
name="$(basename "$(realpath ./result-1)")"
# everything before the first dash
cp -r ./result-1 "out/${name%%-*}"
cp ./result-2/bin/nix-installer "out/nix-installer"
2 changes: 1 addition & 1 deletion doc/manual/meson.build
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
project(
'nix-manual',
version : files('.version'),
meson_version : '>= 1.1',
meson_version : '>= 1.8',
license : 'LGPL-2.1-or-later',
)

Expand Down
2 changes: 1 addition & 1 deletion doc/manual/remove_before_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def main():
shutil.rmtree(output, ignore_errors=True)
shutil.rmtree(output_temp, ignore_errors=True)

# Execute nix command with `--write-to` tempary output
# Execute nix command with `--write-to` temporary output
nix_command_write_to = nix_command + ['--write-to', output_temp]
subprocess.run(nix_command_write_to, check=True)

Expand Down
7 changes: 3 additions & 4 deletions doc/manual/rl-next/closure-gc.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
---
synopsis: "Added `--skip-alive` option to `nix store delete` for collecting garbage within a closure"
issues: 7239
prs: 15236
prs: [15236, 15727]
---

`nix store delete --recursive --skip-alive` can be used to collect garbage
within a closure, in which case it will only collect the dead paths that are
part of the closure of its arguments.
`nix store delete --recursive --skip-alive` can be used to collect garbage within a closure, in which case it will only collect the dead paths that are part of the closure of its arguments.
The additional option `--also-referrers` is added to support this mode, which allows referrers of paths in the closure to also be deleted.
8 changes: 8 additions & 0 deletions doc/manual/rl-next/delete-keep.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
synopsis: "Fixed a bug where keep-outputs and keep-derivations can interfere with delete commands"
prs: [15776]
---

Setting `keep-derivations = true` and trying to delete a derivation with realised outputs would previously fail.
Same with `keep-outputs = true` and trying to delete an output that still has derivers.
These options no longer affect the deletion commands, and are now documented as such.
10 changes: 10 additions & 0 deletions doc/manual/rl-next/freebsd-sandboxing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
synopsis: Enable FreeBSD sandboxing, add `x86_64-freebsd` to installer
prs: [15673, 13281, 9968]
---

A FreeBSD build has been added to the traditional installer script, with sandboxing enabled.
The beta installer is not yet supported.

FreeBSD support is not as well-tested as Linux or macOS, but is fully capable of building packages
and performing other tasks expected of Nix on Linux.
10 changes: 10 additions & 0 deletions doc/manual/rl-next/seccomp-block-listxattr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
synopsis: "Linux sandbox: also block `listxattr` syscalls"
prs: [15743]
---

The Linux sandbox now also returns `ENOTSUP` for `listxattr`,
`llistxattr` and `flistxattr`, matching the existing treatment of
`getxattr`/`setxattr`/`removexattr`. This prevents host xattrs (e.g.
`security.selinux`) from leaking into builds and fixes tools such as
`mkfs.ubifs` that probe xattr support via `listxattr`.
1 change: 1 addition & 0 deletions doc/manual/source/_redirects
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
/expressions/language-values /language/values 301!
/expressions/* /language/:splat 301!
/language/values /language/types 301!
/language/values.html /language/types 301!
/language/constructs /language/syntax 301!
/language/builtin-constants /language/builtins 301!

Expand Down
2 changes: 1 addition & 1 deletion doc/manual/source/command-ref/env-common.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@ When [`use-xdg-base-directories`] is enabled, the configuration directory is res

Likewise for the state and cache directories.

## Miscellanous environment variables
## Miscellaneous environment variables

- <span id="env-IN_NIX_SHELL">[`IN_NIX_SHELL`](#env-IN_NIX_SHELL)</span>

Expand Down
1 change: 0 additions & 1 deletion doc/manual/source/development/debugging.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ or GCC. This is useful when debugging memory corruption issues.
```console
[nix-shell]$ export mesonBuildType=debugoptimized
[nix-shell]$ appendToVar mesonFlags "-Dlibexpr:gc=disabled" # Disable Boehm
[nix-shell]$ appendToVar mesonFlags "-Dbindings=false" # Disable nix-perl
[nix-shell]$ appendToVar mesonFlags "-Db_sanitize=address,undefined"
```

Expand Down
2 changes: 1 addition & 1 deletion doc/manual/source/installation/prerequisites-source.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
This is an optional dependency and can be disabled
by providing a `--disable-cpuid` to the `configure` script.

- Unless `./configure --disable-unit-tests` is specified, GoogleTest (GTest) and
- Unless `meson setup build -Dunit-tests=false` is specified, GoogleTest (GTest) and
RapidCheck are required, which are available at
<https://google.github.io/googletest/> and
<https://github.com/emil-e/rapidcheck> respectively.
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ additionalProperties: false
title: Build Trace Key
description: |
A [build trace entry](@docroot@/store/build-trace.md) is a key-value pair.
This is the "key" part, refering to a derivation and output.
This is the "key" part, referring to a derivation and output.
type: object
required:
- drvPath
Expand Down
2 changes: 1 addition & 1 deletion doc/manual/source/release-notes/rl-2.30.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
- Deprecate manually making structured attrs using the `__json` attribute [#13220](https://github.com/NixOS/nix/pull/13220)

The proper way to create a derivation using [structured attrs] in the Nix language is by using `__structuredAttrs = true` with [`builtins.derivation`].
However, by exploiting how structured attrs are implementated, it has also been possible to create them by setting the `__json` environment variable to a serialized JSON string.
However, by exploiting how structured attrs are implemented, it has also been possible to create them by setting the `__json` environment variable to a serialized JSON string.
This sneaky alternative method is now deprecated, and may be disallowed in future versions of Nix.

[structured attrs]: @docroot@/language/advanced-attributes.md#adv-attr-structuredAttrs
Expand Down
2 changes: 1 addition & 1 deletion doc/manual/source/release-notes/rl-2.32.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

- Derivation JSON format now uses store path basenames only [#13570](https://github.com/NixOS/nix/issues/13570) [#13980](https://github.com/NixOS/nix/pull/13980)

Experience with many JSON frameworks (e.g. nlohmann/json in C++, Serde in Rust, and Aeson in Haskell) has shown that the use of the store directory in JSON formats is an impediment to systematic JSON formats, because it requires the serializer/deserializer to take an extra paramater (the store directory).
Experience with many JSON frameworks (e.g. nlohmann/json in C++, Serde in Rust, and Aeson in Haskell) has shown that the use of the store directory in JSON formats is an impediment to systematic JSON formats, because it requires the serializer/deserializer to take an extra parameter (the store directory).

We ultimately want to rectify this issue with all JSON formats to the extent allowed by our stability promises. To start with, we are changing the JSON format for derivations because the `nix derivation` commands are — in addition to being formally unstable — less widely used than other unstable commands.

Expand Down
2 changes: 1 addition & 1 deletion doc/manual/source/store/file-system-object.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Every file system object is one of the following:
In general, Nix does not assign any semantics to symbolic links.
Certain operations however, may make additional assumptions and attempt to use the target to find another file system object.

> See [the Wikpedia article on symbolic links](https://en.m.wikipedia.org/wiki/Symbolic_link) for background information if you are unfamiliar with this Unix concept.
> See [the Wikipedia article on symbolic links](https://en.m.wikipedia.org/wiki/Symbolic_link) for background information if you are unfamiliar with this Unix concept.

File system objects and their children form a tree.
A bare file or symlink can be a root file system object.
Expand Down
2 changes: 1 addition & 1 deletion doc/manual/theme/head.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ MathJax = {
}
};
</script>
<!-- Load a newer versino of MathJax than mdbook does by default, and which in particular has working relative paths for the "bussproofs" extension. -->
<!-- Load a newer version of MathJax than mdbook does by default, and which in particular has working relative paths for the "bussproofs" extension. -->
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/3.0.1/es5/tex-mml-chtml.js"></script>
Loading
Loading