- Update ToolboxStack/output/toolbox-base/Dockerfile with latest container configurations - Update ToolboxStack/output/toolbox-base/PROMPT with enhanced AI collaboration instructions - Update ToolboxStack/output/toolbox-base/README.md with current documentation - Add ToolboxStack/collab/tool-additions/ directory for additional tool configurations - Update CloudronStack/output/master-control-script.sh with improved automation logic These changes enhance the developer workspace configuration and improve automation workflows across the project.
5.4 KiB
🧰 TSYSDevStack Toolbox Base
Daily-driver development container for ToolboxStack work. It provides a reproducible Ubuntu 24.04 environment with curated shell tooling, package managers, and helper scripts.
🚀 Quick Start
- Build the image (local dev tag)
./build.shBuilds and tags the image as
tsysdevstack-toolboxstack-toolbox-base:dev. Usesdocker buildxwith a local cache at.build-cache/for faster rebuilds. - Start the container
./run.sh upDefaults to the
release-currenttag; override withTOOLBOX_IMAGE_OVERRIDE=...when testing other tags. Mise runtimes persist to your host in~/.local/share/miseand~/.cache/miseso language/tool downloads are shared across projects. - Attach to a shell
docker exec -it tsysdevstack-toolboxstack-toolbox-base zsh # or: bash / fish - Stop the container
./run.sh down
The compose service mounts the current repo to /workspace (read/write) and runs as the mapped host user (toolbox).
🏷️ Image Tagging & Releases
./build.sh(no overrides) ⇒ builds:devfor active development../release.sh <semver>⇒ rebuilds, retags, and pushes:dev,:release-current, andv<semver>(e.g.,./release.sh 0.2.0). Requires a clean git tree.- Add
--dry-runto rehearse the release without pushing (optionally--allow-dirtyfor experimentation only). - Downstream Dockerfiles should inherit from
tsysdevstack-toolboxstack-toolbox-base:release-current(or pin to a semantic tag for reproducibility).
🧩 Tooling Inventory
| Category | Tooling | Notes |
|---|---|---|
| Shells & Prompts | 🐚 zsh • 🐟 fish • 🧑💻 bash • ⭐ starship • 💎 oh-my-zsh |
Starship prompt enabled for all shells; oh-my-zsh configured with git + fzf plugins. |
| Runtime & CLI Managers | 🪄 mise • 💧 aqua |
mise handles language/tool runtimes (activation wired into zsh/bash/fish); aqua manages standalone CLIs with config at ~/.config/aquaproj-aqua/aqua.yaml. |
| Core CLI Utilities | 📦 curl • 📥 wget • 🔐 ca-certificates • 🧭 git • 🔧 build-essential + headers (pkg-config, libssl-dev, zlib1g-dev, libffi-dev, libsqlite3-dev, libreadline-dev, make) • 🔍 ripgrep • 🧭 fzf • 📁 fd • 📖 bat • 🔗 openssh-client • 🧵 tmux • 🖥️ screen • 📈 htop • 📉 btop • ♻️ entr • 📊 jq • 🌐 httpie • ☕ tea • 🧮 bc |
Provides ergonomic defaults plus toolchain deps for compiling runtimes (no global language installs). |
| Aqua-Managed CLIs | 🐙 gh • 🌀 lazygit • 🪄 direnv • 🎨 git-delta • 🧭 zoxide • 🧰 just • 🧾 yq • ⚡ xh • 🌍 curlie • 🏠 chezmoi • 🛠️ shfmt • ✅ shellcheck • 🐳 hadolint • 🐍 uv • 🔁 watchexec |
Extend via ~/.config/aquaproj-aqua/aqua.yaml and run aqua install. Direnv logging is muted and hooks for direnv/zoxide are pre-configured for zsh, bash, and fish. |
| AI CLI Tools | 🧠 @just-every/code • 🤖 @qwen-code/qwen-code • 💎 @google/gemini-cli • 🔮 @openai/codex • 🌐 opencode-ai |
AI-powered command-line tools for enhanced development workflows. Node.js is installed via mise to support npm package installation. |
| Container Workflow | 🐳 Docker socket mount (/var/run/docker.sock) |
Enables Docker CLIs inside the container; host Docker daemon required. |
| Runtime Environment | 👤 Non-root user toolbox (UID/GID mapped) • 🗂️ /workspace mount |
Maintains host permissions and isolates artifacts under artifacts/ToolboxStack/toolbox-base. |
🛠️ Extending the Sandbox
- Add a runtime:
mise use python@3.12(per project). Run inside/workspaceto persist.mise.toml. - Add a CLI tool: update
~/.config/aquaproj-aqua/aqua.yaml, then runaqua install. - Adjust base image: modify
Dockerfile, run./build.sh, and keep this README &PROMPTin sync.
🔁 Documentation policy: Whenever you add/remove tooling or change the developer experience, update both this README and the
PROMPTfile so the next collaborator has an accurate snapshot.
📂 Project Layout
| Path | Purpose |
|---|---|
Dockerfile |
Defines the toolbox-base image. |
docker-compose.yml |
Compose service providing the container runtime. |
build.sh |
Wrapper around docker build with host UID/GID mapping. |
run.sh |
Helper to bring the compose service up/down (exports UID/GID env vars). |
.devcontainer/devcontainer.json |
VS Code remote container definition. |
aqua.yaml |
Default aqua configuration (gh, tea, lazygit). |
PROMPT |
LLM onboarding prompt for future contributors (must remain current). |
✅ Verification Checklist
After any image changes:
- Run
./build.shand ensure it succeeds. - Optionally
./run.sh upand sanity-check key tooling (e.g.,mise --version,gh --version). - Update this README and the
PROMPTwith any new or removed tooling.
🤝 Collaboration Notes
- Container always runs as the mapped non-root user; avoid adding steps that require root login.
- Prefer
mise/aquafor new tooling to keep installations reproducible. - Keep documentation synchronized (README + PROMPT) so future contributors can resume quickly.