# clone as a bare repository at ~/.cfg
git clone [email protected]:rhysormond/dotfiles.git ~/.cfg --bare

# navigate to the newly cloned repo
cd ~/.cfg

# hide all the untracked files
git config --local status.showUntrackedFiles no

# copy files from git to ~
git --work-tree=$HOME reset --hard

A few fun things about my development environment!

I version control my dotfiles by checking in my entire home directory. It makes setting up a new computer much cleaner and avoids copying/symlinking files. The repository itself stays out of the way in a hidden, --bare repository with git aliases to reference a worktree in $HOME.

Other fun git tweaks include:

  • using histogram diff algorithm instead of the default
  • a git commit message hook that enforces the conventional commit standard
  • a git utility for managing dependent pull requests with their commit messages
  • piping diffs through the diffr post-processor to add intra-line coloring
  • sorting my git branches by the date they were last edited
  • using the --graph view for log by default
  • changing my pager to less --quit-if-one-screen so that short output just gets printed to stdout instead of starting an interactive session

I've written extensive vim configuration that's largely shared with the IntelliJ IdeaVim plugin. I've also got some fancy magic for fuzzy finding everything from buffer names to lines within the project and some seamless split navigation with TMUX.

I've also managed to get nearly all of my applications set up to respect the XDG base directory specification to keep things tidy. I've somehow also gotten xfce, xmonad, and polybar to work acceptably well together.