op is shipped as a zip rather than a tarball, so lib/fetch.sh grows an install_zip_bin helper (unzip, falling back to python3's zipfile so neither is a hard dependency). Credentials for both stay per-box and out of this repo: op signs in via `op signin` or OP_SERVICE_ACCOUNT_TOKEN, and opencode reaches the covert-gpt gateway with the key that mcp-config/ syncs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
dotfiles
Configures fresh VMs (RHEL-family or Debian-family) with a consistent
environment. Run ./bootstrap.sh (or curl-pipe it) to apply everything;
each module also runs standalone and is safe to re-run.
Quick start
On a fresh box, apply everything with one command:
curl -fsSL https://git.nic-oconnor.com/public/dotfiles/raw/branch/main/bootstrap.sh | sh
When piped like this (no local checkout), bootstrap.sh clones the repo to
~/.dotfiles and runs from there, so git must be installed first. Re-running
the command updates the checkout (git pull) and re-applies every module.
Override the destination or source with DOTFILES_DIR / DOTFILES_REPO.
Already have a clone? Just run it directly:
./bootstrap.sh
Modules
zsh/— installs zsh + oh-my-zsh, drops a managed~/.zshrc(robbyrussell theme, git plugin), and sets zsh as the login shell.git/— sets gituser.name/user.emailand configurescredential.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/.versionsand is skipped when the pinned version is already present.zsh/zshrcputs~/.local/binonPATH.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 missing or broken. Building it may installpython3/python3-venvvia 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 andkindcan create clusters (rootless Docker otherwise comes up withCgroupDriver=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 ofbootstrap.sh; see its own README.
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.