-
a [[tool]].
- [[bmann]] noded it first :)
- #go https://www.chezmoi.io
- #git https://github.com/twpayne/chezmoi
- #start https://www.chezmoi.io/quick-start/
- #push [[2022-05-26]]
- See update below for the TLDR on how to use templates.
Example from my initial upload:
sh -c "`curl -fsLS chezmoi.io/get`"
chezmoi add ~/.bashrc
chezmoi add ~/.vimrc
chezmoi add ~/.tmux.conf
chezmoi add ~/.gnupg
chezmoi cd
git add .
git commit -m 'Initial commit from paramita."
After creating an empty repo in any host (I used [[gitlab]]), you can upload the local repo you cd'd into above as per standard [[git]] procedure:
git remote add origin git@gitlab.com:flancian/flancian.git
git branch -M main
git push -u origin main
Then for syncing files into a new machine, you install chezmoi and then pass the repo as argument to chezmoi init
:
sh -c "`curl -fsLS chezmoi.io/get`"
chezmoi init https://gitlab.com/flancian/flancian
chezmoi apply -v
To upload changes to files already tracked by chezmoi from any host:
chezmoi re-add
chezmoi cd
git commit -a -m "chezmoi from $HOSTNAME"
git push
[[Chezmoi]] supports [[templates]] to special-case files depending on the host they're being installed in.
To apply a template to an already tracked file, e.g. .config/sway/config (in my case):
chezmoi chattr +template .config/sway/config
chezmoi edit .config/sway/config
Then use template syntax (see https://www.chezmoi.io/user-guide/templating/#simple-logic for the gist of it if you're interested in per-hostname cases, which is what I was after) and then use chezmoi apply
to "run" the template and produce the file in any host.
Note that after that you need to edit the file with chezmoi edit
every time essentially, unless you intend to get conflicts later. It seems like a fair tradeoff.
An example from my sway config which shows the syntax for if .. else if .. else:
{{ if eq .chezmoi.hostname "nostromo" }}
set $focused #b43757
{{ else if eq .chezmoi.hostname "paramita" }}
set $focused #472dbc
{{ else }}
set $focused #b46b37
{{ end }}
- public document at doc.anagora.org/chezmoi
- video call at meet.jit.si/chezmoi