# bootstrap Personal dev environment bootstrap for Debian Linux dev workstation setup. ## What this is Numbered Bash scripts (`[0-9][0-9]-*.sh`) run in order to install and configure a full dev environment: system packages, Docker, Rust/Go/Node toolchains, Helix editor, tmux, LSP servers, CLI tools. Each script is independently executable and intended to be idempotent. ## Key commands | Command | Purpose | |---|---| | `./test.sh` | Build Docker image and run all scripts inside container (smoke test) | | `bash -l ` | Run a single bootstrap script (needs `-l` for login shell to pick up `~/.bashrc.d/` additions) | | `bash docker-test` | Run all `[0-9][0-9]-*.sh` in order (used inside container) | ## Architecture The numbered prefix defines execution order and implicit dependencies: | Prefix | Category | |---|---| | `00-` | System/distro setup (packages via apt) | | `01-` | Language runtimes & core tools (bashrc.d, Docker, Go, Node, Rust) | | `02-` | Editor & terminal (Helix, just, tmux) — depends on Rust from `01-rust` | | `05-` | LSP servers | | `10-` | CLI tools (fzf, Rust apps) — depends on Rust from `01-rust` | - `00-distro-debian.sh` must run first (base packages for everything else). - `01-rust.sh` must precede `02-helix.sh`, `02-just.sh`, `10-rust-apps.sh`. - `01-bashrc.d.sh` should run early since several scripts add profile fragments to `~/.bashrc.d/`. ## Testing - `./test.sh` builds `debian:trixie-slim` based Docker image tagged `bootstrap`, then runs `docker-test` inside it. - The Docker test runner executes scripts with `bash -l` (login shell) to ensure PATH additions from `~/.bashrc.d/` are active. - No unit tests, lint, format, or CI exist. ## Repo conventions - No `Makefile`, `Justfile`, `.editorconfig`, `.gitignore`, or linter configs. - Scripts use `set -e` in the Docker test runner but not necessarily in individual scripts. - All scripts install to user home (`~/.local/`, `~/.bashrc.d/`, etc.) — designed per-user, not system-wide. - Remote: `ssh://git@source.ramthun.dev:2222/mike/bootstrap.git` (private), branch `master`.