sandcastle: base image on nixos/nix and bake devShells.ci #17

Merged
weiwen merged 3 commits from sandcastle/issue-11 into main 2026-07-05 06:52:31 +08:00
Owner

Summary

Base the sandcastle Docker image on nixos/nix instead of node:22-bookworm and bake devShells.ci from flake.nix into the image at build time.

This eliminates the apt-based tool installation, gives us flake-pinned tool versions, and makes the image reproducible from the same inputs the host uses.

What changed

  • Dockerfile: base image → nixos/nix; install tools via nix develop .#ci which pre-caches every package in /nix/store and symlinks binaries into /usr/local/bin via a new bake-devenv.sh script.
  • flake.nix: new devShells.ci with bash, curl, git, jq, nodejs_22, tea — the tools the agent needs at runtime.
  • Claude Code integration: added ANTHROPIC_API_KEY / CLAUDE_CODE_OAUTH_TOKEN to .env.example; added claude install step in Dockerfile; switched main.mts agents from opencode to claudeCode for plan/implement/review stages.
  • plan-prompt.md: clarified that the issues list has already been filtered to ready-for-agent issues and tightened phrasing.

Reviewer notes

  • Verify that the nix develop .#ci build step works end-to-end in a fresh container.
  • Confirm the bake-devenv.sh approach doesn\t
## Summary Base the sandcastle Docker image on `nixos/nix` instead of `node:22-bookworm` and bake `devShells.ci` from `flake.nix` into the image at build time. This eliminates the apt-based tool installation, gives us flake-pinned tool versions, and makes the image reproducible from the same inputs the host uses. ## What changed - **Dockerfile**: base image → `nixos/nix`; install tools via `nix develop .#ci` which pre-caches every package in `/nix/store` and symlinks binaries into `/usr/local/bin` via a new `bake-devenv.sh` script. - **flake.nix**: new `devShells.ci` with `bash`, `curl`, `git`, `jq`, `nodejs_22`, `tea` — the tools the agent needs at runtime. - **Claude Code integration**: added `ANTHROPIC_API_KEY` / `CLAUDE_CODE_OAUTH_TOKEN` to `.env.example`; added `claude` install step in Dockerfile; switched `main.mts` agents from `opencode` to `claudeCode` for plan/implement/review stages. - **plan-prompt.md**: clarified that the issues list has already been filtered to `ready-for-agent` issues and tightened phrasing. ## Reviewer notes - Verify that the `nix develop .#ci` build step works end-to-end in a fresh container. - Confirm the `bake-devenv.sh` approach doesn\t
weiwen force-pushed sandcastle/issue-11 from 7c00024e2e to 5ca201198a
Some checks failed
CI / check (pull_request) Has been cancelled
2026-07-05 06:52:22 +08:00
Compare
weiwen merged commit c8e0952763 into main 2026-07-05 06:52:31 +08:00
weiwen deleted branch sandcastle/issue-11 2026-07-05 06:52:31 +08:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
weiwen/evie!17
No description provided.