Managed by chezmoi. Module selection is interactive at first run and cached for subsequent applies.
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply --purge-binary ETeissonniere-P/--purge-binary removes the bootstrap chezmoi binary once init --apply finishes; the persistent binary is installed via Homebrew as part of the run.
That installs chezmoi, clones this repo into its source directory, asks a short list of yes/no questions (social apps, work apps, Git setup, etc.), and applies everything.
On a fresh Ubuntu/Debian, install curl first: sudo apt install -y curl. Everything else (build-essential, zsh, Homebrew, Docker, packages, macOS defaults) is handled by the run_* scripts. On macOS, the bootstrap installs the Xcode Command Line Tools before Homebrew, installs Xcode from the App Store, selects it as the active developer directory, accepts its license, and installs its required components. You may be prompted for your administrator password and must be signed in to the App Store.
chezmoi update # pull source repo + re-apply
DOTFILES_BREW_MODE=install chezmoi update # install missing Brew packages without a general upgrade
DOTFILES_BREW_MODE=skip chezmoi update # apply everything except the Brew bundle
chezmoi init --prompt # re-run toggle prompts, then `chezmoi apply`
chezmoi apply # apply local source-tree edits
chezmoi edit <path> # edit a managed file and re-apply on exitdotsync (auto-runs once/day on shell startup, or run manually) fetches the source repo, shows incoming commits, prompts, and runs chezmoi update. Plain chezmoi update keeps the existing Brew upgrade behavior. Set DOTFILES_BREW_MODE=install or DOTFILES_BREW_MODE=skip for a one-off override. Homebrew's no-upgrade mode can still upgrade dependencies when required to install a missing package.
Add this to ~/.config/chezmoi/chezmoi.toml if you'd like local edits to be pushed automatically:
[git]
autoCommit = true
autoPush = trueSee the chezmoi docs for details.
Asked at init and cached; re-prompt via chezmoi init --prompt.
| Toggle | Effect |
|---|---|
includeSocials |
Telegram + WhatsApp (macOS desktop only). |
includeWorkApps |
Slack, Linear, Tailscale, and KiCad (macOS only). |
installCodex |
Codex via Homebrew cask, plus bubblewrap apt dependency (Linux only; macOS gets it via brew). |
useGitea |
Enable the post-install reminder for scripts/post/setup_gitea.sh. |
setupGit |
Manage ~/.gitconfig and ~/.config/git/* (user, SSH signing, global ignore). Off for machines that don't need git. |
Plus three string prompts asked only when setupGit is on: email, name, and githubUser for git config.
Bambu Studio and OrbStack are installed on every Mac. Docker Engine is installed on every Linux machine.
.chezmoiroot # points chezmoi at ./home
home/
.chezmoi.toml.tmpl # init prompts
.chezmoidata/packages.yaml # declarative Homebrew manifest
.chezmoiignore # platform-conditional exclusions
dot_* # → $HOME/.* after apply
private_dot_ssh/ # → $HOME/.ssh (mode 700)
run_onchange_* # re-run when rendered content changes
run_once_* # run once per content hash
modules/ # runtime zsh/tmux helpers
scripts/post/ # post-install helpers (user-invoked)
Scripts under scripts/post/ are one-shot tasks the user runs manually (chezmoi can't sensibly drive interactive OAuth-style flows). A checker at the end of every chezmoi apply prints a reminder for each pending item until it's done.
scripts/post/setup_github.sh— register~/.ssh/id_ed25519.pubon GitHub as both an authentication and signing key. Runsgh auth loginitself if needed; idempotent on re-run.scripts/post/setup_gitea.sh— configureteafor a (self-hosted) Gitea instance using SSH-based auth. Prints copy-paste-ready values for the instance's SSH key page, waits for you to register the key, then runstea login add --ssh-agent-keyso no API token is ever created or stored. Prompts once for URL + username. Re-run per instance.scripts/post/setup_huggingface.sh— authenticate the Hugging Face CLI withhf auth login. Idempotent on re-run and does not enable Git credential storage implicitly.
- On Linux, if you want passwordless sudo:
sudo visudoand add%sudo ALL=(ALL) NOPASSWD: ALL. - Configure Time Machine / Tailscale / other services manually when desired.
- On macOS, enable iCloud folder sync and set the wallpaper.