Works on *nix, optimized for OS X.
Managed using Stow, so you can pick and choose which programs to install.
Initially I tried entirely automating the entire install process, but quickly found it wasn't worth the maintenance. Starting from scratch happens so rarely for me that each time I was fiddling with the bootstrap scripts to work around a random issue (often due to a new version of OSX).
Instead, it's simpler to install stuff by hand, and manage only the configuration files (dotfiles) in this repo.
-
Make hidden files/folder visible in Finder:
defaults write -g AppleShowAllFiles -bool true
-
git clone git@github.com:jeffwidman/dotfiles.git ~/.dotfiles
- If cloning to a server without a Github-connected SSH key use 'https' instead:
git clone https://github.com/jeffwidman/dotfiles.git ~/.dotfiles
- Install desired binaries using your favorite package manager:
- If on OSX, use Homebrew:
- Install Homebrew.
- Install Homebrew Bundle:
$ brew tap Homebrew/bundle
$ brew bundle --file=~/.dotfiles/homebrew/.Brewfile
After the.Brewfile
is symlinked into ``~/.Brewfile, just use
$ brew bundle --global`.
- Make sure Stow gets installed, we'll use this later to symlink the dotfiles.
- Ruby:
- Use
rvm
instead of Homebrew. Much easier to manage gemsets, ruby versions, etc.
- Use
- Node:
- Use
nvm
instead of Homebrew for managing Node. - Install/upgrade [manually using
git
] (https://github.com/creationix/nvm#manual-install) rather thannvm
'sinstall.sh
script. - Unfortunately,
nvm
drastically slows shell startup time due to nvm-sh/nvm#966, so after installing node (nvm install node
), runnvm unalias default
to disable the alias. Just remember to first runnvm use node
whenever you want to run webpack, etc.
- Use
-
Make ZSH the default shell:
-
$ sudo vim /etc/shells
-
Append the path to zsh - Homebrew sticks it in
/usr/local/bin/zsh
-
Save and exit
-
$ chsh -s /usr/local/bin/zsh
-
Install Prezto:
git clone --recursive git@github.com:sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
- The default Prezto instructions say to symlink the default config files. Don't do this; instead use Stow to symlink your own config files (instructions below).
- To update Prezto:
git pull && git submodule update --init --recursive
- Now use
stow
to symlink the various config files:
$ cd ~/.dotfiles/
$ stow PACKAGE_NAME
will symlink all the files inside of the package_name's folder into the parent directory (in this case, the user's home folder.)- Stow thoughtfully raises an error if the symlink destination already exists. For example, installing ZSH creates a default
~/.zshrc
and~/.zshlogin
. Just delete these default files before stowing your customized versions. - If using a different OS than OS X, some packages may store their config files at a different location. For example, the fonts folder. Just specify the full destination path for Stow.
- More info:
- Several config files aren't
stow
able--review the list below
- Other apps I commonly install:
- Visual Studio Code - be sure to install the shell command
code
. - iTerm2
- Cyberduck
- PGAdmin / Postico
- MySQLWorkbench
- Robomongo
- SourceTree
- Virtualbox
- BetterTouchTool
- OS X /etc/hosts GUI
- ZSH completion scripts:
Symlink any completion scripts into
/usr/local/share/zsh/site-functions/
. The filename must begin with an_
orzsh
will not read it. Prezto caches the output ofcompinit
, to rebuild the cache do:rm -rf ~/.zcomp* && compinit
Note: Many homebrew formula automatically handle installing the formula's
completion scripts. For example, brew install the_silver_searcher
(ag
)
will also install a completion script for ag
in /usr/local/share/zsh/site-functions/
.
Docker completion scripts - I opened sorin-ionescu/prezto#1459 to try to get this into prezto:
ln -s /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose
##List of config files
- VSCode - Settings are stowable, but extensions are purposefully excluded. At this time, there's no way to favorite/bookmark recommendations on the Visual Studio Marketplace. When there is, I'll start creating a list of the ones I use.
- bash
- git
- Homebrew Brewfile - stowable,
brew bundle --global
will use $HOME/.Brewfile - nvim - Neovim. No need to stow as it respects
$XDG_CONFIG_HOME
- python - not stowable, use
pip install -r ~/.dotfiles/python/requirements.txt
- ruby
- tmux - #TODO
- vim - for when Neovim isn't available
- vimify -
.inputrc
and.editrc
make vim commands work in many interactive shells, for example the mysql and postgres shells - zsh - includes prezto config files
##Misc Notes:
List of possible macOS customizations: https://mths.be/macos
For themes, check out the Base16 template system. It includes templates for theming many different apps.
Colorschemes that I like:
- monokai
- solarized
- railscasts
Fonts that I like:
- Ubuntu Monospace including powerline fix
- Adobe Source Code (look for powerline fix)
##TODO:
-
add https://github.com/skwp/dotfiles/blob/master/ctags/ctags to make ctags parse ruby and js better
-
how to use ctags http://scholarslab.org/research-and-development/code-spelunking-with-ctags-and-vim/
-
Improve my vimrc and nvimrc - vim plugins:
- vim-markdown Markdown syntax highlighting for Vim
- syntastic (pylint, pep8, pyflakes linters)
- youcompleteme
- tasklist
- taglist (and ctags) (tagbar as alternative?)
- nerdtree
- powerline
- minibuffexplorer
- the_silver_searcher (vs ctrlp?)
-
add ipython (replaces python interpreter)
-
add powerline - used in vim, zsh, ipython, and tmux
-
gitignore add:
- @dave-tucker - Initial inspiration, although I totally rebooted my dotfiles several times since then
- @chriskempson - for base16
- @sorin-ionescu - for prezto
- @skwp - another inspiration dotfiles repo
- @mathiasbyens - for his awesome osx customization script
Copyright 2015 Jeff Widman Licensed under the MIT License