mirror of
https://github.com/XRPLF/rippled.git
synced 2026-07-23 15:10:34 +00:00
62 lines
2.4 KiB
Markdown
62 lines
2.4 KiB
Markdown
# Troubleshooting Nix problems
|
|
|
|
Common issues encountered when using the [Nix development shell](./nix.md), and
|
|
how to resolve them.
|
|
|
|
## Git worktrees
|
|
|
|
If `nix develop` fails with an error like:
|
|
|
|
```
|
|
error:
|
|
… while fetching the input 'git+file:///path/to/rippled'
|
|
|
|
error: opening Git repository "/path/to/rippled": unsupported extension name extensions.relativeworktrees (libgit2 error code = 6)
|
|
```
|
|
|
|
then your Nix is linked against a libgit2 older than **1.9.4**. Git 2.48+ writes
|
|
the `extensions.relativeWorktrees` config entry when a worktree is created with
|
|
relative paths (`git worktree add --relative-paths`, or with
|
|
`worktree.useRelativePaths=true`), and older libgit2 versions refuse to open a
|
|
repository that uses it. Nix uses libgit2 to read the flake, so evaluation
|
|
fails.
|
|
|
|
> [!IMPORTANT]
|
|
> This entry is written to the **shared** repository config, so once any
|
|
> relative worktree exists, `nix develop` fails in the main checkout too — not
|
|
> just inside the worktree.
|
|
|
|
### Workarounds
|
|
|
|
These work today, with any Nix version:
|
|
|
|
- bypass libgit2 with a `path:` flakeref: `nix develop "path:$PWD"`
|
|
(note: this copies the working tree to the store and ignores `.gitignore`); or
|
|
- create worktrees with absolute paths (omit `--relative-paths`); or
|
|
- clear the extension if you don't need relative worktrees:
|
|
`git config --unset extensions.relativeWorktrees`.
|
|
|
|
### Permanent fix
|
|
|
|
The fix is in [libgit2 1.9.4](https://github.com/libgit2/libgit2/releases/tag/v1.9.4),
|
|
so the real solution is a Nix that links against libgit2 `1.9.4` or newer. Check
|
|
which version yours links against:
|
|
|
|
```bash
|
|
nix-store -qR "$(readlink -f "$(command -v nix)")" | grep libgit2
|
|
```
|
|
|
|
> [!WARNING]
|
|
> `nix upgrade-nix` does **not** help yet. It installs the build from the
|
|
> official [`nix-fallback-paths`](https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/installer/tools/nix-fallback-paths.nix),
|
|
> which is still linked against libgit2 `1.9.2` — there is no new upstream Nix
|
|
> release with the fix. (On some systems that build is even the exact store path
|
|
> you already have, making the upgrade a no-op.)
|
|
|
|
nixpkgs has already rebuilt Nix against the fixed libgit2 (e.g. `nix-2.34.7+1`),
|
|
so the cleanest path is to reinstall Nix using your usual installation method
|
|
once it picks up that rebuild, then re-run the `grep libgit2` check above to
|
|
confirm it reports `1.9.4` or newer.
|
|
|
|
Until then, prefer the workarounds above.
|