From f6ad6291ab17048146af88695cb732c70fcc4481 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 7 May 2025 15:56:35 +0200 Subject: [PATCH] nix flake metadata: Show store path if available --- src/nix/flake.cc | 8 ++++++-- tests/functional/flakes/flakes.sh | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/nix/flake.cc b/src/nix/flake.cc index 9f63fabc4..4782cbb29 100644 --- a/src/nix/flake.cc +++ b/src/nix/flake.cc @@ -218,9 +218,13 @@ struct CmdFlakeMetadata : FlakeCommand, MixJSON auto lockedFlake = lockFlake(); auto & flake = lockedFlake.flake; + /* Hack to show the store path if available. */ std::optional storePath; - if (flake.lockedRef.input.getNarHash()) - storePath = flake.lockedRef.input.computeStorePath(*store); + if (store->isInStore(flake.path.path.abs())) { + auto path = store->toStorePath(flake.path.path.abs()).first; + if (store->isValidPath(path)) + storePath = path; + } if (json) { nlohmann::json j; diff --git a/tests/functional/flakes/flakes.sh b/tests/functional/flakes/flakes.sh index 611e8626d..7ec438d74 100755 --- a/tests/functional/flakes/flakes.sh +++ b/tests/functional/flakes/flakes.sh @@ -69,6 +69,7 @@ nix flake metadata "$flake1Dir" | grepQuiet 'URL:.*flake1.*' # Test 'nix flake metadata --json'. json=$(nix flake metadata flake1 --json | jq .) [[ $(echo "$json" | jq -r .description) = 'Bla bla' ]] +[[ -d $(echo "$json" | jq -r .path) ]] [[ $(echo "$json" | jq -r .lastModified) = $(git -C "$flake1Dir" log -n1 --format=%ct) ]] hash1=$(echo "$json" | jq -r .revision) [[ -n $(echo "$json" | jq -r .fingerprint) ]]