|
@@ -0,0 +1,46 @@
|
|
|
|
|
+# 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 <script.sh>` | 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`.
|