Having a repository with a collection of all your dotfiles is the best way to keep your environments synced on multiple machines (i.e. home and work). Having one of these bad boys allows you to set up a new machine in a matter of seconds, installing all your settings, aliases and even programs.
But What is exactly a dotfile?
Quoting Captain Hindsight, a dotfile is a file whose filename starts with a
A file starting with a
. means that is not a normal file, they don’t have an extension, and in
Unix file systems they are hidden. Dotfiles are files usually stored in your
~ and they contain a bunch of settings and configurations. For example,
.gitconfig can contain a series of shortcuts you usually use in git,
.bashrc can contain a bunch of
programs automatically executed once you open your terminal.
One to rule them all
It has been a while since I started messing around with all my dotfiles. My first approach was copying them manually or using Dropbox and
symlinks to move and link them across different machines. It was working but it wasn’t the best solution possible, even because I was just copying around some setting, I wanted to have just a command to run and, here we go, everything ready.
One day, one of the lazy ones, I didn’t want to lose my mind trying to reproduce my favourite environment in the nth new machine. I started googling a bit looking for a better approach and I found my eldorado https://dotfiles.github.io/, an entire page of Github dedicated to exactly this annoying procedure.
Following the approach of “copy from the best” I created a small repo containing my basic set up.
The magic box
This is the structure of the
├── Brewfile ├── Makefile ├── README.md ├── git │ ├── gitconfig │ └── gitignore └── zsh ├── aliases └── zshrc
It’s where all the programs/apps are installed from
flux and some Finder improvements.
It’s the engine and were the magic happens. It contains a bunch of
symlinks that copy the bash and git setting into the root directory of the user:
symlinks: @ln -sf $(DIR)/git/gitconfig ~/.gitconfig @ln -sf $(DIR)/git/gitignore ~/.gitignore @ln -sf $(DIR)/zsh/zshrc ~/.zshrc
There is a part also dedicated to the installation and the upgrade of the programs via
brew: brew update brew upgrade brew tap Homebrew/bundle brew tap caskroom/versions brew bundle brew cleanup
ça va sans dire, it contains all the settings related to git.
See above, all the settings related to the CLI.
Up and running
There are just a couple of pre-requisites, that I the future I want to automate as well:
Once that these two are installed you are ready to rock.
First of all download the git repository:
git clone https://github.com/sirLisko/dotfiles.git cd dotfiles
And the install them:
To infinity and beyond
Unfortunately, I didn’t have much time to work on improving and expanding them. There are definitely a bunch of things I’d like to optimise, for example, removing the pre-requisites. A draft of future implementation includes:
- automate the installation of
- automate the installation of
- osX settings
ATMand Atom configuration
For the moment I am already pretty satisfied enough with the work I’ve done around them.
I suggest playing with your dotfiles, it’s a good exercise and well spent time, you will definitely learn a lot of new things and the next time you have to set up a new machine you will feel like a magician.