Several months ago, I became pretty interested in the idea of a unified computer setup. Between my home computers and work computers, it began weighing on me mentally to have to switch contexts all the time. I'd forget which machine had `wget`, which `fish` functions were installed on which host, etc. The most tedious thing was the process of setting up a new computer: painstakingly finding each and every little configuration I had on my other machines, and copying them over. I'd spend half a day just setting up a new machine. I wanted something better.<p>I first tried Ira's [mackup](<a href="https://github.com/lra/mackup" rel="nofollow">https://github.com/lra/mackup</a>), which syncs files to Dropbox. Its catch-all approach scared me, though, as it backs up `fish` history by default. I decided to move to something different.<p>I ended up basing my dotfiles setup on the GNU [stow](<a href="https://www.gnu.org/software/stow/" rel="nofollow">https://www.gnu.org/software/stow/</a>) utility. Here's how it works:<p>- In `~`, I have a git-managed directory `dotfiles`<p>- For every new app I use, I make a new directory in `dotfiles`. For example, `vim`, `fish`, etc.<p>- I run `stow` on all these directories, and it symlinks everything into place<p>I ended up rolling my own update script, but it's pretty trivial. I also made heavy use of Homebrew brewfiles, which can be used to define what commands you would like to run through Homebrew. I also use [Homebrew Cask](<a href="http://caskroom.io/" rel="nofollow">http://caskroom.io/</a>) to install apps.<p>In the end, I now have the exact same configuration on all my machines. For work, I have a separate branch, which has other fish functions / utilities. I recently got a new computer, and I ran the `update.sh` script while I went to lunch. When I came back, my machine was ready to go.<p>Take a look at my setup [here](<a href="https://github.com/peterhajas/dotfiles" rel="nofollow">https://github.com/peterhajas/dotfiles</a>).
Why ansible? I'm storing my dotfiles in a private git repo and sync across multiple laptops. Works fine so far.<p>Put the dotfiles and directories into git. Symlink from ~/.vim to ~/dotfiles/.vim and be done with it. (~/dotfiles would contain the git checkout of course).
That has to be the worst webdesign I have seen this week. Not only does it require JS to show anything but a blank page but it displays an "inner-window" window. Dear web gods, why?<p><a href="http://i.imgur.com/qBHLCac.png" rel="nofollow">http://i.imgur.com/qBHLCac.png</a>