Skip to content

Auto-install pinned Zig toolchain in setup + devcontainer#38

Merged
hyperpolymath merged 1 commit into
mainfrom
claude/new-session-1fphit
Jun 26, 2026
Merged

Auto-install pinned Zig toolchain in setup + devcontainer#38
hyperpolymath merged 1 commit into
mainfrom
claude/new-session-1fphit

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

What & why

The Zig FFI bridge is half of the ABI-FFI standard, but nothing installed Zig — .tool-versions only lists it (commented), setup.sh stopped at just, and the devcontainer's postCreateCommand: just deps referenced a deps recipe that didn't exist. And Zig is not distributed via GitHub releases, so it must come from ziglang.org, which isn't on the agent egress allowlist by default.

Change

  • scripts/install-zig.sh — idempotent, fail-soft installer for the pinned Zig 0.14.0 (arch/OS-aware, uses the proxy-populated system CA store, never --insecure). If ziglang.org is blocked it 403s and exits 0 with an actionable message, so it never blocks setup.
  • setup.sh — adds a Zig install step (where the template exposes one).
  • Justfile — new deps recipe (install Zig + cargo fetch) backing the devcontainer postCreateCommand: just deps.

Once ziglang.org is allowlisted, future setups/dev-containers install Zig automatically. Part of a family-wide sweep; mirrors the merged iseriser reference (#70).

CI note

The rust-ci and Hypatia checks are pre-existing estate-infra reds (the reusable rust-ci workflow's empty toolchain input, and the Hypatia analyzer failing to compile its own Elixir source) — neither is caused by this shell/Justfile change.

🤖 Generated with Claude Code

https://claude.ai/code/session_019xMKB3T4Vo5FYC7Czx3JSH


Generated by Claude Code

The Zig FFI bridge is half of the ABI-FFI standard, but nothing installed
Zig: .tool-versions only lists it (commented), setup.sh stops at `just`,
and the devcontainer's `postCreateCommand: just deps` referenced a `deps`
recipe that did not exist. Unlike the other toolchain pieces, Zig is not
distributed via GitHub releases, so it must come from ziglang.org.

Add scripts/install-zig.sh: an idempotent, fail-soft installer for the
pinned Zig 0.14.0 (arch/OS-aware, uses the system CA store the agent proxy
populates, never --insecure). If ziglang.org is not on the session's egress
allowlist the download 403s and the script exits 0 with an actionable
message, so it never blocks setup or a session.

Wire it in via the two paths the project already uses: a "Step 1b" in
setup.sh (where the template exposes that step), and a new `deps` Justfile
recipe backing the devcontainer postCreateCommand. Once ziglang.org is
allowlisted, future setups and dev containers install Zig automatically.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019xMKB3T4Vo5FYC7Czx3JSH
@hyperpolymath hyperpolymath marked this pull request as ready for review June 26, 2026 21:13
@hyperpolymath hyperpolymath merged commit ab8fabc into main Jun 26, 2026
20 of 22 checks passed
@hyperpolymath hyperpolymath deleted the claude/new-session-1fphit branch June 26, 2026 21:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants