Eelco Dolstra
015f8f1c13
Improve lock file generation
...
This is now done in a single pass. Also fixes some issues when
updating flakes with circular dependencies. Finally, when using
'--recreate-lock-file --commit-lock-file', the commit message now
correctly shows the differences.
2020-03-27 21:08:41 +01:00
Eelco Dolstra
3fa1e7dace
Fix diffLockFiles()
2020-03-27 16:15:50 +01:00
Eelco Dolstra
1537e270fb
Merge remote-tracking branch 'origin/master' into flakes
2020-03-20 13:15:11 +01:00
Eelco Dolstra
f6ddf48882
Get rid of downloadCached()
...
Everything uses the generic caching system now.
2020-03-18 17:24:19 +01:00
Eelco Dolstra
d1165d8791
Require shallow clones to be requested explicitly
...
If you do a fetchTree on a Git repository, whether the result contains
a revCount attribute should not depend on whether that repository
happens to be a shallow clone or not. That would complicate caching a
lot and would be semantically messy. So applying fetchTree/fetchGit to
a shallow repository is now an error unless you pass the attribute
'shallow = true'. If 'shallow = true', we don't return revCount, even
if the repository is not actually shallow.
Note that Nix itself is not doing shallow clones at the moment. But it
could do so as an optimisation if the user specifies 'shallow = true'.
Issue #2988 .
2020-03-17 22:35:29 +01:00
Eelco Dolstra
2a4e4f6a6e
Unified fetcher caching system
2020-03-17 22:35:29 +01:00
Eelco Dolstra
fbcb897e21
Add a test for shallow Git clones
...
Also, don't return a revCount anymore for shallow or dirty Git trees,
since it's incorrect.
Closes #2988 .
2020-03-16 13:20:32 +01:00
John Ericson
68fe0d9809
Add missing #include <regex>
2020-03-13 21:24:35 -04:00
Eelco Dolstra
ae9119167e
Change the lock file to a graph
...
This enables support for cycles between flakes.
2020-03-12 22:06:57 +01:00
Eelco Dolstra
e188fe7c6d
Move call-flake.nix into libexpr
2020-03-11 17:04:51 +01:00
Eelco Dolstra
35f6651735
Merge remote-tracking branch 'origin/master' into flakes
2020-03-11 17:03:38 +01:00
Eelco Dolstra
9950cdec35
Move some corepkgs into the nix binary
2020-03-11 16:57:48 +01:00
Eelco Dolstra
e02481ded2
parseExprFromString(): Use std::string_view
2020-03-11 16:56:29 +01:00
Eelco Dolstra
cfc38257cf
Fix flake subdirectory handling
2020-03-10 19:21:47 +01:00
Eelco Dolstra
73769b28e3
Move calling flakes into a Nix helper function (call-flake.nix)
2020-03-09 15:28:41 +01:00
Eelco Dolstra
5a1514adb8
Add 'flake' attribute to lock files to denote non-flakes
2020-03-09 15:27:49 +01:00
Eelco Dolstra
73b6d87e17
Merge remote-tracking branch 'origin/master' into flakes
2020-03-04 13:58:42 +01:00
Eelco Dolstra
401b5bc541
builtins.cache: Cache regular expressions
...
The evaluator was spending about 1% of its time compiling a small
number of regexes over and over again.
2020-03-04 11:44:33 +01:00
Eelco Dolstra
73c9840569
Restore subdir -> dir
...
Got this mixed up somewhere.
2020-02-20 23:44:06 +01:00
Eelco Dolstra
d068f9ffff
Restore subdir support in registries
...
Hacky...
2020-02-20 22:14:44 +01:00
Eelco Dolstra
890df325c7
fetchTree: Use a feature flag
2020-02-20 13:36:16 +01:00
Eelco Dolstra
46a284263f
Fix build
2020-02-14 22:45:33 +01:00
Eelco Dolstra
6208d24c38
Merge remote-tracking branch 'origin/master' into flakes
2020-02-14 22:42:35 +01:00
Eelco Dolstra
9af10b753c
Bindings::get(): std::optional<Attr *> -> Attr *
...
Returning a nullable type in an optional is silly.
2020-02-13 17:15:05 +01:00
Eelco Dolstra
26dacc0983
Add fetchTree builtin function
...
This allows all supported fetchers to be used, e.g.
builtins.fetchTree {
type = "github";
owner = "NixOS";
repo = "nix";
rev = "d4df99a3349cf2228a8ee78dea320afef86eb3ba";
}
2020-02-11 23:53:46 +01:00
Eelco Dolstra
d2032edb2f
nix edit: Support non-derivation attributes
...
E.g.
$ nix edit .#nixosConfigurations.bla
now works.
2020-02-07 14:22:01 +01:00
Eelco Dolstra
0b013a54dc
findAlongAttrPath(): Return position
2020-02-07 14:08:24 +01:00
Eelco Dolstra
379852a152
Registry: Use attr notation instead of URLs
2020-02-06 14:27:31 +01:00
Eelco Dolstra
be2580be01
Warn when we commit a new revision
2020-02-05 15:47:11 +01:00
Eelco Dolstra
750c993f00
Improve commit subject line
2020-02-05 15:31:16 +01:00
Eelco Dolstra
9d7fb62db6
Add option --commit-lock-file
2020-02-05 14:48:49 +01:00
Eelco Dolstra
0a4e911cf4
Install headers in the correct location
2020-02-03 18:04:09 +01:00
Eelco Dolstra
a2628b43bb
Fix URL parser
...
Fixes #3062 .
2020-02-03 15:27:26 +01:00
Eelco Dolstra
44d6421160
Emit narHash attribute
2020-02-03 14:15:39 +01:00
Eelco Dolstra
d5334c466b
Automatically do git/hg add on flake.lock
2020-02-02 16:33:22 +01:00
Eelco Dolstra
f83acbbfe3
Don't store fragment in FlakeRef
2020-02-02 16:33:19 +01:00
Eelco Dolstra
86748d3571
Re-read flake after updating flake.lock
...
Otherwise we'll evaluate the flake with the wrong metadata (rev, ...).
2020-02-02 15:46:30 +01:00
Eelco Dolstra
af35b318f3
Detect circular flake imports
...
Fixes #2997 .
2020-02-02 13:14:34 +01:00
Eelco Dolstra
94a94da075
Substitute flake inputs
...
This improves reproducibility and may be faster than fetching from the
original source (especially for git/hg inputs, but probably also for
github inputs - our binary cache is probably faster than GitHub's
dynamically generated tarballs).
Unfortunately this doesn't work for the top-level flake since even if
we know the NAR hash of the tree, we don't know the other tree
attributes such as revCount and lastModified.
Fixes #3253 .
2020-02-02 12:41:23 +01:00
Eelco Dolstra
fad9faf354
Add TreeInfo::computeStorePath()
2020-02-02 12:29:53 +01:00
Eelco Dolstra
958ec5de56
Cleanup
2020-02-02 11:31:58 +01:00
Eelco Dolstra
b270869466
Renamed ref / resolvedRef -> lockedRef
2020-02-02 00:06:59 +01:00
Eelco Dolstra
887730aab3
Remove superfluous TreeInfo::rev field
2020-02-01 23:54:20 +01:00
Eelco Dolstra
b9d64f9318
Record TreeInfo in the lock file
...
Necessary for #3253 .
2020-02-01 23:33:44 +01:00
Eelco Dolstra
8451298b35
Factor out TreeInfo
2020-02-01 22:06:55 +01:00
Eelco Dolstra
54037f4e2d
Allow flake input specification via attributes rather than a URL
...
E.g.
inputs.dwarffs = {
type = "github";
owner = "edolstra";
repo = "dwarffs";
};
rather than
inputs.dwarffs.url = github:edolstra/dwarffs;
2020-01-31 20:50:46 +01:00
Eelco Dolstra
185c3c8240
Cleanup
2020-01-31 19:35:28 +01:00
Eelco Dolstra
8414685c0f
Change lock file format to use an attribute representation of flake refs rather than URLs
2020-01-31 19:16:40 +01:00
Eelco Dolstra
b9f93e7386
Check LockedInput::computeStorePath()
2020-01-30 00:13:37 +01:00
Eelco Dolstra
b9fb372075
Add --update-input flag to update a specific flake input
...
Typical usage:
$ nix flake update ~/Misc/eelco-configurations/hagbard --update-input nixpkgs
to update the 'nixpkgs' input of a flake while leaving every other
input unchanged.
The argument is an input path, so you can do e.g. '--update-input
dwarffs/nixpkgs' to update an input of an input.
Fixes #2928 .
2020-01-29 23:14:27 +01:00