| +docker | ||
| +weechat | ||
| .enabled.d | ||
| bin | ||
| browser/userstyles | ||
| dev | ||
| editor | ||
| os | ||
| recipes | ||
| shell | ||
| vcs | ||
| .gitignore | ||
| bootstrap | ||
| clean | ||
| LICENSE | ||
| README.md | ||
Henrik's dotfiles
Fuel for my madness. Designed for Arch Linux, MacOS, and various remotes I frequent.
It is organized into topics, some with their own READMEs. Check them out for
more targeted information. The ./bootstrap script is used to deploy and update
them.
Bootstrap
bootstrap is my idempotent dotfile deployment script.
e.g. ./bootstrap os/+arch shell/+{zsh,tmux} dev/+pyenv
Usage: bootstrap [-iuldypLSU] [topic1[ topic2[ ...]]]
Options:
  -i  Don't run install scripts
  -u  Don't run update scripts
  -l  Don't symlink dotfiles
  -d  Do a dry run (only output commands, no changes)
  -y  Overwrite conflicts (no prompts)
  -p  Prompt on file conflict (to overwrite)
  -L  Refresh links; the same as -ui
  -S  Server mode; only install the bare minimum
  -U  Update mode; run update scripts only
Here's a simplified break down of what it does:
# 1. Symlinks dotfiles to $HOME
ln -sfv $topic/.* ~/
ln -sfv $topic/.{config,local}/* ~/.{config,local}/
# 2. Track enabled topics in ~/.dotfiles/.enabled.d.
if [[ -e ~/.dotfiles/.enabled.d/$topic ]]; then
    # 3a. If topic is already enabled, run update script
    $topic/update
else
    # 3b. Otherwise, run install script
    ln -sfv $topic ~/.dotfiles/.enabled.d/
    $topic/install
fi
Clean
clean deletes broken symlinks in $HOME. If passed -u, it will remove all
symlinks in .enabled.d/, marking all topics as "disabled".
Usage: clean [-du]
Options:
  -d  Do a dry run (only output commands, no changes)
  -u  Uninstall all enabled topics