Personal dotfiles managed with chezmoi.
Before installing, run this script to pick the fastest GitHub mirror for your network.
The script tests multiple mirror candidates in parallel and exports the result as a
DOTFILES_MIRROR variable — add it to your environment before running the install
commands below.
bash <(curl -fsSL https://raw.githubusercontent.com/kibaamor/dotfiles/main/find-gh-mirror.sh)
# or
bash <(curl -fsSL https://cdn.gh-proxy.org/https://raw.githubusercontent.com/kibaamor/dotfiles/main/find-gh-mirror.sh)
# or
bash <(curl -fsSL https://ghproxy.net/https://raw.githubusercontent.com/kibaamor/dotfiles/main/find-gh-mirror.sh)See
find-gh-mirror.sh --helpfor additional options (custom probes, timeouts, extra mirrors, etc.).
# Set the default Git user name and email.
export GIT_USERNAME=x
export GIT_USEREMAIL=x@x.x
# (Optional) Install extra binaries (takes effect at every chezmoi update).
export DOTFILES_EXTRA_BINS=1
# (Optional) Install binaries through arkade (takes effect at every chezmoi update).
export DOTFILES_ARKADE_BINS=1
# (Optional) Set a mirror for GitHub-hosted downloads.
export DOTFILES_MIRROR=https://cdn.gh-proxy.org
# (Optional) Set a proxy; replace this URL with your proxy address.
export HTTP_PROXY=http://localhost:7890
export HTTPS_PROXY=http://localhost:7890
export default_proxy=http://localhost:7890
# (Optional) Set the GitHub proxy.
git config --global url."https://cdn.gh-proxy.org/https://github.com/".insteadOf "https://github.com/"
git config --file ~/.gitconfig-proxy url."https://cdn.gh-proxy.org/https://github.com/".insteadOf "https://github.com/"
# Install dotfiles
sh -c "$(curl -fsLS https://get.chezmoi.io/lb)" -- init --apply kibaamorYou can set git config for GitHub via command
git config --file ~/.gitconfig-github user.name xxx.You can set git config for GitLab via command
git config --file ~/.gitconfig-gitlab user.name xxx.
# Install WinGet on Windows Sandbox
# https://learn.microsoft.com/en-us/windows/package-manager/winget/#install-winget-on-windows-sandbox
# Install chezmoi via WinGet
winget install --id twpayne.chezmoi --accept-source-agreements
# Set the default Git user name and email.
$env:GIT_USERNAME = "x"
$env:GIT_USEREMAIL = "x@x.x"
# (Optional) Install extra binaries (takes effect at every chezmoi update).
$env:DOTFILES_EXTRA_BINS = "1"
# (Optional) Install binaries through arkade (takes effect at every chezmoi update).
$env:DOTFILES_ARKADE_BINS = "1"
# (Optional) Set a mirror for GitHub-hosted downloads.
$env:DOTFILES_MIRROR = "https://cdn.gh-proxy.org"
# (Optional) Set a proxy; replace this URL with your proxy address.
$env:HTTP_PROXY = "http://localhost:7890"
$env:HTTPS_PROXY = "http://localhost:7890"
$env:default_proxy = "http://localhost:7890"
# (Optional) Set the GitHub proxy.
git config --global url."https://cdn.gh-proxy.org/https://github.com/".insteadOf "https://github.com/"
git config --file ~/.gitconfig-proxy url."https://cdn.gh-proxy.org/https://github.com/".insteadOf "https://github.com/"
# Set the execution policy to RemoteSigned for the current user, so that the dotfiles setup scripts can be executed.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
# Install dotfiles
chezmoi init --apply kibaamorYou can set git config for GitHub via command
git config --file $env:USERPROFILE/.gitconfig-github user.name xxx.You can set git config for GitLab via command
git config --file $env:USERPROFILE/.gitconfig-gitlab user.name xxx.
Set DOTFILES_MIRROR to a mirror base URL to route all GitHub-hosted downloads through
a proxy/CDN instead of fetching directly from GitHub. When set, the mirror becomes the
primary URL and the original GitHub URL is preserved as a fallback. Takes effect at
every chezmoi update, not just chezmoi init.
DOTFILES_MIRROR=https://cdn.gh-proxy.org chezmoi updateDOTFILES_EXTRA_BINS and DOTFILES_ARKADE_BINS are re-read at every chezmoi update — no need to re-initialize.
Enable or disable them before running update:
# Enable extra binaries on next update
DOTFILES_EXTRA_BINS=1 DOTFILES_ARKADE_BINS=1 chezmoi update
# Disable extra binaries on next update (remove from ~/.local/bin on next apply)
chezmoi update- delta — Linux / Windows
- bat — Linux / macOS / Windows
- fd — Linux / Windows
- fzf — Linux / macOS / Windows
- direnv — Linux / macOS / Windows
- rg — Linux / macOS / Windows
- lsd — Linux / macOS / Windows
- duf — Linux / macOS / Windows
- age, age-keygen — Linux / macOS / Windows
- tldr — Linux / macOS / Windows
- jq — Linux / macOS / Windows
- yq — Linux / macOS / Windows
- gdu — Linux / macOS / Windows
- ipgeo — Linux / macOS / Windows
- ipstream — Linux / macOS / Windows
- tproxy — Linux / macOS / Windows
- gping — Linux / macOS / Windows
- doggo — Linux / macOS / Windows
- nexttrace — Linux / macOS / Windows
- ctop — Linux / Windows
- kubecolor — Linux / macOS / Windows
- arkade — Linux / macOS / Windows
- upx — Linux only
- ShellCheck — Linux / macOS / Windows
These binaries are installed only when
DOTFILES_EXTRA_BINSis non-empty.
These binaries are installed through arkade only when
DOTFILES_ARKADE_BINSis non-empty.
- mkcert — Linux / macOS / Windows
- dive — Linux / macOS / Windows
- lazydocker — Linux / macOS / Windows
- minikube — Linux / macOS / Windows
- kind — Linux / macOS / Windows
- kubectx, kubens — Linux / macOS / Windows
- k9s — Linux / macOS / Windows
- helm — Linux / macOS / Windows
# (Optional) Set `TMPDIR` if `/tmp` is mounted with `noexec`.
export TMPDIR=~/.tmp