From 6c6d6395f112998f586cae70e77a92c23ea376c3 Mon Sep 17 00:00:00 2001 From: alexander <259883306+AlexHardAtWork@users.noreply.github.com> Date: Mon, 12 Oct 2026 13:40:19 +0000 Subject: [PATCH] fix(flake-closure-diff): pass the head profile as an absolute path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit nix reads a relative path argument as a flake reference: it resolved the .profile symlink and then rejected the store path with "is not a flake (because it's not a directory)", so every run failed at the report step. An absolute path under the store is recognised as a store path, which is what diff-closures wants. The base side was already absolute, from mktemp -d. Found on the first real run — solution-arsenal#858, the first consumer to call this — and reproduced locally: the relative form gives exactly the CI error, the absolute form prints the diff and exits 0. --- .github/workflows/flake-closure-diff.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/flake-closure-diff.yml b/.github/workflows/flake-closure-diff.yml index 7a90c7e..6c4d8c1 100644 --- a/.github/workflows/flake-closure-diff.yml +++ b/.github/workflows/flake-closure-diff.yml @@ -96,7 +96,12 @@ jobs: ATTR: ${{ inputs.attribute }} run: | nix develop --profile .profile ".#$ATTR" --command true - echo "path=.profile" >> "$GITHUB_OUTPUT" + # Absolute, because nix reads a relative path as a flake reference: + # it resolves the profile symlink and then rejects the store path with + # "is not a flake (because it's not a directory)". An absolute path + # under the store is recognised as a store path, which is what + # diff-closures wants. + echo "path=$PWD/.profile" >> "$GITHUB_OUTPUT" - name: Report the difference if: steps.before.outputs.path != ''