Linux Dotfiles
Quick install
curl -fsSL https://dotfiles.hyperoot.dev/setup.sh | bash
Overview
This project is a compact, reproducible toolkit for bootstrapping developer environments across multiple variants: DevContainers, WSL, and workstation Linux machines. It combines system-level provisioning (Ansible), deterministic tool installers (mise), and declarative dotfile management (chezmoi) so a developer can go from zero to productive with a single command.
Features
- One-command bootstrap for default setup.
- Variant-aware setup for
wslandworkstation. - Reproducible provisioning with infrastructure-as-code and declarative dotfiles.
- DevContainer-first developer workflow for fast onboarding.
- Modular scripts (
ansible,mise,chezmoi) that are easy to inspect and extend.
Technologies used
- Ansible: system package installation and host configuration.
- mise: language runtimes and CLI tool installation.
- chezmoi: declarative dotfile management and templating.
- Bash: lightweight orchestration through
setup.sh.
Goals
- Make environment setup reproducible and fast.
- Keep per-variant differences small and declarative.
- Minimize manual steps for new contributors and machines.
How it works (high level)
- The top-level
setup.shvalidates whether it's running inside a full repo clone. If not, it clones a fresh copy and re-runs from there. - The script runs three phases:
ansible(system packages and OS configuration),mise(language/tool installers), andchezmoi(apply templated dotfiles). - Each phase is implemented as a small helper script in
scripts/so it's easy to inspect, test, and extend.
Usage & examples
Default (devcontainer)
curl -fsSL https://dotfiles.hyperoot.dev/setup.sh | bash
WSL
VARIANT=wsl curl -fsSL https://dotfiles.hyperoot.dev/setup.sh | bash
Workstation
VARIANT=workstation curl -fsSL https://dotfiles.hyperoot.dev/setup.sh | bash
Post-run verification (suggested):
ansible --version || true
$HOME/.local/bin/mise --version || true
chezmoi --version || true
Security & best practices
- Treat the one-liner as a convenience for trusted environments. Prefer download+inspect or
git clonefor production systems. - You can inspect before running:
curl -fsSL -o /tmp/setup.sh https://dotfiles.hyperoot.dev/setup.sh
less /tmp/setup.sh
bash /tmp/setup.sh [variant]
- For immutable installs, consider pinning to a commit or a versioned installer path.
Local development
- Open this repository in VS Code and rebuild/reopen the DevContainer.
- DevContainer config: .devcontainer/devcontainer.json
- Editor MCP servers are configured in .vscode/mcp.json. The
miseMCP requiresmiseand theansibleMCP requires Node.js (npx). - To run the installer locally from a clone:
bash setup.sh [variant]
- To run tests or linting locally, use the repo tooling in
pyproject.tomlandrequirements.txt.