Bram's dotfiles
Quickstart
Install brew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
sh -c "$(curl -fsLS get.chezmoi.io)" -- init --apply bcvanmeurs
After installation set remote to be through SSH
git remote set-url origin git@github.com:bcvanmeurs/dotfiles.git
import GPG key
gpg --import ~/.gnupg/gpg-github-0x7DFB3B93C5B98C91-2022-11-23.asc
gpg --edit-key 0x7DFB3B93C5B98C91
trust
quit
Fish shell
Add the fish shell to /etc/shells with:
echo $(which fish) | sudo tee -a /etc/shells
Change your default shell with:
chsh -s $(which fish)
Tmux
In tmux run prefix + I
to install tpm packages.
Yabai
yabai --start-service
skhd --start-service
Choices made
- Using Age and YubiKeys for encryption (age-plugin-yubikey)
- SSH keys on YubiKeys with secret part in 1Password
Todo
- Headless install on linux
- Encryption dependencies
- Install dependencies
- Inspiration:
Brew
Brew runs automated when the brewfile has changed. To manually run use:
brew bundle install --no-upgrade
brew bundle cleanup
brew cu
brew cu -a -i
for interactive mode on auto updatable programs
Encryption
Encryption with age
- Follow this to create a key pair: https://www.chezmoi.io/user-guide/frequently-asked-questions/encryption/
- Encrypt a yaml file in some place (in my example it is in data).
- Use Go templating syntax to read and decrypt the file, for example:
{{- $work := include "data/work.yaml.age" | decrypt | fromYaml -}} export PIP_EXTRA_INDEX_URL={{ $work.pip_extra_index_url }}
Encryption with 1Password
{{ onepasswordRead "op://development/id_sk_nano/id_sk_nano.pub" }}
Cheatsheet
chezmoi init
recreate configchezmoi --refresh-externals
update externals
Using chezmoi across multiple machines
chezmoi init $GITHUB_USERNAME
clones your dotfiles from GitHub into the source directory.chezmoi init --apply $GITHUB_USERNAME
clones your dotfiles from GitHub into the source directory and runschezmoi apply
.chezmoi update
pulls the latest changes from your remote repo and runschezmoi apply
.
Working with templates
chezmoi data
prints the available template data.chezmoi add --template $FILE
adds$FILE
as a template.chezmoi chattr +template $FILE
makes an existing file a template.chezmoi cat $FILE
prints the target contents of$FILE
, without changing$FILE
.chezmoi execute-template
is useful for testing and debugging templates.
Working with scripts
chezmoi state delete-bucket --bucket=scriptState
to clear the state of run once scripts.
Daily commands
chezmoi add $FILE
adds$FILE
from your home directory to the source directory.chezmoi edit $FILE
opens your editor with the file in the source directory that corresponds to$FILE
.chezmoi status
gives a quick summary of what files would change if you ranchezmoi apply
.chezmoi diff
shows the changes thatchezmoi apply
would make to your home directory.chezmoi apply
updates your dotfiles from the source directory.chezmoi edit --apply $FILE
is likechezmoi edit $FILE
but also runschezmoi apply $FILE
afterwards.chezmoi cd
opens a subshell in the source directory.