Find a file
2016-12-23 18:21:40 -05:00
.enabled.d Complete refactor + arch linux support 2016-10-19 16:56:37 +02:00
bin bin/zzz: ignore missing slock 2016-12-17 03:10:23 -05:00
browser Add browser userstyles 2016-10-20 23:47:34 +02:00
dev dev/python/install: install from repo 2016-12-23 03:15:34 -05:00
docker docker: add --needed flag to pacman in install script 2016-11-10 18:38:35 +01:00
editor editor/neovim/install: refactor + don't reinstall on arch 2016-12-16 18:40:01 -05:00
os os/arch (mpd): move db_file and playlist_directory into music_directory 2016-12-23 03:23:20 -05:00
recipes Add editor/vimlite (and update recipes/remote to use it) 2016-10-30 14:39:08 +01:00
scripts Add scripts/cleanup-music.sh 2016-12-23 03:10:50 -05:00
shell shell/aliases.sh: Don't auto-ls after .. aliases; add la alias 2016-12-23 03:13:21 -05:00
vcs vcs/git/install: refactor + don't reinstall|confirm 2016-12-16 18:38:31 -05:00
weechat +weechat config 2016-11-15 02:42:14 +01:00
.gitignore Add .tmux/plugins and .tmuxifier to gitignore 2016-12-23 03:12:51 -05:00
bootstrap bootstrap: only symlink nested dotfiles if parent directory is XDG_CONFIG_HOME 2016-12-23 03:16:13 -05:00
clean clean: remove enabled topics before cleaning dead links 2016-12-23 18:21:40 -05:00
LICENSE Update readme; add license 2016-03-03 11:03:47 -05:00
README.md Rewrite README 2016-12-23 18:21:26 -05:00

Henrik's dotfiles

MIT

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.

e.g. ./bootstrap os/arch shell/{zsh,tmux} dev/python

Usage: bootstrap [-iuldynr] [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)
  -r  Refresh symlinks (same as -uiy)

Here's a simplified break down of what it does:

# 1. Symlinks topic's bin scripts to ~/.bin
ln -sfv $topic/bin/* ~/.bin/

# 2. Symlinks dotfiles to $HOME
ln -sfv $topic/.* ~/
ln -sfv $topic/.config/* ~/.config/

# 3. Track enabled topics in ~/.dotfiles/.enabled.d.
# 4. If topic is enabled, run its update script. Otherwise, run its install script
if [[ -e ~/.dotfiles/.enabled.d/$topic ]]; then
    $topic/update
else
    ln -sfv $topic ~/.dotfiles/.enabled.d/
    $topic/install
fi

Clean

clean will delete broken symlinks in $HOME, and can "disable" all 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

Other Relevant Configs

  • Vim (pulled in by the editor/vim topic)
  • Emacs (pulled in by the editor/emacs topic)