- Sep 18, 2020
-
-
Bryan Richter authored
pkgs.fetchurl supports an executable argument, which is especially nice when downloading a large executable. This patch adds the same option to nix-prefetch-url. I have tested this to work on the simple case of prefetching a little executable: 1. nix-prefetch-url --executable https://my/little/script 2. Paste the hash into a pkgs.fetchurl-based package, script-pkg.nix 3. Delete the output from the store to avoid any misidentified artifacts 4. Realise the package script-pkg.nix 5. Run the executable I repeated the above while using --name, as well. I suspect --executable would have no meaningful effect if combined with --unpack, but I have not tried it.
-
- Jul 10, 2020
-
-
Eelco Dolstra authored
-
Eelco Dolstra authored
Fixes #3684.
-
- Jul 01, 2020
-
-
Carlo Nucera authored
-
- Jun 19, 2020
-
-
John Ericson authored
-
John Ericson authored
-
- Jun 18, 2020
-
-
John Ericson authored
Not a regular git revert as there have been many merges and things.
-
- Jun 08, 2020
-
-
regnat authored
Needed so that we can include it as a logger in loggers.cc without adding a dependency on nix This also requires moving names.hh to libutil to prevent a circular dependency between libmain and libexpr
-
- Jun 02, 2020
-
-
John Ericson authored
Instead, `Hash` uses `std::optional<HashType>`. In the future, we may also make `Hash` itself require a known hash type, encoraging people to use `std::optional<Hash>` instead.
-
- Apr 21, 2020
-
-
Ben Burdette authored
-
- Apr 08, 2020
-
-
Nikola Knezevic authored
-
Nikola Knezevic authored
-
Nikola Knezevic authored
-
Nikola Knezevic authored
-
Nikola Knezevic authored
-
- Mar 30, 2020
-
-
Eelco Dolstra authored
(cherry picked from commit 2c692a3b)
-
Eelco Dolstra authored
-
- Mar 29, 2020
-
-
John Ericson authored
-
John Ericson authored
This does a few enums; the rest will be gotten in subsequent commits.
-
- Mar 24, 2020
-
-
Eelco Dolstra authored
(cherry picked from commit 0b013a54)
-
- Feb 07, 2020
-
-
Eelco Dolstra authored
-
- Jan 05, 2020
-
-
Daiderd Jordan authored
Starting ba87b08f getEnv now returns an std::optional which means these getEnv() != "" conditions no longer happen if the variables are not defined.
-
- Dec 10, 2019
-
-
Eelco Dolstra authored
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).
-
- Dec 07, 2019
-
-
Yorick van Pelt authored
-
- Nov 26, 2019
-
-
Eelco Dolstra authored
Also, fetchGit now runs in O(1) memory since we pipe the output of 'git archive' directly into unpackTarball() (rather than first reading it all into memory).
-
- Nov 09, 2018
-
-
Eelco Dolstra authored
-
- Oct 26, 2018
-
-
Will Dietz authored
-
Eelco Dolstra authored
These are all symlinks to 'nix' now, reducing the installed size by about ~1.7 MiB.
-
- Jul 12, 2018
-
-
Eelco Dolstra authored
Before: $ command time nix-prefetch-url https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.17.6.tar.xz 1.19user 1.02system 0:41.96elapsed 5%CPU (0avgtext+0avgdata 182720maxresident)k After: 1.38user 1.05system 0:39.73elapsed 6%CPU (0avgtext+0avgdata 16204maxresident)k Note however that addToStore() can still take a lot of memory (e.g. RemoteStore::addToStore() is constant space, but LocalStore::addToStore() isn't; that's fixed by https://github.com/edolstra/nix/commit/c94b4fc7ee0c7b322a5f3c7ee784063b47a11d98 though). Fixes #1400.
-
- Jun 12, 2018
-
-
Eelco Dolstra authored
EvalState contains a few counters (e.g. nrValues) that increase quickly enough that they end up being interpreted as pointers by the garbage collector. Moving it to the heap makes them invisible to the garbage collector. This reduces the max RSS doing 100 evaluations of nixos.tests.firefox.x86_64-linux.drvPath from 455 MiB to 292 MiB. Note: ideally, allocations would be much further up in the 64-bit address space to reduce the odds of an integer being misinterpreted as a pointer. Maybe we can use some linker magic to move the .bss segment to a higher address.
-
- Feb 08, 2018
-
-
Shea Levy authored
All plugins in plugin-files will be dlopened, allowing them to statically construct instances of the various Register* types Nix supports.
-
- Oct 24, 2017
-
-
Eelco Dolstra authored
Also, random cleanup to argument handling.
-
- Sep 18, 2017
-
-
Eelco Dolstra authored
Fixes #1568.
-
- Jul 30, 2017
-
-
Jörg Thalheim authored
Relevant RFC: NixOS/rfcs#4 $ ag -l | xargs sed -i -e "/\"/s/’/'/g;/\"/s/‘/'/g"
-
- Jul 04, 2017
-
-
Eelco Dolstra authored
Also simplify the Hash API. Fixes #1437.
-
- Mar 15, 2017
-
-
Eelco Dolstra authored
For example, if we call brotli with an empty input, it shouldn't read from the caller's stdin.
-
- Nov 25, 2016
-
-
Eelco Dolstra authored
This reverts commit f78126bf. There really is no need for such a massive change...
-
Guillaume Maudoux authored
-
- Sep 21, 2016
-
-
Eelco Dolstra authored
-
- Sep 14, 2016
-
-
Eelco Dolstra authored
The binary cache store can now use HTTP/2 to do lookups. This is much more efficient than HTTP/1.1 due to multiplexing: we can issue many requests in parallel over a single TCP connection. Thus it's no longer necessary to use a bunch of concurrent TCP connections (25 by default). For example, downloading 802 .narinfo files from https://cache.nixos.org/, using a single TCP connection, takes 11.8s with HTTP/1.1, but only 0.61s with HTTP/2. This did require a fairly substantial rewrite of the Downloader class to use the curl multi interface, because otherwise curl wouldn't be able to do multiplexing for us. As a bonus, we get connection reuse even with HTTP/1.1. All downloads are now handled by a single worker thread. Clients call Downloader::enqueueDownload() to tell the worker thread to start the download, getting a std::future to the result.
-