README: document docker/, new tools, and ~/.zshrc.local

Covers the docker/ module, task/op/opencode in bin/, the kind gating
change, and the new per-machine secrets section.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 04:40:25 -04:00
co-authored by Claude Opus 4.8
parent 16e01cb3d0
commit c0df3a1596
+51 -10
View File
@@ -26,18 +26,35 @@ Already have a clone? Just run it directly:
## Modules
- `zsh/` — installs zsh + oh-my-zsh, drops a managed `~/.zshrc`
(robbyrussell theme, git plugin), and sets zsh as the login shell.
(robbyrussell theme, git plugin), and sets zsh as the login shell. The
managed rc sources `~/.zshrc.local` last for per-machine customizations
(see below).
- `git/` — sets git `user.name`/`user.email` and configures
`credential.helper store` (plaintext `~/.git-credentials`, 0600) for
HTTPS auth.
- `bin/` — installs userland devops CLIs (jq, kubectl, helm, k9s,
kubectx/kubens, stern, yq, OpenTofu, terragrunt, plus kind when rootless
Docker is available) as self-contained,
statically linked release binaries into `~/.local/bin`. No sudo, nothing
outside `$HOME`, so they persist across Kasm redeploys with no reinstall.
Idempotent: each tool records its version under `~/.local/bin/.versions`
and is skipped when the pinned version is already present. `zsh/zshrc`
puts `~/.local/bin` on `PATH`.
- `docker/` — installs full (rootful) Docker Engine via get.docker.com,
enables the service (systemd hosts), and adds the invoking user to the
`docker` group (takes effect at next login). No-ops where a rootless
Docker daemon is already running (e.g. Kasm) so it never fights that
setup. Uses sudo.
- `bin/` — installs userland devops CLIs as self-contained, statically
linked release binaries into `~/.local/bin`: jq, kubectl, helm, k9s,
kubectx/kubens, stern, yq, OpenTofu, terragrunt, task (go-task, the
Taskfile runner), the 1Password CLI `op` for secrets storage, and the
opencode coding agent. kind is installed
only when full (non-rootless) Docker is available — it doesn't work
against rootless Docker, so it is skipped on Kasm. No sudo, nothing
outside `$HOME`, so tools persist across Kasm redeploys with no
reinstall. Idempotent: each tool records its version under
`~/.local/bin/.versions` and is skipped when the pinned version is
already present. `zsh/zshrc` puts `~/.local/bin` on `PATH`.
opencode is configured by `mcp-config/`: it points at the covert-gpt
LiteLLM gateway (`https://llm.covert-gpt.com/v1` for models,
`https://llm.covert-gpt.com/mcp` for MCP tools). Run
`mcp-config/install.sh` once to store your LiteLLM key and enable
config sync — without it, opencode installs but can't reach the
gateway.
- `ansible/` — installs Ansible into a virtualenv at `~/.local/opt/ansible`
(it's Python, not a single binary) and symlinks its CLIs into
`~/.local/bin`. Persists across redeploys; only rebuilt when the venv is
@@ -45,13 +62,37 @@ Already have a clone? Just run it directly:
the system package manager (the one place this module uses sudo).
- `docker-rootless-cgroup/` — on systemd-less hosts (e.g. Kasm), hand-delegates
cgroup v2 controllers to the rootless Docker daemon so per-container cgroups
work and `kind` can create clusters (rootless Docker otherwise comes up with
work (rootless Docker otherwise comes up with
`CgroupDriver=none`). Uses sudo for host cgroup writes and restarts the
daemon; no-ops on systemd or non-rootless hosts. Re-run at each bootstrap
(the cgroup layout resets on redeploy); its PATH shim lives in `$HOME`.
- `mcp-config/` — shared MCP gateway config sync for laptops (LiteLLM /
opencode). Independent of `bootstrap.sh`; see its own README.
## Per-machine customizations and secrets
`~/.zshrc` is managed — bootstrap overwrites it, so never hand-edit it.
Per-machine settings and secrets go in `~/.zshrc.local`, which the managed
rc sources last (so it can override anything) and bootstrap never touches:
```sh
cp zsh/zshrc.local.example ~/.zshrc.local && chmod 600 ~/.zshrc.local
```
Variables modules look for:
- `GITEA_KEY` — personal access token for `git.nic-oconnor.com` (API/CLI
use; HTTPS git auth itself goes through `git/`'s credential helper).
- `LITELLM_KEY` — covert-gpt gateway key used by opencode. Normally you
don't set this by hand: run `mcp-config/install.sh` once and its shell
hook exports it from `~/.config/mcp-sync/key`. Set it in `~/.zshrc.local`
only on a box without mcp-sync.
- `OP_SERVICE_ACCOUNT_TOKEN` — 1Password service-account token for
non-interactive `op read` / `op run`.
Secrets never go in this repo or in `zsh/zshrc` — that file is shared
config applied to every box.
`lib/os-detect.sh` provides shared package-manager detection (`dnf`/`yum`
vs `apt`); `lib/fetch.sh` provides arch detection and binary-download
helpers. Both are used by module install scripts.