Linux Dotfiles
Quick install
curl -fsSL https://dotfiles.hyperoot.dev/setup.sh | bash
Overview
This project bootstraps developer environments across DevContainers, WSL, and workstation Linux machines. Mise installs native packages and development tools, while chezmoi applies dotfiles.
Features
- One-command bootstrap for default setup.
- Variant-aware setup for
wslandworkstation. - Declarative native packages, repositories, login shell, and development tools through
mise bootstrap. - Declarative dotfile management through chezmoi.
- DevContainer-first developer workflow for fast onboarding.
- Self-contained mise configuration for each supported variant.
Technologies used
- mise: machine bootstrap, language runtimes, and CLI tool installation.
- chezmoi: declarative dotfile management.
- 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 loads the self-contained mise configuration for the selected variant.
mise bootstrapconverges native packages, Zsh plugins, the login shell, Git identity, and development tools.- Chezmoi applies the shared dotfiles.
Usage & examples
Default (devcontainer)
curl -fsSL https://dotfiles.hyperoot.dev/setup.sh | bash
WSL
curl -fsSL https://dotfiles.hyperoot.dev/setup.sh | bash -s -- wsl
Workstation
curl -fsSL https://dotfiles.hyperoot.dev/setup.sh | bash -s -- workstation
Post-run verification (suggested):
$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 - The mise MCP server is configured in
.vscode/mcp.json. - 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.