|
1 | | -# Hypercube AI-first Neovim sandbox |
| 1 | +# Hypercube devcube — containerized IDE + parallel-agent orchestration |
2 | 2 | # |
3 | | -# A self-contained, portable podman image: LazyVim (baked in), the full dev |
4 | | -# toolchain (LSPs/formatters/linters), and AI coding agents (Claude Code, OpenAI |
5 | | -# Codex, Antigravity, GitHub CLI). Agents are launched from inside nvim. |
| 3 | +# A self-contained, portable podman image: Neovim/LazyVim (baked in), the full |
| 4 | +# dev toolchain (LSPs/formatters/linters), AI coding agents (Claude Code, OpenAI |
| 5 | +# Codex, Antigravity, GitHub CLI), plus zellij + workmux for running multiple |
| 6 | +# agents in parallel (each in its own git worktree) and a fish + starship shell. |
6 | 7 | # |
7 | | -# Build: podman build -t nvim-dev . |
8 | | -# Run: podman run --rm -it nvim-dev (see scripts/sandbox.sh for mounts) |
| 8 | +# The build context is the parent dot_files/ dir so the fish/starship/zellij/ |
| 9 | +# workmux/nvim configs (top-level dotfiles) can be baked in. |
| 10 | +# |
| 11 | +# Build: cd dot_files && podman build -t devcube -f devcube/Containerfile . |
| 12 | +# Run: devc (see devcube/scripts/devcube.sh for mounts + dispatch) |
9 | 13 |
|
10 | 14 | FROM registry.fedoraproject.org/fedora-toolbox:44 |
11 | 15 |
|
@@ -131,11 +135,17 @@ RUN brew install \ |
131 | 135 | # ============================================================================= |
132 | 136 | # LAYER 6: Infrastructure tools via Homebrew |
133 | 137 | # ============================================================================= |
| 138 | +# zellij (terminal multiplexer) + workmux (git-worktree -> multiplexer |
| 139 | +# orchestration; a brew tap, auto-tapped by the fully-qualified name) power the |
| 140 | +# parallel-agent workflow. starship renders the fish prompt baked in below. |
134 | 141 | RUN brew install \ |
135 | 142 | opentofu \ |
136 | 143 | helm \ |
137 | 144 | sqlfluff \ |
138 | | - fish |
| 145 | + fish \ |
| 146 | + starship \ |
| 147 | + zellij \ |
| 148 | + raine/workmux/workmux |
139 | 149 |
|
140 | 150 | # ============================================================================= |
141 | 151 | # LAYER 7: Rust toolchain (as linuxbrew user) |
@@ -251,21 +261,35 @@ RUN mkdir -p /etc/profile.d /etc/fish/conf.d \ |
251 | 261 | # The full LazyVim config is baked into $HOME/.config/nvim. Personal overrides |
252 | 262 | # are bind-mounted at runtime from the host (~/.config/hypercube/nvim) and |
253 | 263 | # layered on top via the runtimepath (see lua/config/lazy.lua). |
254 | | -COPY config/ /root/.config/nvim/ |
| 264 | +# NOTE: the build context is dot_files/, so the nvim config lives under nvim/. |
| 265 | +COPY nvim/config/ /root/.config/nvim/ |
255 | 266 |
|
256 | 267 | # Pre-install all plugins + build treesitter parsers so first launch is fast and |
257 | 268 | # offline. HOME=/root and PATH already include the brew nvim binary. |
258 | 269 | RUN nvim --headless "+Lazy! sync" +qa |
259 | 270 |
|
| 271 | +# ============================================================================= |
| 272 | +# LAYER 14b: Bake the shell / multiplexer / orchestrator configs |
| 273 | +# ============================================================================= |
| 274 | +# fish + starship give a good in-container shell/prompt; zellij + workmux drive |
| 275 | +# the parallel-agent workflow. These seed into the persisted home volume on |
| 276 | +# first run (podman copy-up), like the nvim config above. starship.toml lands at |
| 277 | +# the exact path dot_files/fish/config.fish hardcodes for STARSHIP_CONFIG, so |
| 278 | +# fish needs no edits (and it lives outside /root, so it's always present). |
| 279 | +COPY fish/ /root/.config/fish/ |
| 280 | +COPY zellij/ /root/.config/zellij/ |
| 281 | +COPY workmux/ /root/.config/workmux/ |
| 282 | +COPY starship/ /usr/share/hypercube/config/starship/ |
| 283 | + |
260 | 284 | # ============================================================================= |
261 | 285 | # LAYER 15: Entrypoint |
262 | 286 | # ============================================================================= |
263 | | -COPY entrypoint.sh /usr/local/bin/hypercube-nvim-entrypoint |
264 | | -RUN chmod +x /usr/local/bin/hypercube-nvim-entrypoint |
265 | | -ENTRYPOINT ["/usr/local/bin/hypercube-nvim-entrypoint"] |
| 287 | +COPY devcube/entrypoint.sh /usr/local/bin/devcube-entrypoint |
| 288 | +RUN chmod +x /usr/local/bin/devcube-entrypoint |
| 289 | +ENTRYPOINT ["/usr/local/bin/devcube-entrypoint"] |
266 | 290 | CMD ["nvim"] |
267 | 291 |
|
268 | 292 | # Labels for GitHub Container Registry |
269 | 293 | LABEL org.opencontainers.image.source="https://github.com/binarypie/hypercube" |
270 | | -LABEL org.opencontainers.image.description="AI-first Neovim sandbox: LazyVim + dev toolchain + Claude Code, Codex, Antigravity, gh" |
| 294 | +LABEL org.opencontainers.image.description="devcube: containerized IDE (Neovim/LazyVim + dev toolchain + Claude Code, Codex, Antigravity, gh) with zellij + workmux parallel-agent orchestration" |
271 | 295 | LABEL org.opencontainers.image.licenses="MIT" |
0 commit comments