+++ /dev/null
-#!/bin/sh
-# Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
-# License: GPL-3.0 or later.
-#
-# ask-build-queue — Prompt the user to select Makefile targets and write a
-# per-session build queue file.
-
-# Don't prompt again if the queue is already populated.
-QUEUE_FILE="$CLAUDE_PROJECT_DIR/.claude/.build-queue.$CLAUDE_CODE_SESSION_ID"
-if [ -f "$QUEUE_FILE" ]; then
- exit 0
-fi
-
-MAKEFILE="$CLAUDE_PROJECT_DIR/Makefile"
-
-# Print space-separated Makefile targets whose recipe mentions
-# guix reconfigure.
-build_targets() {
- $GUIX_BIN/sed --regexp-extended --quiet \
- '/^([a-zA-Z_-][a-zA-Z0-9_-]*):/h
- /guix.*reconfigure/{g;s/^([a-zA-Z_-][a-zA-Z0-9_-]*):.*/\1/p}' \
- "$1" | $GUIX_BIN/tr '\n' ' '
-}
-
-
-$GUIX_BIN/mkdir --parents "$CLAUDE_PROJECT_DIR/.claude"
-
-exec 1>&2
-echo "First, use AskUserQuestion (single-select) to ask whether to build at "
-echo "all. Options: [Build targets, Skip build]."
-echo ""
-echo "If Build, use AskUserQuestion (multiSelect, max 4) with these targets: "
-echo "$(build_targets "$MAKEFILE")."
-echo ""
-echo "Write selected targets to ${QUEUE_FILE} (one per line), then stop so the "
-echo "build begins."
-echo ""
-echo "If Skip: write an empty file (touch ${QUEUE_FILE})."
# No queue file yet.
if [ ! -f "$QUEUE_FILE" ]; then
- "$CLAUDE_PROJECT_DIR/.claude/hooks/ask-build-queue"
+ "$CLAUDE_PROJECT_DIR/.claude/scripts/ask-build-queue"
exit 2
fi
# Queue is empty — we are finished.
$GUIX_BIN/echo '{"systemMessage":"✅ Queue finished."}'
$GUIX_BIN/rm --force "$QUEUE_FILE"
-exit 0
+
--- /dev/null
+#!/bin/sh
+# Copyright (c) 2026 Jakub Czajka <jakub@ekhem.eu.org>
+# License: GPL-3.0 or later.
+#
+# ask-build-queue — Prompt the user to select Makefile targets and write a
+# per-session build queue file.
+
+# Don't prompt again if the queue is already populated.
+QUEUE_FILE="$CLAUDE_PROJECT_DIR/.claude/.build-queue.$CLAUDE_CODE_SESSION_ID"
+[ -f "$QUEUE_FILE" ] && exit 0
+
+# Print space-separated Makefile targets whose recipe matches the
+# branch-appropriate guix command: reconfigure on main, build elsewhere.
+build_targets() {
+ if [ "$2" = "main" ]; then
+ pattern="guix.*reconfigure"
+ else
+ pattern="guix.*build"
+ fi
+ $GUIX_BIN/sed --regexp-extended --quiet \
+ "/^([a-zA-Z_-][a-zA-Z0-9_-]*):/h
+ /$pattern/{g;s/^([a-zA-Z_-][a-zA-Z0-9_-]*):.*/\1/p}" \
+ "$1" | $GUIX_BIN/tr '\n' ' '
+}
+
+$GUIX_BIN/mkdir --parents "$CLAUDE_PROJECT_DIR/.claude"
+
+MAKEFILE="$CLAUDE_PROJECT_DIR/Makefile"
+
+branch=$($HOME/.guix-home/profile/bin/git -C "$CLAUDE_PROJECT_DIR" \
+ branch --show-current 2>/dev/null || $GUIX_BIN/echo "unknown")
+
+exec 1>&2
+echo "First, use AskUserQuestion (single-select) to ask whether to build at "
+echo "all. Options: [Build targets, Skip build]."
+echo ""
+echo "If Build, use AskUserQuestion (multiSelect, max 4) with these targets: "
+echo "$(build_targets "$MAKEFILE" "$branch")."
+echo ""
+echo "Write selected targets to ${QUEUE_FILE} (one per line), then stop so the "
+echo "build begins."
+echo ""
+echo "If Skip: write an empty file (touch ${QUEUE_FILE})."
Populate the build queue early to avoid an extra dialog at Stop time. If the
prompt looks like it will modify code (e.g. "add", "fix", "change", "implement",
"refactor", "update", "create", "remove") and the build queue does not exist,
-run .claude/hooks/ask-build-queue to queue build targets before making changes.
+run .claude/scripts/ask-build-queue to queue build targets before any changes.