.enabled.d | ||
bin | ||
browser | ||
dev | ||
docker | ||
editor | ||
os | ||
recipes | ||
shell | ||
vcs | ||
weechat | ||
.gitignore | ||
bootstrap | ||
clean | ||
LICENSE | ||
README.md |
Henrik's dotfiles
My dotfiles. Fuel for my madness. Designed for MacOS, Arch Linux and the various debian-based boxes I frequently ssh into.
It is organized into topics, some with their own READMEs. Check them out for
more targeted information. The ./boostrap
script is used to install and update
them.
Bootstrap
bootstrap
is my idempotent dotfile deployment script. This is how it works:
You pass the directories of "topics" you want to install and it will:
- symlink
$topic/bin/*
to~/.bin/
- symlink
$topic/.*
to~/
and$topic/.*/*
to~/.$1/
(i.e. 2-level symlinking). e.g.os/arch/.Xresources
will be symlinked to~/.Xresources
, andos/arch/.config/redshift.conf
will be symlinked to~/.config/redshift.conf
(~/.config
is not a symlink). - run
$topic/install
the first time - run
$topic/update
on consecutive runs - symlink
$topic
to$DOTFILES/.enabled.d/
to keep track of what's enabled. Runningbootstrap
without arguments will run this process on all enabled topics in.enabled.d/
.
NOTE: Be sure to add ~/.bin to PATH
Usage: bootstrap [-iuldyn] [topic1[ topic2[ ...]]]
Options:
-d Do a dry run (only output commands, no changes)
-i Don't run install scripts
-l Don't symlink dotfiles or bin scripts
-n Don't overwrite conflicts (no prompts
-u Don't run update scripts
-y Overwrite conflicts (no prompts)
Or write a recipe list (examples in recipes/
):
bootstrap $(recipes/ganymede)
(my laptop)
To update the topics that you've already enabled, simply run bootstrap
, and it
will update your symlinks and run $topic/update
wherever they may exist.
A few good-to-knows (where $topic is an enabled topic):
- zshrc auto-sources
$topic/*.zsh
$topic/bin/*
scripts will be symlinked to~/.bin
. The included bash/zsh topics add~/.bin
toPATH
.
Clean
clean
will delete broken symlinks in $HOME
, and can "disable" topics by
removing their symlinks in .enabled.d/
Usage: clean [-du]
Options:
-d Do a dry run (only output commands, no changes)
-u Uninstall all enabled topics