aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-13 21:09:17 +0000
committertv <tv@krebsco.de>2026-11-13 22:14:45 +0100
commit8dfa3f18d42d852ece3f2d9cf1ae117acccc0b15 (patch)
tree2f521e0c7307a4fac6481dc968a9e4f5c21a7cc0 /README.md
parent0273a55087e2614323d6ebd145b08c56b370a483 (diff)
populate: refer to flakes as git+file: only with a usable .git
Writing the lock file of a git+file: flake, Nix runs Git, with the repository's configuration and hooks, which may run commands. A .git in a source's directory can come from anywhere, e.g. one planted in a materialized flake, or one a file source keeps. So drawing inputs refers to a flake as git+file: only if git_problems finds nothing wrong with its .git directory, the way git sources check their work trees, and else as path:. lock-foreign-git plants a .git in a materialized flake and in a file source that keeps it, whose configuration names an fsmonitor command.
Diffstat (limited to 'README.md')
-rw-r--r--README.md5
1 files changed, 4 insertions, 1 deletions
diff --git a/README.md b/README.md
index 7344135..e2b3418 100644
--- a/README.md
+++ b/README.md
@@ -707,7 +707,10 @@ drawing an input from a source with a generated flake uses that flake.
automatically.
Sources in a Git work tree are referred to as `git+file:` (with submodules if
-there are any), all other sources as `path:`, with symlinks resolved. Lock
+there are any), all other sources as `path:`, with symlinks resolved. Nix
+runs Git in a `git+file:` flake, so that's only for work trees whose `.git`
+directory a `git` source would use, see
+[The target directory](#the-target-directory). Lock
files get rewritten or generated on every run, so they match the sources.
Copies of `flake` and `flake-input` sources get made again only if the
delivered store path, the patches, or the sources they draw inputs from