Works on *nix, optimized for macOS.
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 macOS).
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
-
Clone this repo:
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 macOS, use Homebrew:
-
Install Homebrew.
-
Use Homebrew Bundle to install the stuff listed in the
.Brewfile
: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. -
Node: Use
nvm
instead of Homebrew for managing Node.
-
-
Switch the default shell to the
zsh
installed by Homebrew (it's a newer version than the macOS default):-
Append the path to Homebrew's installed
zsh
:sudo sh -c "echo $(brew --prefix)/bin/zsh >> /etc/shells"
-
chsh -s $(brew --prefix)/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 useStow
to symlink your own config files (instructions below).To update
prezto
:git pull && git submodule update --init --recursive
-
Now use
stow
to symlink whatever config files are relevant:-
cd ~/.dotfiles/
-
$ stow FOLDER_NAME
will symlink all the files inside of the folder into the parent directory (in this case, the user's home folder.)
stow
whatever is relevant:bash
git
homebrew
- stowable,brew bundle --global
will use$HOME/.Brewfile
iterm2
- my.zshrc
file is configured to look for the shell integration file.pypi
ruby
ssh
tmux
- #TODOvim
- for when Neovim isn't availablevimify
-.inputrc
and.editrc
make vim commands work in many interactive shells, for example themysql
andpostgres
shellszsh
- includesprezto
config files
Stow
thoughtfully raises an error if the symlink destination already exists. For example, installingzsh
creates a default~/.zshrc
and~/.zshlogin
. Just delete these default files before stowing your customized versions.If using a different OS than macOS, 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:
-
-
Other config files that aren't
stow
able:nvim
- Neovim. No need to stow as it respects$XDG_CONFIG_HOME
python
- not stowable, I basically use this as a cheat sheet to remind me of my favorite python packages.- VSCode IDE - don't backup its dotfiles, use its built-in settings sync instead.
-
Other apps I commonly install:
- Visual Studio Code
- Settings and extensions are saved via the built-in settings sync.
- Need to manually install the shell command
code
.
- iTerm2
- Cyberduck
- PGAdmin or Postico
- MySQLWorkbench
- Robomongo
- SourceTree
- Virtualbox
- BetterTouchTool
- Rectangle
- macOS
/etc/hosts
GUI
- Visual Studio Code
-
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:# typically for me this is located in ~/.cache/prezto/zcompdump rm -rf "${XDG_CACHE_HOME:-$HOME/.cache}/prezto/zcompdump" && compinit
Note: Many
homebrew
formulae automatically handle installing the formula's completion scripts. For example,brew install the_silver_searcher
(ag
) will also install a completion script forag
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 possible macOS customizations: https://mths.be/macos
Favorite Colorschemes:
monokai
solarized
railscasts
Favorite Fonts:
- Ubuntu Monospace including powerline fix
- Adobe Source Code (look for powerline fix)
-
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 powerline - used in vim, zsh, ipython, and tmux
Copyright 2015 Jeff Widman Licensed under the MIT License