aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-13 20:28:00 +0000
committertv <tv@krebsco.de>2026-11-13 21:59:13 +0100
commit24fd14b1e6de45def6a59b65486f5035ac486ee3 (patch)
treeff9928227578c3befa83bfcdee41548aa978efe8 /README.md
parentb34f53d538c5afa95fd0dc6dd81b56e4995b80c2 (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 e46ef4b..94568f6 100644
--- a/README.md
+++ b/README.md
@@ -724,7 +724,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