My OS X / Ubuntu dotfiles.
These dotfiles are forked from "Cowboy" Ben Alman
It's really not very complicated. When [dotfiles][dotfiles] is run, it does a few things:
- Git is installed if necessary, via APT or Homebrew (which is installed if necessary).
- This repo is cloned into the
~/.dotfiles
directory (or updated if it already exists). - Files in
init
are executed (in alphanumeric order). - Files in
copy
are copied into~/
. - Files in
link
are linked into~/
.
Note:
- The
backups
folder only gets created when necessary. Any files in~/
that would have been overwritten bycopy
orlink
get backed up there. - Files in
bin
are executable shell scripts ([~/.dotfiles/bin][bin] is added into the path). - Files in
source
get sourced whenever a new shell is opened (in alphanumeric order).. - Files in
conf
just sit there. If a config file doesn't need to go in~/
, put it in there. - Files in
caches
are cached files, only used by some scripts. This folder will only be created if necessary.
Notes:
- You need to be an administrator (for
sudo
). - You need to have installed XCode Command Line Tools, which are available as a separate, optional (and much smaller) download from XCode.
bash -c "$(curl -fsSL https://raw.github.com/napcae/dotfiles/master/bin/dotfiles)" && source ~/.bashrc
Notes:
- You need to be an administrator (for
sudo
). - If APT hasn't been updated or upgraded recently, it will probably be a few minutes before you see anything.
sudo apt-get -qq update && sudo apt-get -qq upgrade && sudo apt-get -qq install curl && echo &&
bash -c "$(curl -fsSL https://raw.github.com/napcae/dotfiles/master/bin/dotfiles)" && source ~/.bashrc
These things will be installed, but only if they aren't already.
- Homebrew
- git
- tree
- curl
- lesspipe
- irssi
- screen
- nmap
- git-extras
- htop-osx
- mobile-shell
- youtube-dl
- lynx
- autojump
- ack
- APT
- build-essential
- libssl-dev
- git-core
- tree
- nmap
- telnet
- htop
- Nave
- Npm (latest stable)
- Grunt
- JSHint
- Uglify-JS
- Npm (latest stable)
- Rbenv
- Ruby 1.9.3-p194 (default)
- Ruby 1.9.2-p290 (default)
- Ruby Gems
- bundler
- awesome_print
- interactive_editor
Any file in the copy
subdirectory will be copied into ~/
. Any file that needs to be modified with personal information (like .gitconfig which contains an email address and private key) should be copied into ~/
. Because the file you'll be editing is no longer in ~/.dotfiles
, it's less likely to be accidentally committed into your public dotfiles repo.
Any file in the link
subdirectory gets symbolically linked with ln -s
into ~/
. Edit these, and you change the file in the repo. Don't link files containing sensitive data, or you might accidentally commit that data!
To keep things easy, the ~/.bashrc
and ~/.bash_profile
files are extremely simple, and should never need to be modified. Instead, add your aliases, functions, settings, etc into one of the files in the source
subdirectory, or add a new file. They're all automatically sourced when a new shell is opened. Take a look, I have a lot of aliases and functions. I even have a fancy prompt that shows the current directory, time and current git/svn repo status.
In addition to the aforementioned [dotfiles][dotfiles] script, there are a few other [bash scripts][bin]. This includes ack, which is a git submodule.
- [dotfiles][dotfiles] - (re)initialize dotfiles. It might ask for your password (for
sudo
). - src - (re)source all files in
source
directory - Look through the [bin][bin] subdirectory for a few more.
Copyright (c) 2012 "Cowboy" Ben Alman
Licensed under the MIT license.
http://benalman.com/about/license/