- Shell 90.6%
- Go Template 9.4%
Runs 'chezmoi update' (git pull + apply) on boot via a user systemd timer, managed as a dotfile like the rest of the repo. Requires a one-time 'systemctl --user enable --now chezmoi-update.timer' per machine, documented in the README. |
||
|---|---|---|
| bash | ||
| claude | ||
| dot_claude | ||
| dot_config/systemd/user | ||
| git | ||
| systemd | ||
| CLAUDE.md | ||
| install.sh | ||
| README.md | ||
| symlink_dot_bashrc.tmpl | ||
| symlink_dot_gitconfig.tmpl | ||
| symlink_dot_global-gitignore.tmpl | ||
Stewart Linux Setup Config
Dotfiles managed with chezmoi.
Install
On a fresh machine, as root:
curl -fsSL https://git.bennellit.com.au/sb/myconfig/raw/branch/main/install.sh -o /tmp/install.sh
sudo bash /tmp/install.sh
Download to a file first rather than piping directly into sudo bash. The script installs Flatpak apps whose progress bar reads from stdin; if the script itself is fed in via a pipe, that read can consume the rest of the still-unread script instead of terminal input, silently truncating everything after it.
This bootstraps chezmoi, installs Bitwarden desktop (preconfigured for the self-hosted server at password.bennellit.com.au), Brave (origin flavor), VSCodium, and Claude Code, then applies the dotfiles for the invoking (non-root) user.
Or locally, from a checked out copy:
sudo ./install.sh
Layout
git/gitconfig,git/global-gitignore- global git config and gitignorebash/bashrc- shell configclaude/CLAUDE.md,claude/settings.json,claude/rules/,claude/agents/,claude/plans/- Claude Code global configsystemd/chezmoi-update.service,systemd/chezmoi-update.timer- user systemd unit that runschezmoi update(git pull + apply) on bootsymlink_*.tmpl,dot_claude/symlink_*.tmpl,dot_config/systemd/user/symlink_*.tmpl- chezmoi templates that point at the grouped content files aboveinstall.sh- bootstrap script for a new machine: installs chezmoi, Bitwarden desktop (Flatpak, preconfigured for self-hosting), Brave (origin flavor), VSCodium, and Claude Code, then applies the dotfiles
The real content of each dotfile lives in the plain, non-prefixed files grouped by tool. The symlink_*.tmpl files map those into the expected ~/.foo locations. Editing the grouped files directly updates the live dotfile immediately, no chezmoi apply needed.
After chezmoi apply places the systemd unit files, enable the timer once per machine:
systemctl --user enable --now chezmoi-update.timer
By default the timer only fires once a user systemd session exists (normally at login). To have it also fire on boot before anyone logs in, additionally run sudo loginctl enable-linger $USER.
Common commands
chezmoi diff- preview what would change in$HOMEchezmoi apply- apply source state to$HOMEchezmoi status- show which target files differ from sourcechezmoi cd- open a shell in the source directory (this repo)chezmoi edit ~/.bashrc- edit the source file corresponding to a target path