No description
  • Shell 90.6%
  • Go Template 9.4%
Find a file
Stewart Bennell ec28d0e76f
add chezmoi-update systemd user timer
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.
2026-08-07 19:07:56 +10:00
bash group dotfiles by tool and manage bashrc as a symlink 2026-08-06 19:44:30 +10:00
claude add ~/.claude config to chezmoi as symlinks 2026-08-06 20:04:50 +10:00
dot_claude add ~/.claude config to chezmoi as symlinks 2026-08-06 20:04:50 +10:00
dot_config/systemd/user add chezmoi-update systemd user timer 2026-08-07 19:07:56 +10:00
git group dotfiles by tool and manage bashrc as a symlink 2026-08-06 19:44:30 +10:00
systemd add chezmoi-update systemd user timer 2026-08-07 19:07:56 +10:00
CLAUDE.md add ~/.claude config to chezmoi as symlinks 2026-08-06 20:04:50 +10:00
install.sh install.sh/README: recommend download-then-run over curl | sudo bash 2026-08-07 18:51:50 +10:00
README.md add chezmoi-update systemd user timer 2026-08-07 19:07:56 +10:00
symlink_dot_bashrc.tmpl group dotfiles by tool and manage bashrc as a symlink 2026-08-06 19:44:30 +10:00
symlink_dot_gitconfig.tmpl group dotfiles by tool and manage bashrc as a symlink 2026-08-06 19:44:30 +10:00
symlink_dot_global-gitignore.tmpl group dotfiles by tool and manage bashrc as a symlink 2026-08-06 19:44:30 +10:00

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 gitignore
  • bash/bashrc - shell config
  • claude/CLAUDE.md, claude/settings.json, claude/rules/, claude/agents/, claude/plans/ - Claude Code global config
  • systemd/chezmoi-update.service, systemd/chezmoi-update.timer - user systemd unit that runs chezmoi update (git pull + apply) on boot
  • symlink_*.tmpl, dot_claude/symlink_*.tmpl, dot_config/systemd/user/symlink_*.tmpl - chezmoi templates that point at the grouped content files above
  • install.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 $HOME
  • chezmoi apply - apply source state to $HOME
  • chezmoi status - show which target files differ from source
  • chezmoi cd - open a shell in the source directory (this repo)
  • chezmoi edit ~/.bashrc - edit the source file corresponding to a target path