Age | Commit message (Collapse) | Author |
|
This does pathExists on various paths, which crashes on EPERM in the
macOS sandbox.
|
|
And fix a test failure in the sandbox due to /home
existing on Darwin but not being accessible in the sandbox since it's a
symlink to /System/Volumes/Data/home, see
https://github.com/NixOS/nix/actions/runs/4205378453/jobs/7297384658#step:6:2127:
C++ exception with description "error: getting status of /home/schnitzel/darmstadt/pommes: Operation not permitted" thrown in the test body.
On Linux this wasn't a problem because there /home doesn't exist in the sandbox
|
|
The primop `builtins.replaceStrings` currently always strictly evaluates the
replacement strings, however time and space are wasted for their computation
if the corresponding pattern do not occur in the input string. This commit
makes the evaluation of the replacement strings lazy by deferring their
evaluation to when the corresponding pattern are matched and memoize the result
for efficient retrieval on subsequent matches.
The testcases for replaceStrings was updated to check for lazy evaluation
of the replacements. A note was also added in the release notes to
document the behavior change.
|
|
installer: don't assume GNU diff
|
|
macOS Ventura ships with it's own version of diff. Try to output a
similar diff with Apple diff as with GNU diff, instead of failing
Helps https://github.com/NixOS/nix/issues/7286
|
|
When encountering a build error, Nix moves the output paths out of the
chroot into their final location (for “easier debugging of build
failures”). However this was broken for chroot stores as it was moving
it to the _logical_ location, not the _physical_ one.
Fix it by moving to the physical (_real_) location.
Fix https://github.com/NixOS/nix/issues/8395
|
|
The `hashed-mirrors` option did use to have this default value,
but it was removed and re-added with an empty default value.
As the autogenerated docs show the (actual) default values from code,
remove this incorrect reference from the docs.
I was updating my nix.conf settings after a few years and noticed this.
|
|
Fix typo in error message of too long store path
|
|
|
|
`nix flake show` now skips derivations for foreign systems: https://github.com/NixOS/nix/pull/6988
This commit borrows from that to implement the same behavior for `nix flake check`.
See "nix flake check breaks on IFD in multi-platform flake" https://github.com/NixOS/nix/issues/4265
|
|
Make mounting ssl cert file optional
|
|
Revert "Revert "Use template structs instead of phantoms""
|
|
|
|
|
|
|
|
Ask for git credentials in fetcher
|
|
Support `repairPath` on most stores.
|
|
Allow system certs access to fixed-output derivations
|
|
Don't use `store-api.hh` in `worker-protocol.hh`
|
|
Upgrade `downstreamPlaceholder` to a type with methods
|
|
|
|
|
|
Using abstract types like can help cut down on compilation time, both
from scratch, and especially incremental builds during development. The
idea is that `worker-protocol.hh` can declare all the (de)serializers, but
only again abstract types; when code needs to use some (de)serializers, it can
include headers just for the data types it needs to (de)serialize.
`store-api.hh` in particular is a bit of a sledgehammer, and the data
types we want to serialize have their own headers.
|
|
This is the more typically way to do [Argument-dependent
lookup](https://en.cppreference.com/w/cpp/language/adl)-leveraging
generic serializers in C++. It makes the relationship between the `read`
and `write` methods more clear and rigorous, and also looks more
familiar to users coming from other languages that do not have C++'s
libertine ad-hoc overloading.
I am returning to this because during the review in
https://github.com/NixOS/nix/pull/6223, it came up as something that
would make the code easier to read --- easier today hopefully already,
but definitely easier if we were have multiple codified protocols with
code sharing between them as that PR seeks to accomplish.
If I recall correctly, the main criticism of this the first time around
(in 2020) was that having to specify the type when writing, e.g.
`WorkerProto<MyType>::write`, was too verbose and cumbersome. This is
now addressed with the `workerProtoWrite` wrapper function.
This method is also the way `nlohmann::json`, which we have used for a
number of years now, does its serializers, for what its worth.
This reverts commit 45a0ed82f089158a79c8c25ef844c55e4a74fc35. That
commit in turn reverted 9ab07e99f527d1fa3adfa02839da477a1528d64b.
|
|
This gets us ready for dynamic derivation dependencies (part of RFC 92).
|
|
This is good in general, but in particular ensures when we heavily
refactor it in the next commit there is less likelihood for an
unintentional change in behavior to sneak in.
|
|
list files used by `nix-channel` on its own man page
|
|
Fix ControlMaster behaviour
|
|
Move `worker_proto` defs out of `remote-store.cc` to own file
|
|
These items are not templates, and they declared in
`worker-protocol.hh`; therefore they should live in a
`worker-protocol.cc`.
Anything else needlessly diverges from convention. After all, it is not
like this code is only used in `remote-store.cc`; it is also used in
`daemon.cc`. There is no good reason to place it with the client
implementation or the server implementation when it used equally by
both.
|
|
fix wording on output-addressed store objects
|
|
hashing is an implementation detail.
add references to the other terms.
|
|
use consistent wording everywhere.
add some details on the configuration option documentation.
|
|
Convert short options to long ones, 2023 edition
|
|
|
|
it's more likely for readers to find it right there.
this also slightly rewords examples to make them stand out better.
in the long run there probably needs to be a dedicated section on formal syntax, and better highlighting of examples.
|
|
fix "add an option to include flake-registry..."
|
|
|
|
|
|
e.g. nix-env -e subversion => nix-env --uninstall subversion
The aim is to make the documentation less cryptic for newcomers and the
long options are more self-documenting.
The change was made with the following script:
<https://github.com/aschmolck/convert-short-nix-opts-to-long-ones>
and sanity checked visually.
|
|
|
|
Fix the segfault on `nix profile install` with conflict
|
|
|
|
undefined
|
|
commit 6dbce3215fa2e30e1daafcc70d6926cd97987612 was missing a pair of
parentheses
|
|
- If the element comes from a flake, print the full flakeref (with the
fragment part) and not just the reference to the flake itself
- If the element doesn't come from a flake, print its store path(s)
This is a bit too verbose, but has the advantages of being correct (and
not crashing), so it's strictly better than the previous situation
Fix https://github.com/NixOS/nix/issues/8284
|
|
This method isn't used to describe what the element is, but to return a
unique identifier for it whithin the current profile
|
|
This gives some more context and should clarify why it works that way.
Also link it from the section on `NIX_USER_CONF_FILES`.
Co-authored-by: John Ericson <git@JohnEricson.me>
|
|
Dedup some markdown -> C++ big literal stuff in build system
|
|
Delete commited build artifacts
|