This repository contains my personal dotfiles for working with Bash and Vim. By using Homebrew, Homebrew cask and npm everything is conveniently versioned on-line and scripted such that a fresh install is just one command away.
While looking for a way to easily distribute my .vimrc
to different systems I ran into the
dotfiles repository of iheitlager,
which gave me a first insight into the wondrous world of .dotfiles.
This set-up modified versions of the scripts from iheitlager, mainly some renamings,
placing some functionality in other places, and reducing the need for sudo
.
To install my exact configuration execute the following commands:
git clone https://github.com/EricBouwers/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
./bootstrap
The following commands (located in 'bin') need to be run every now and then to stay up to date:
These scripts can be run separately, or by simply typing dot
.
If you want to create repository for your own dotfiles with a similar set-up you probably want to copy the basic structure from the dotfiles-skeleton branch and add your own specific configuration.
The overall structure follows the structure of iheitlager and holman. Important things to note is that the set-up revolves around topics, where each topic can contain different components.
Everything is configured and tweaked within ~/.dotfiles
. The actual dotfiles are symlinked from this folder during the bootstrap.
This should remain on your system, and offers one place for versioning of your dotfiles, and for example allows .ssh to be excluded.
Everything's built around topic areas. If you're adding a new area to your
forked dotfiles โ say, "Java" โ you can simply add a java
directory and put files in there.
The complete dotfiles system consists of install time and runtime parts, in total four parts:
- symlinks to dotfiles
- topical extensions to be loaded by
.bash_profile
- topical brew based installers during
script\bootstrap
(run these withprocess_brew_files
) - topical installers which run during
bootstrap
There's a few special files in the hierarchy.
- bin/:
bin/
will get added to your$PATH
by.bash_profile
and anything in there will be made available everywhere. - topic/bash_aliases: Any file named
bash_aliases
is loaded by.bash_profile
and provides aliases available in your shell - topic/bash_env: Any file named
bash_env
is loaded by.bash_profile
and provides environment variables available in your shell - topic/bash_completion: Any file named
bash_completion
is loaded by.bash_profile
, is supposed to contain completion statements and is available in your shell - topic/brew_packages: Any file named
brew_packages
is executed when runningprocess_brew_files
, this provides a way to create Homebrew based installers. - topic/install.sh: Any file named
install.sh
is executed when runningbootstrap
, this provides a way to create topical installers - topic/*.symlink: Any files ending in
*.symlink
get symlinked into your$HOME
. This is such that you can keep all of those versioned in your dotfiles directory, but still keep those autoloaded files in your home directory. These files get symlinked in when you runbootstrap
.
Do not forget to never checkin secrets in any of these files, use ~/.localrc for this (sourced by .bash_profile
)
- General Bash specific set-up was taken from https://github.com/iheitlager/dotfiles
- Main inspiration originally comes from https://github.com/holman/dotfiles
- More about the dotfile stuff: https://dotfiles.github.io/
- Get more inspiration here: http://www.dotfiles.org/
- Solarized theme made by http://ethanschoonover.com/solarized