Dotfiles¶
Goals¶
- Streamline frequent workflows
- Configure Bash, ZSH, and Vim
- Configure Python, pip, virtualenv, virtualenvwrapper
- Configure IPython
- Configure Gnome
- Configure i3wm
- Support Debian Linux, Ubuntu Linux, OSX
- Document commands and keyboard shortcuts
- Create a productive working environment
Installation¶
Requirements¶
Project requirements are installed by bootstrap_dotfiles.sh and/or, optionally, also a Makefile.
- Bash, Git, Python, pip
Install the dotfiles¶
The bootstrap_dotfiles.sh shell script:
- clones the
dotfiles
anddotvim
repositories - creates symlinks from
HOME
to__DOTFILES
, - installs the
dotfiles
Python package, - installs additional requirements with pip
wget bootstrap_dotfiles.sh
bash ./scripts/bootstrap_dotfiles.sh -I -R
Create a virtualenv with virtualenvwrapper
named “dotfiles
”:
# Install virtualenvwrapper
pip install virtualenvwrapper # apt-get install python-virtualenvwrapper
source $(which 'virtualenvwrapper.sh') # 07-bashrc.virtualenvwrapper.sh
export WORKON_HOME="~/-wrk/-ve27" # __WRK/-ve python2.7
mkdir -p $WORKON_HOME
# Create a virtualenvwrapper virtualenv
mkvirtualenv dotfiles # workon dotfiles
mkdir $VIRTUAL_ENV/src
cd $VIRTUAL_ENV/src
# Clone the dotfiles git repository
branch="master" # stable
# branch="develop" # development
git clone ssh://git@github.com/westurner/dotfiles -b ${branch}
cd dotfiles
# Install dotfiles pkg, symlinks, and extra pip requirements
scripts/bootstrap_dotfiles.sh -I -R # -I calls -S
With Python builds that haven’t set a prefix which is writeable
by the current user, you can also install into ~/.local
with
pip --user
:
# (Optional) Also install pkg and reqs into ~/.local/bin (pip --user)
# scripts/bootstrap_dotfiles.sh -I -R -u
Note
See Quickstart, which uses venv-style paths.
Source the dotfiles¶
Bash (and ZSH) configuation sets are sequentially numbered 00-99.
00-bashrc.before.sh sources a documented, numerically sequential sequence of bash scripts.
ZSH loads much of the standard Bash configuration and oh-my-zsh.
bootstrap_dotfiles.sh
-S
installs dotfiles${__DOTFILES}
symlinks.ln -s ~/-dotfiles/etc/.bashrc ~/.bashrc ln -s ~/-dotfiles/etc/.zshrc ~/.zshrc
# Source the dotfiles
source ~/.bashrc # source ~/.zshrc
# source ${__DOTFILES}/etc/.bashrc
## source ${__DOTFILES}/etc/bash/00-bashrc.before.sh # dotfiles_reload
### dotfiles configuration sequence # (\d\d)-bashrc.(.*).sh
#### source ${__DOTFILES}/etc/bash/99-bashrc.after.sh
##### source ${__PROJECTSRC} # ${__WRK}/.projectsrc.sh
# print venv configuration
dotfiles_status
ds
Last login: Tue Dec 2 15:01:56 on ttys000
#
# dotfiles_reload()
#ntid _TERM_ID="#SElGeTf5VcA" #_USRLOG="/Users/W/-usrlog.log"
# dotfiles_status()
HOSTNAME='nb-mb1'
USER='W'
__WRK='/Users/W/-wrk'
PROJECT_HOME='/Users/W/-wrk'
WORKON_HOME='/Users/W/-wrk/-ve'
VIRTUAL_ENV_NAME=''
VIRTUAL_ENV=''
_SRC=''
_APP=''
_WRD=''
_USRLOG='/Users/W/-usrlog.log'
_TERM_ID='#SElGeTf5VcA'
PATH='/Users/W/.local/bin:/Users/W/-dotfiles/scripts:/usr/sbin:/sbin:/bin:/usr/local/bin:/usr/bin:/opt/X11/bin:/usr/local/git/bin'
__DOTFILES='/Users/W/-dotfiles'
#
# cd /
#SElGeTf5VcA W@nb-mb1:/
$
$ stid 'dotfiles'
#stid _TERM_ID="dotfiles" #_TERM_ID__="dotfiles install" #_USRLOG="/Users/W/-usrlog.log"
# stid 'dotfiles'
dotfiles W@nb-mb1:/
$
Upgrade the dotfiles¶
# check for any changes to symlinked dotfiles
cdd # cddotfiles
git status && git diff # gsi ; gitw diff
# pull and upgrade dotfiles and dotvim
scripts/bootstrap_dotfiles.sh -U
Quickstart¶
This is a verbose example of installing and working with a
VIRTUAL_ENV
in WORKON_HOME
named “dotfiles
”.
See Install the dotfiles for more terse installation instructions.
# clone and install dotfiles and dotvim
# with venv-style paths (_SRC, _APP, _WRD)
# __WRK -- base path for workspace [venv]
__WRK="$HOME/-wrk"
cd $__WRK # cdwrk [venv]
# WORKON_HOME -- path to virtualenv dirs [virtualenvwrapper]
WORKON_HOME="${__WRK}/-ve27" # ~/-wrk/-ve27
test -d ${WORKON_HOME} || mkdir -p ${WORKON_HOME}
cd $WORKON_HOME # cdworkonhome cdwh cdve [venv]
# VIRTUAL_ENV_NAME -- basename for VIRTUAL_ENV [venv]
VIRTUAL_ENV_NAME="dotfiles"
# VIRTUAL_ENV -- current virtualenv path [virtualenv]
VIRTUAL_ENV="${WORKON_HOME}/${VIRTUAL_ENV_NAME}"
cd $VIRTUAL_ENV # cdv cdvirtualenv [venv, virtualenvwrapper]
# _SRC -- basepath of source repositories (e.g. for pip)
_SRC="${VIRTUAL_ENV}/src"
cd $_SRC # cdsrc cds [venv]
# _APP -- basename of current working directory [venv]
_APP="dotfiles"
# _WRD -- working directory path [venv]
_WRD="${_SRC}/${_APP}" # cdwrd cdw [venv]
git clone https://github.com/westurner/dotfiles $_WRD
git clone https://github.com/westurner/dotvim ${_WRD}/etc/vim
cd $_WRD # cdwrd cdw [venv]
# __DOTFILES -- symlink root for current dotfiles [venv]
__DOTFILES="${HOME}/-dotfiles"
ln -s $_WRD $__DOTFILES
ls ~/-dotfiles
cd $__DOTFILES # cddotfiles cdd [venv]
## Install the dotfiles
$_WRD/scripts/bootstrap_dotfiles.sh -h # help
$_WRD/scripts/bootstrap_dotfiles.sh -I # or: make install
$_WRD/scripts/bootstrap_dotfiles.sh -S # or: make install_symlinks
For further documentation, see: