diff --git a/.gitignore b/.gitignore index b2a831e..9d65825 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +/home/.ssh/ +.DS_Store .vagrant/ *.json *.box diff --git a/Vagrantfile b/Vagrantfile index 58b9d74..2952240 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -33,8 +33,8 @@ def bootstrap_args (setup) end Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| - config.vm.hostname = "jamlen-devenv" - config.vm.box = "chef/debian-7.6" + config.vm.hostname = "devenv" + config.vm.box = "chef/ubuntu-14.04" config.vm.network "private_network", ip: "192.168.56.2" if setup.has_key? 'syncedFolders' setup["syncedFolders"].each do |sync| @@ -44,7 +44,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.ssh.forward_agent = true config.vm.provider :virtualbox do |vb| - vb.name = "jamlen-devenv" + vb.name = "devenv" vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] vb.customize ["modifyvm", :id, "--memory", "4096"] end @@ -69,7 +69,7 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.provision :file, source: "./home/.gitconfig", destination: "~/.gitconfig" config.vm.provision :ventriloquist do |env| - env.packages << %w( tmux build-essential libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext libz-dev checkinstall exuberant-ctags curl python-pip vim-nox cmake dstat gnuplot gdb unzip autoconf automake libtool ) + env.packages << %w( tmux build-essential libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext libz-dev checkinstall exuberant-ctags curl vim-nox cmake dstat gnuplot gdb unzip autoconf automake libtool ) end args = bootstrap_args setup diff --git a/bootstrap.sh b/bootstrap.sh index 1d7f055..47c600f 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -44,16 +44,50 @@ case $(id -u) in git config --global user.name "$git_name" git config --global user.email "$git_email" fi + + if ! hash "git flow" 2>/dev/null; then + echo "git flow" + git clone --recursive git://github.com/nvie/gitflow.git + (cd gitflow && sudo make prefix=/opt/local install) + echo 'export PATH=$PATH:/opt/local/bin' >> $HOME/.profile + fi + + if ! hash pip 2>/dev/null; then + echo "Installing pip" + wget https://bootstrap.pypa.io/get-pip.py + sudo python get-pip.py + fi if ! hash docker 2>/dev/null; then echo "Installing docker" curl -sSL https://get.docker.com/ | sudo sh fi - if ! hash fig 2>/dev/null; then - echo "Installing fig" - sudo pip install -U fig - #sudo curl -L https://github.com/docker/fig/releases/download/1.0.0/fig-`uname -s`-`uname -m` > /usr/local/bin/fig; sudo chmod +x /usr/local/bin/fig + if ! hash go 2>/dev/null; then + echo "Installing golang" + VERSION="1.4" + OS="linux" + ARCH="amd64" + + FILE="go$VERSION.$OS-$ARCH.tar.gz" + + if [ ! -e $FILE ] + then + wget "https://storage.googleapis.com/golang/$FILE" + fi + + sudo tar -C /usr/local -xzf "$FILE" + echo 'export PATH=$PATH:/usr/local/go/bin' >> $HOME/.profile + echo 'mkdir -p $HOME/go' >> $HOME/.profile + echo 'export GOROOT=/usr/local/go' >> $HOME/.profile + echo 'export PATH=$PATH:$GOROOT/bin' >> $HOME/.profile + echo 'export GOPATH=$HOME/go' >> $HOME/.profile + echo 'export PATH=$PATH:${GOPATH//://bin:}/bin' >> $HOME/.profile + fi + + if ! hash dockercompose 2>/dev/null; then + echo "Installing docker-compose" + sudo pip install -U docker-compose fi if ! grep -qe "^export TERM='xterm-256color'$"~/.bashrc; then diff --git a/home/.bashrc b/home/.bashrc new file mode 100644 index 0000000..85c58d2 --- /dev/null +++ b/home/.bashrc @@ -0,0 +1,125 @@ +# ~/.bashrc: executed by bash(1) for non-login shells. +# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) +# for examples + +# If not running interactively, don't do anything +case $- in + *i*) ;; + *) return;; +esac + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth + +# append to the history file, don't overwrite it +shopt -s histappend + +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=2000 + +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + +# If set, the pattern "**" used in a pathname expansion context will +# match all files and zero or more directories and subdirectories. +#shopt -s globstar + +# make less more friendly for non-text input files, see lesspipe(1) +[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)" + +# set variable identifying the chroot you work in (used in the prompt below) +if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then + debian_chroot=$(cat /etc/debian_chroot) +fi + +# set a fancy prompt (non-color, unless we know we "want" color) +case "$TERM" in + xterm-color) color_prompt=yes;; +esac + +# uncomment for a colored prompt, if the terminal has the capability; turned +# off by default to not distract the user: the focus in a terminal window +# should be on the output of commands, not on the prompt +#force_color_prompt=yes + +if [ -n "$force_color_prompt" ]; then + if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then + # We have color support; assume it's compliant with Ecma-48 + # (ISO/IEC-6429). (Lack of such support is extremely rare, and such + # a case would tend to support setf rather than setaf.) + color_prompt=yes + else + color_prompt= + fi +fi + +if [ "$color_prompt" = yes ]; then + PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' +else + PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' +fi +unset color_prompt force_color_prompt + +# If this is an xterm set the title to user@host:dir +case "$TERM" in +xterm*|rxvt*) + PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" + ;; +*) + ;; +esac + +# enable color support of ls and also add handy aliases +if [ -x /usr/bin/dircolors ]; then + test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)" + alias ls='ls --color=auto' + #alias dir='dir --color=auto' + #alias vdir='vdir --color=auto' + + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' +fi + +# some more ls aliases +alias ll='ls -alF' +alias la='ls -A' +alias l='ls -CF' + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' + +# Alias definitions. +# You may want to put all your additions into a separate file like +# ~/.bash_aliases, instead of adding them here directly. +# See /usr/share/doc/bash-doc/examples in the bash-doc package. + +if [ -f ~/.bash_aliases ]; then + . ~/.bash_aliases +fi + +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi +export TERM='xterm-256color' + +export NVM_DIR="/home/vagrant/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm +source ~/.nvm/nvm.sh +nvm use 0.10 +mkdir -p $HOME/go +export GOROOT=/usr/local/go +export PATH=$PATH:$GOROOT/bin +export GOPATH=$HOME/go +export PATH=$PATH:${GOPATH//://bin:}/bin diff --git a/home/.vimrc b/home/.vimrc index 2066ea8..ad70057 100644 --- a/home/.vimrc +++ b/home/.vimrc @@ -1,32 +1,39 @@ " put this line first in ~/.vimrc -set nocompatible | filetype indent plugin on | syn on - -fun! SetupVAM() - let c = get(g:, 'vim_addon_manager', {}) - let g:vim_addon_manager = c - let c.plugin_root_dir = expand('$HOME', 1) . '/.vim/vim-addons' - " most used options you may want to use: - " let c.log_to_buf = 1 - " let c.auto_install = 0 - let &rtp.=(empty(&rtp)?'':',').c.plugin_root_dir.'/vim-addon-manager' - if !isdirectory(c.plugin_root_dir.'/vim-addon-manager/autoload') - execute '!git clone --depth=1 https://github.com/MarcWeber/vim-addon-manager ' - \ shellescape(c.plugin_root_dir.'/vim-addon-manager', 1) - endif - call vam#ActivateAddons([], {'auto_install' : 0}) - call vam#ActivateAddons(['powerline']) -endfun - -let g:vim_addon_manager = {'scms': {'git': {}}} -fun! MyGitCheckout(repository, targetDir) - let a:repository.url = substitute(a:repository.url, '^git://github', 'http://github', '') - return vam#utils#RunShell('git clone --depth=1 $.url $p', a:repository, a:targetDir) -endfun -let g:vim_addon_manager.scms.git.clone=['MyGitCheckout'] - -call SetupVAM() -VAMActivate The_NERD_tree jellybeans vim-addon-commenting github:geekjuice/vim-spec vim-autoformat github:sickill/vim-monokai tlib vim-snippets snipmate matchit.zip github:airblade/vim-gitgutter Tagbar powerline fugitive github:editorconfig/editorconfig-vim github:tpope/vim-cucumber github:digitaltoad/vim-jade github:kristijanhusak/vim-multiple-cursors - +set nocompatible | syn on +filetype off + +" set the runtime path to include Vundle and initialize +set rtp+=~/.vim/bundle/Vundle.vim +call vundle#begin() + +Plugin 'gmarik/Vundle.vim' +Plugin 'scrooloose/nerdtree' +Plugin 'nanotech/jellybeans.vim' +Plugin 'vim-addon-commenting' +Plugin 'geekjuice/vim-spec' +Plugin 'Chiel92/vim-autoformat' +Plugin 'sickill/vim-monokai' +Plugin 'tomtom/tlib_vim' +Plugin 'airblade/vim-gitgutter' +Plugin 'vim-scripts/Tagbar' +Plugin 'tpope/vim-fugitive' +Plugin 'editorconfig/editorconfig-vim' +Plugin 'tpope/vim-cucumber' +Plugin 'digitaltoad/vim-jade' +Plugin 'kristijanhusak/vim-multiple-cursors' +Plugin 'nsf/gocode' +Plugin 'fatih/vim-go' +Plugin 'vim-jp/vim-go-extra' +Plugin 'rjohnsondev/vim-compiler-go' +Plugin 'Shougo/neocomplete' +Plugin 'Shougo/neosnippet' +Plugin 'reaandrew/neosnippet-snippets' +Plugin 'derekwyatt/vim-scala' + +call vundle#end() " required +filetype plugin indent on " required +filetype plugin on +set omnifunc=syntaxcomplete#Complete colorscheme jellybeans @@ -55,18 +62,159 @@ set foldnestmax=10 nnoremap za set foldmethod=indent - syntax on -filetype plugin indent on - noremap :Autoformat nmap :NERDTreeToggle nmap :TagbarToggle -let g:NERDTreeDirArrows=0 - -"map t :call RunCurrentSpecFile() -"map s :call RunNearestSpec() -"map l :call RunLastSpec() -"map a :call RunAllSpecs() - +let g:NERDTreeDirArrows=1 + +let g:EclimCompletionMethod = 'omnifunc' +if !exists('g:neocomplete#force_omni_input_patterns') + let g:neocomplete#force_omni_input_patterns = {} +endif +let g:neocomplete#force_omni_input_patterns.java = '\k\.\k*' +let g:neocomplete#force_omni_input_patterns.scala = '\k\.\k*' + +highlight Normal ctermbg=none +highlight NonText ctermbg=none + +let g:Powerline_symbols = "fancy" +source /home/vagrant/.local/lib/python2.7/site-packages/powerline/bindings/vim/plugin/powerline.vim +set laststatus=2 + +" GOLANG settings + +au FileType go nmap r (go-run) +au FileType go nmap b (go-build) +au FileType go nmap t (go-test) +au FileType go nmap c (go-coverage) +au FileType go nmap ds (go-def-split) +au FileType go nmap dv (go-def-vertical) +au FileType go nmap dt (go-def-tab) +au FileType go nmap gd (go-doc) +au FileType go nmap gv (go-doc-vertical) +au FileType go nmap gb (go-doc-browser) +au FileType go nmap s (go-implements) +au FileType go nmap i (go-info) +au FileType go nmap e (go-rename) + +let g:go_play_open_browser = 0 +let g:go_fmt_fail_silently = 1 +let g:go_fmt_command = "goimports" +let g:go_fmt_autosave = 1 +let g:go_highlight_functions = 1 +let g:go_highlight_methods = 1 +let g:go_highlight_structs = 1 +let g:go_highlight_operators = 1 +let g:go_highlight_build_constraints = 1 + +" Neo Complete +" +" + +"Note: This option must set it in .vimrc(_vimrc). NOT IN .gvimrc(_gvimrc)! +" Disable AutoComplPop. +let g:acp_enableAtStartup = 0 +" Use neocomplete. +let g:neocomplete#enable_at_startup = 1 +" Use smartcase. +let g:neocomplete#enable_smart_case = 1 +" Set minimum syntax keyword length. +let g:neocomplete#sources#syntax#min_keyword_length = 3 +let g:neocomplete#lock_buffer_name_pattern = '\*ku\*' + +" Define dictionary. +let g:neocomplete#sources#dictionary#dictionaries = { + \ 'default' : '', + \ 'vimshell' : $HOME.'/.vimshell_hist', + \ 'scheme' : $HOME.'/.gosh_completions' + \ } + +" Define keyword. +if !exists('g:neocomplete#keyword_patterns') + let g:neocomplete#keyword_patterns = {} +endif +let g:neocomplete#keyword_patterns['default'] = '\h\w*' + +" Plugin key-mappings. +inoremap neocomplete#undo_completion() +inoremap neocomplete#complete_common_string() + +" Recommended key-mappings. +" : close popup and save indent. +inoremap =my_cr_function() +function! s:my_cr_function() + return neocomplete#close_popup() . "\" + " For no inserting key. + "return pumvisible() ? neocomplete#close_popup() : "\" +endfunction +" : completion. +inoremap pumvisible() ? "\" : "\" +" , : close popup and delete backword char. +inoremap neocomplete#smart_close_popup()."\" +inoremap neocomplete#smart_close_popup()."\" +inoremap neocomplete#close_popup() +inoremap neocomplete#cancel_popup() +" Close popup by . +"inoremap pumvisible() ? neocomplete#close_popup() : "\" + +" For cursor moving in insert mode(Not recommended) +"inoremap neocomplete#close_popup() . "\" +"inoremap neocomplete#close_popup() . "\" +"inoremap neocomplete#close_popup() . "\" +"inoremap neocomplete#close_popup() . "\" +" Or set this. +"let g:neocomplete#enable_cursor_hold_i = 1 +" Or set this. +"let g:neocomplete#enable_insert_char_pre = 1 + +" AutoComplPop like behavior. +"let g:neocomplete#enable_auto_select = 1 + +" Shell like behavior(not recommended). +"set completeopt+=longest +"let g:neocomplete#enable_auto_select = 1 +"let g:neocomplete#disable_auto_complete = 1 +"inoremap pumvisible() ? "\" : "\\" + +" Enable omni completion. +autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS +autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags +autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS +autocmd FileType python setlocal omnifunc=pythoncomplete#Complete +autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags + +" Enable heavy omni completion. +if !exists('g:neocomplete#sources#omni#input_patterns') + let g:neocomplete#sources#omni#input_patterns = {} +endif +"let g:neocomplete#sources#omni#input_patterns.php = '[^. \t]->\h\w*\|\h\w*::' +"let g:neocomplete#sources#omni#input_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)' +"let g:neocomplete#sources#omni#input_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::' + +" For perlomni.vim setting. +" https://github.com/c9s/perlomni.vim +let g:neocomplete#sources#omni#input_patterns.perl = '\h\w*->\h\w*\|\h\w*::' + + +" Neo-snippets +" +" +" Plugin key-mappings. +imap (neosnippet_expand_or_jump) +smap (neosnippet_expand_or_jump) +xmap (neosnippet_expand_target) + +" SuperTab like snippets behavior. +imap neosnippet#expandable_or_jumpable() ? +\ "\(neosnippet_expand_or_jump)" +\: pumvisible() ? "\" : "\" +smap neosnippet#expandable_or_jumpable() ? +\ "\(neosnippet_expand_or_jump)" +\: "\" + +" For snippet_complete marker. +if has('conceal') + set conceallevel=2 concealcursor=niv +endif