No description
  • Shell 92%
  • Go Template 8%
Find a file
2026-10-03 07:20:06 +10:00
bash bashrc: load nvm and its bash completion 2026-09-27 07:56:15 +10:00
claude claude/plans: add weekly bookings report plan 2026-09-27 07:56:15 +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: install Hugo and Node.js (LTS via nvm) 2026-10-03 07:20:06 +10:00
README.md install.sh: install Hugo and Node.js (LTS via nvm) 2026-10-03 07:20:06 +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, Hugo, Node.js (LTS via nvm), 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, Hugo, Node.js (LTS via nvm), 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