Eelco Dolstra
c4d740115e
Merge pull request #2930 from NixOS/eval-cache
...
Flake evaluation cache
2019-06-11 12:12:59 +02:00
Eelco Dolstra
c47d2dac6c
Disable EvalCache in impure mode
2019-06-07 22:38:39 +02:00
Eelco Dolstra
6644b6099b
Add flake evaluation cache
...
This exploits the hermetic nature of flake evaluation to speed up
repeated evaluations of a flake output attribute.
For example (doing 'nix build' on an already present package):
$ time nix build nixpkgs:firefox
real 0m1.497s
user 0m1.160s
sys 0m0.139s
$ time nix build nixpkgs:firefox
real 0m0.052s
user 0m0.038s
sys 0m0.007s
The cache is ~/.cache/nix/eval-cache-v1.sqlite, which has entries like
INSERT INTO Attributes VALUES(
X'92a907d4efe933af2a46959b082cdff176aa5bfeb47a98fabd234809a67ab195',
'packages.firefox',
1,
'/nix/store/pbalzf8x19hckr8cwdv62rd6g0lqgc38-firefox-67.0.drv /nix/store/g6q0gx0v6xvdnizp8lrcw7c4gdkzana0-firefox-67.0 out');
where the hash 92a9... is a fingerprint over the flake store path and
the contents of the lockfile. Because flakes are evaluated in pure
mode, this uniquely identifies the evaluation result.
2019-06-07 22:25:48 +02:00
Eelco Dolstra
671f16aee0
Merge pull request #2920 from NixOS/lazy-flakes
...
Lazy flake input fetching
2019-06-06 12:28:20 +02:00
Matthew Bauer
5011a52cf3
Just enable hack on macOS
...
This is not needed on linux at all! Tried to explain as much as I
understand with the problem.
2019-06-05 20:20:50 -04:00
Eelco Dolstra
54aff8430c
Move flake-related stuff to src/libexpr/flake
2019-06-05 16:51:54 +02:00
Matthew Bauer
4a3e96281d
Handle SIGWINCH in main thread
...
For the SIGWINCH signal to be caught, it needs to be set in sigaction
on the main thread. Previously, this was broken, and updateWindowSize
was never being called. Tested on macOS 10.14.
2019-06-05 00:40:45 -04:00
Eelco Dolstra
1b05792988
Shorter syntax for referencing flake outputs
...
Fixes #2819 .
2019-06-04 22:35:43 +02:00
Eelco Dolstra
ce225615c3
Eliminate duplicate fetching of the top-level flake
2019-06-04 21:10:53 +02:00
Eelco Dolstra
087530dec4
Add comments
2019-06-04 21:07:55 +02:00
Eelco Dolstra
4d31cf83f2
Update flake.lock
2019-06-04 20:57:18 +02:00
Eelco Dolstra
1e53a07712
Make non-flake inputs lazy
...
Also add a proper test for non-flake inputs.
2019-06-04 20:56:42 +02:00
Eelco Dolstra
1c5067b9a7
Check hash
2019-06-04 20:35:35 +02:00
Eelco Dolstra
45b5c606ac
Don't register invalid paths as GC roots
...
Unfortunately this doesn't work. Maybe we should keep separate roots
for each path.
2019-06-04 20:34:08 +02:00
Eelco Dolstra
4ec1a9ab40
Fix test
2019-06-04 20:33:49 +02:00
Eelco Dolstra
5fe7be2409
Rename dep -> input
...
Also use nlohmann::json range-based for.
2019-06-04 20:08:13 +02:00
Eelco Dolstra
9e99b5205c
Move LockFile and related types to a separate file
2019-06-04 20:01:21 +02:00
Eelco Dolstra
278114d559
Fix GC closure generation
2019-06-04 19:45:16 +02:00
Eelco Dolstra
6dbd5c26e6
Make flake input fetching lazy
...
As long as the flake input is locked, it is now only fetched when it
is evaluated (e.g. "nixpkgs" is fetched when
"inputs.nixpkgs.<something>" is evaluated).
This required adding an "id" attribute to the members of "inputs" in
lockfiles, e.g.
"inputs": {
"nixpkgs/release-19.03": {
"id": "nixpkgs",
"inputs": {},
"narHash": "sha256-eYtxncIMFVmOHaHBtTdPGcs/AnJqKqA6tHCm0UmPYQU=",
"nonFlakeInputs": {},
"uri": "github:edolstra/nixpkgs/e9d5882bb861dc48f8d46960e7c820efdbe8f9c1"
}
}
because the flake ID needs to be known beforehand to construct the
"inputs" attrset.
Fixes #2913 .
2019-06-04 19:17:03 +02:00
Eelco Dolstra
fb0ad898ed
Merge pull request #2918 from JorisE/patch-1
...
Minor typo
2019-06-04 14:38:52 +02:00
JorisE
4b0d613383
Minor typo
2019-06-04 14:12:03 +02:00
Eelco Dolstra
c7c562416c
shell.nix: Use clang by default
...
Clang compiles faster (121s vs 156s for GCC 7) so it's a bit nicer for
development.
2019-06-04 13:44:12 +02:00
Eelco Dolstra
653c4e439b
Fix clang compilation error
...
https://hydra.nixos.org/build/94332344
https://stackoverflow.com/questions/46114214/lambda-implicit-capture-fails-with-variable-declared-from-structured-binding
2019-06-03 21:51:06 +02:00
Eelco Dolstra
412684f9dc
Merge pull request #2914 from CSVdB/finegrainedEpochs
...
Made epochs more fine-grained
2019-06-03 15:36:43 +02:00
Nick Van den Broeck
d9a6a75ed2
Made epochs more fine-grained
...
Fixes #2894
2019-06-03 14:47:47 +02:00
Eelco Dolstra
507c150034
Merge pull request #2909 from NixOS/flake-apps
...
Add 'nix app' command
2019-06-03 09:34:36 +02:00
Eelco Dolstra
5fbd9fee0b
Add 'nix app' command
...
This is like 'nix run', except that the command to execute is defined
in a flake output, e.g.
defaultApp = {
type = "app";
program = "${packages.blender_2_80}/bin/blender";
};
Thus you can do
$ nix app blender-bin
to start Blender from the 'blender-bin' flake.
In the future, we can extend this with sandboxing. (For example we
would want to be able to specify that Blender should not have network
access by default and should only have access to certain paths in the
user's home directory.)
2019-06-03 09:27:03 +02:00
Eelco Dolstra
fb692e5f7b
Bindings: Add convenience method for requiring an attribute
2019-06-03 09:27:03 +02:00
Eelco Dolstra
a2f86ac647
Merge remote-tracking branch 'origin/master' into flakes
2019-06-03 09:22:19 +02:00
Eelco Dolstra
95bdfaa8bd
Merge pull request #2907 from NixOS/subdir
...
Subdirectory improvements
2019-06-03 09:21:31 +02:00
Eelco Dolstra
aec545c20b
Fix segfault in builtin fetchurl with hashed mirrors + SRI hashes
2019-06-01 15:27:43 +02:00
Eelco Dolstra
5450af5d0d
Merge pull request #2910 from worldofpeace/funding
...
Add .github/FUNDING.yml
2019-06-01 09:56:48 +02:00
worldofpeace
2d34028b1e
Add .github/FUNDING.yml
2019-05-31 22:19:46 -04:00
Eelco Dolstra
15f241775a
Doh
2019-05-31 23:21:53 +02:00
Eelco Dolstra
8cb3bbd504
Fix handling of bare flakerefs containing a colon
2019-05-31 22:17:39 +02:00
Eelco Dolstra
8abb8647a3
Automatically determine subdir for path flakes
...
This means that in a flake in a subdirectory of a Git repo, you can
now do
$ nix build
rather than the inconvenient
$ nix build ../..?dir=foo/bar
2019-05-31 21:52:02 +02:00
Eelco Dolstra
ccb1bad612
Allow bare flakerefs as installables
...
So now
$ nix build blender-bin
works and builds the default package from that flake. You don't need
to add a colon at the end anymore.
2019-05-31 21:42:23 +02:00
Eelco Dolstra
7adb10d29b
Fix reading the lockfile of a flake in a subdirectory
2019-05-31 20:12:59 +02:00
Eelco Dolstra
9169046e64
Add operator << for LockFile
...
Useful for debugging.
2019-05-31 20:10:56 +02:00
Eelco Dolstra
b971e406de
Support 'dir' and other parameters in path flakerefs
2019-05-31 19:01:11 +02:00
Eelco Dolstra
63c5c91cc0
Show hash mismatch warnings in SRI format
2019-05-31 18:48:28 +02:00
Eelco Dolstra
134942f56a
Merge pull request #2904 from NixOS/flake-terminology
...
Rename requires -> inputs, provides -> outputs
2019-05-31 10:00:51 +02:00
Eelco Dolstra
094539ef4a
Rename requires -> inputs, provides -> outputs
...
Issue #2828 .
2019-05-31 09:59:48 +02:00
Eelco Dolstra
65e88694c2
Merge pull request #2903 from NixOS/check-flake
...
Add "nix flake check"
2019-05-31 09:57:04 +02:00
Eelco Dolstra
2b62928905
Merge pull request #2905 from ln-nl/patch-1
...
release-common: fix build with `config.allowAliases = false`
2019-05-31 09:56:47 +02:00
ln-nl
3b1cc8b0cb
release-common: fix build with config.allowAliases = false
...
```sh
> nix build -f release.nix build.x86_64-linux
error: undefined variable 'docbook5_xsl' at /vcs/nix/release-common.nix:45:7
```
2019-05-30 18:08:33 +03:00
Eelco Dolstra
d8abee9bc6
Merge pull request #2892 from johannes-climacus/master
...
Replace `type` with `command -v` in install script
2019-05-30 14:15:23 +02:00
Eelco Dolstra
49436bdbb7
nix flake info --json: List the "provides"
...
It also lists the contents of "checks" and "packages".
For example:
$ nix flake info --json | jq
{
"branch": "HEAD",
"description": "The purely functional package manager",
"epoch": 2019,
"id": "nix",
"lastModified": 1559161142,
"path": "/nix/store/2w2qla8735dbxah8gai8r1nsbf5x4f5d-source",
"provides": {
"checks": {
"binaryTarball": {},
"nix-copy-closure": {},
"perlBindings": {},
"remoteBuilds": {},
"setuid": {}
},
"defaultPackage": {},
"devShell": {},
"hydraJobs": {},
"packages": {
"nix": {},
"nix-perl-bindings": {}
}
},
"revCount": 6955,
"revision": "8cb24e04e8b6cc60e2504733afe78e0eadafcd98",
"uri": "/home/eelco/Dev/nix"
}
Fixes #2820 .
2019-05-29 22:22:28 +02:00
Eelco Dolstra
3488fa7c6c
Hack: Use legacyPackages from Nixpkgs
...
Nixpkgs doesn't provide a clean "packages" set yet, so until that's
the case, look for packages in "legacyPackages" as well.
2019-05-29 22:22:28 +02:00
Eelco Dolstra
b70fc8f30c
flake.nix: Add more checks
2019-05-29 22:22:28 +02:00