AGENTS.md 2.1 KB

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.