A highly resilient, declarative dotfiles setup using Chezmoi, Mise, and Python, optimized for Linux-based devcontainers.
mise install # Install all tools
hk run pre-commit --all # Run lint checks (requires HK_PKL_BACKEND=pkl)
uv run --project python pytest tests/ -x -q # Run all 65 testsdocker buildx bake dev-load # Build devcontainer locallycurl -fsSL https://raw.githubusercontent.com/sortakool/dotfiles/main/install.sh | bash- Stage 0:
install.shbootstrapsmise. - Stage 1:
miseinstallsgit,chezmoi, anduv. - Stage 2:
chezmoi initclones the repo and applies templated configs. - Stage 3: Python lifecycle hooks (
uv run) handle complex orchestration and tool installations.
- Strictly AMD64: Forced x86_64 architecture for container consistency.
- Declarative Config: Pydantic
DotfilesConfigcentralizes 16 env vars;hk.pklfor git hooks with sharedhk-common.pklchecks. - Zero-Bash: Logic is encapsulated in a typed, linted Python library (
dotfiles_setup). - Zero Lint Suppressions: No
noqa,type: ignore, orpylint: disable— enforced byno_lint_skiphk step. - Environment Auditor: Built-in health checks for identity, toolchains, and SSH connectivity.
- CI/CD: Lint, contract-preflight, build, and smoke-test on GitHub Actions.
All tools are declared in mise.toml and installed via mise install.
Python dependencies are managed via uv with python/pyproject.toml.
uv run --project python pytest tests/ -x -q # All tests
uv run --project python dotfiles-setup verify run # Contract verification
mise run pin-actions # Verify GHA SHA-pinning
mise run lint-docs # Validate agent documentation