Age | Commit message (Collapse) | Author |
|
|
|
Most functions now take a StorePath argument rather than a Path (which
is just an alias for std::string). The StorePath constructor ensures
that the path is syntactically correct (i.e. it looks like
<store-dir>/<base32-hash>-<name>). Similarly, functions like
buildPaths() now take a StorePathWithOutputs, rather than abusing Path
by adding a '!<outputs>' suffix.
Note that the StorePath type is implemented in Rust. This involves
some hackery to allow Rust values to be used directly in C++, via a
helper type whose destructor calls the Rust type's drop()
function. The main issue is the dynamic nature of C++ move semantics:
after we have moved a Rust value, we should not call the drop function
on the original value. So when we move a value, we set the original
value to bitwise zero, and the destructor only calls drop() if the
value is not bitwise zero. This should be sufficient for most types.
Also lots of minor cleanups to the C++ API to make it more modern
(e.g. using std::optional and std::string_view in some places).
|
|
(cherry picked from commit 3392f1b77869269580b58e4931b7a79f44799ce0)
|
|
(cherry picked from commit 96c6b08ed7f99be84cb1816515a368392d19dbb5)
|
|
(cherry picked from commit a0de58f471c9087d8e6cc60a6078f9940a125b15)
|
|
(cherry picked from commit f70434b1fbbdb0e188718f0c55a8156a7aa08744)
|
|
(cherry picked from commit 15a16e5c05d547ec07170df2392263e5e891447b)
|
|
https://hydra.nixos.org/build/107716759
|
|
|
|
|
|
|
|
|
|
This replaces the '(...)' installable syntax, which is not very
discoverable. The downside is that you can't have multiple expressions
or mix expressions and other installables.
|
|
|
|
This allows distinguishing between an empty value and no value.
|
|
This doesn't work anymore since `packages` was removed from the
`nixpkgs`-fork with flake support[1], now it's only possible to refer to
pkgs via `legacyPackages`.
[1] https://github.com/edolstra/nixpkgs/commit/49c9b71e4ca98722cecd64ce8d53c1a4b9c46b64
|
|
Fixes handling of '=' in unquoted strings and escaped characters in
$'...' strings.
|
|
|
|
libutil should not depend on libexpr.
|
|
|
|
|
|
|
|
Move environment related code to a separate function. Create a new char** if ignoreEnvironment is set rather than calling clearEnv
|
|
|
|
|
|
|
|
change deprecated attribute syntax in run examples
|
|
|
|
Update nix eval --help msg to not include deprecated command
|
|
The intent of the code was that if the window size cannot be determined,
it would be treated as having the maximum possible size. Because of a
missing assignment, it was actually treated as having a width of 0.
The reason the width could not be determined was because it was obtained
from stdout, not stderr, even though the printing was done to stderr.
This commit addresses both issues.
|
|
|
|
Fixes #3186
|
|
|
|
Add missing docstring on InstallableCommand. Also, some of these were wrapped
when they're right next to a line longer than the unwrapped line, so we can just
unwrap them to save vertical space.
|
|
|
|
|
|
|
|
extract the derivation to filename:lineno heuristic
|
|
|
|
This allows to have a repl-centric workflow to working on nixpkgs.
Usage:
:edit <package> - heuristic that find the package file path
:edit <path> - just open the editor on the file path
Once invoked, `nix repl` will open $EDITOR on that file path. Once the
editor exits, `nix repl` will automatically reload itself.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|