diff --git a/.gitattributes b/.gitattributes
index 486a2325..a647db34 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1 +1,3 @@
+*.sh -crlf
+
*.zip filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitconfig_includes.common b/.gitconfig_includes.common
index bfc7767e..5dd2b45e 100644
--- a/.gitconfig_includes.common
+++ b/.gitconfig_includes.common
@@ -1,29 +1,29 @@
-[user]
- name = Cyryl PÅ‚otnicki-Chudyk
- email = cyplo@cyplo.net
-[color]
- ui = true
-[help]
- autocorrect = 1
-[push]
- default = simple
-[core]
- pager = cat
-[alias]
- tree = log --show-signature --color --decorate --date=short --all --graph -n 9
- head = log HEAD -n1
-[core]
- autocrlf = false
-[diff]
- tool = vimdiff
-[difftool]
- prompt = false
-[difftool "vimdiff"]
- cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE '+syntax off'
-[merge]
- tool = kdiff3
-[mergetool]
- keepBackup = false
-[pager]
- diff = diff-so-fancy | less --tabs=1,5 -RFX
- show = diff-so-fancy | less --tabs=1,5 -RFX
+[user]
+ name = Cyryl PÅ‚otnicki
+ email = cyplo@cyplo.net
+[color]
+ ui = true
+[help]
+ autocorrect = 1
+[push]
+ default = simple
+[core]
+ pager = cat
+[alias]
+ tree = log --show-signature --color --decorate --date=short --all --graph -n 8
+ head = log HEAD -n1
+[core]
+ autocrlf = false
+[diff]
+ tool = vimdiff
+[difftool]
+ prompt = false
+[difftool "vimdiff"]
+ cmd = vim -f '+next' '+execute \"DirDiff\" argv(0) argv(1)' $LOCAL $REMOTE '+syntax off'
+[merge]
+ tool = kdiff3
+[mergetool]
+ keepBackup = false
+[pager]
+ diff = diff-so-fancy | less --tabs=1,5 -RFX
+ show = diff-so-fancy | less --tabs=1,5 -RFX
diff --git a/.gitconfig_includes.cygwin b/.gitconfig_includes.cygwin
index cb3e6e39..2aa43a69 100644
--- a/.gitconfig_includes.cygwin
+++ b/.gitconfig_includes.cygwin
@@ -1,3 +1,9 @@
+[difftool "winmerge"]
+ cmd = 'C:/Program Files (x86)/WinMerge/WinMergeU.exe' "$(cygpath -wla $LOCAL)" "$(cygpath -wla $REMOTE)"
+ trustExitCode = false
+[difftool "p4merge"]
+ cmd = 'C:/Program Files/Perforce/p4merge.exe' "$(cygpath -wla $LOCAL)" "$(cygpath -wla $REMOTE)"
+ trustExitCode = false
[mergetool "p4merge"]
cmd = 'C:/Program Files/Perforce/p4merge.exe' "$(cygpath -wla $BASE)" "$(cygpath -wla $LOCAL)" "$(cygpath -wla $REMOTE)" "$(cygpath -wla $MERGED)"
trustExitCode = false
diff --git a/.gitignore b/.gitignore
index d2907491..d3ddc045 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
.vim/undo/
.vim/.netrwhist
-
+.vim/bundle/*
+!.vim/bundle/Vundle.vim
diff --git a/.gitmodules b/.gitmodules
index 7799fb56..08084abd 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,70 +1,15 @@
-[submodule ".vim/bundle/vim-fugitive"]
- path = .vim/bundle/vim-fugitive
- url = http://github.com/tpope/vim-fugitive
-[submodule ".vim/bundle/vim-markdown"]
- path = .vim/bundle/vim-markdown
- url = https://github.com/plasticboy/vim-markdown.git
-[submodule ".vim/bundle/vim-powerline"]
- path = .vim/bundle/vim-powerline
- url = https://github.com/Lokaltog/vim-powerline.git
-[submodule ".vim/bundle/vim-syntastic"]
- path = .vim/bundle/vim-syntastic
- url = https://github.com/scrooloose/syntastic
-[submodule "cygwin/mintty-colors-solarized"]
- path = cygwin/mintty-colors-solarized
- url = https://github.com/mavnn/mintty-colors-solarized.git
-[submodule ".vim/bundle/salt-vim"]
- path = .vim/bundle/salt-vim
- url = https://github.com/saltstack/salt-vim.git
-[submodule ".vim/bundle/vim-airline"]
- path = .vim/bundle/vim-airline
- url = https://github.com/bling/vim-airline
-[submodule ".vim/bundle/vim-gitgutter"]
- path = .vim/bundle/vim-gitgutter
- url = https://github.com/airblade/vim-gitgutter
-[submodule ".vim/bundle/vim-colors-solarized"]
- path = .vim/bundle/vim-colors-solarized
- url = https://github.com/cyplo/vim-colors-solarized.git
-
[submodule ".oh-my-zsh"]
path = .oh-my-zsh
url = git://github.com/robbyrussell/oh-my-zsh.git
-[submodule ".vim/bundle/nerdtree"]
- path = .vim/bundle/nerdtree
- url = https://github.com/scrooloose/nerdtree
-[submodule ".vim/bundle/vim-ctrlp"]
- path = .vim/bundle/vim-ctrlp
- url = https://github.com/kien/ctrlp.vim.git
[submodule "tools/icdiff.git"]
path = tools/icdiff.git
url = https://github.com/jeffkaufman/icdiff.git
-[submodule ".vim/bundle/splice"]
- path = .vim/bundle/splice
- url = https://github.com/sjl/splice.vim.git
-[submodule ".vim/bundle/vim-dirdiff"]
- path = .vim/bundle/vim-dirdiff
- url = git://github.com/will133/vim-dirdiff
[submodule "tools/subuser"]
path = tools/subuser
url = https://github.com/subuser-security/subuser
[submodule ".oh-my-zsh-plugins/zsh-syntax-highlighting"]
path = .oh-my-zsh-plugins/zsh-syntax-highlighting
url = git://github.com/zsh-users/zsh-syntax-highlighting.git
-[submodule ".vim/bundle/rust.vim"]
- path = .vim/bundle/rust.vim
- url = https://github.com/rust-lang/rust.vim.git
-[submodule ".vim/bundle/racer"]
- path = .vim/bundle/racer
- url = https://github.com/phildawes/racer.git
-[submodule ".vim/bundle/YouCompleteMe"]
- path = .vim/bundle/YouCompleteMe
- url = https://github.com/Valloric/YouCompleteMe.git
-[submodule ".vim/bundle/ack.vim"]
- path = .vim/bundle/ack.vim
- url = https://github.com/mileszs/ack.vim.git
-[submodule ".vim/bundle/vim-cargo"]
- path = .vim/bundle/vim-cargo
- url = https://github.com/timonv/vim-cargo.git
-[submodule ".vim/bundle/vim-dispatch"]
- path = .vim/bundle/vim-dispatch
- url = https://github.com/tpope/vim-dispatch.git
+[submodule ".vim/bundle/Vundle.vim"]
+ path = .vim/bundle/Vundle.vim
+ url = https://github.com/VundleVim/Vundle.vim.git
diff --git a/.kdiff3rc b/.kdiff3rc
index f16aadf1..534772a0 100644
--- a/.kdiff3rc
+++ b/.kdiff3rc
@@ -95,8 +95,9 @@ WordWrap=false
[MainWindow]
Height 768=769
Height 900=901
+Height 975=976
Height 985=986
-State=AAAA/wAAAAD9AAAAAAAAB4AAAANGAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAEAAAAWAG0AYQBpAG4AVABvAG8AbABCAGEAcgEAAAAA/////wAAAAAAAAAA
+State=AAAA/wAAAAD9AAAAAAAAB4AAAANTAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAEAAAAWAG0AYQBpAG4AVABvAG8AbABCAGEAcgEAAAAA/////wAAAAAAAAAA
ToolBarsMovable=Disabled
Width 1366=1367
Width 1440=1441
diff --git a/.oh-my-zsh b/.oh-my-zsh
index 83cf8dc1..774c4eca 160000
--- a/.oh-my-zsh
+++ b/.oh-my-zsh
@@ -1 +1 @@
-Subproject commit 83cf8dc16f51babbb0193c5b97e568739c1f40de
+Subproject commit 774c4eca6f166be554baf33ff48de9e90e98f16a
diff --git a/.setenv b/.setenv
index c5b25623..706c22bb 100644
--- a/.setenv
+++ b/.setenv
@@ -11,3 +11,5 @@ export PATH=$HOME/.cargo/bin:$PATH
export RUST_SRC_PATH=$HOME/dev/rust/src
export EDITOR="vim"
export KEYTIMEOUT=1
+export VAGRANT_DEFAULT_PROVIDER=virtualbox
+
diff --git a/.travis.yml b/.travis.yml
index b01ec991..5e665512 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,19 @@
-language: bash
-script: ./travis/configure_fresh_system
+language:
+ - bash
+
+script:
+ - ./test
+
+env:
+ - DETECTED_OS=fedora:24
+ - DETECTED_OS=debian:jessie
+ - DETECTED_OS=ubuntu:trusty
+ - DETECTED_OS=ubuntu:xenial
+
+sudo: required
+
+services:
+ - docker
git:
submodules: false
+
diff --git a/.vim/autoload/pathogen.vim b/.vim/autoload/pathogen.vim
deleted file mode 100644
index 7b89ccaf..00000000
--- a/.vim/autoload/pathogen.vim
+++ /dev/null
@@ -1,326 +0,0 @@
-" pathogen.vim - path option manipulation
-" Maintainer: Tim Pope
-" Version: 2.2
-
-" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
-"
-" For management of individually installed plugins in ~/.vim/bundle (or
-" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your
-" .vimrc is the only other setup necessary.
-"
-" The API is documented inline below. For maximum ease of reading,
-" :set foldmethod=marker
-
-if exists("g:loaded_pathogen") || &cp
- finish
-endif
-let g:loaded_pathogen = 1
-
-function! s:warn(msg)
- echohl WarningMsg
- echomsg a:msg
- echohl NONE
-endfunction
-
-" Point of entry for basic default usage. Give a relative path to invoke
-" pathogen#incubate() (defaults to "bundle/{}"), or an absolute path to invoke
-" pathogen#surround(). For backwards compatibility purposes, a full path that
-" does not end in {} or * is given to pathogen#runtime_prepend_subdirectories()
-" instead.
-function! pathogen#infect(...) abort " {{{1
- for path in a:0 ? reverse(copy(a:000)) : ['bundle/{}']
- if path =~# '^[^\\/]\+$'
- call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
- call pathogen#incubate(path . '/{}')
- elseif path =~# '^[^\\/]\+[\\/]\%({}\|\*\)$'
- call pathogen#incubate(path)
- elseif path =~# '[\\/]\%({}\|\*\)$'
- call pathogen#surround(path)
- else
- call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')')
- call pathogen#surround(path . '/{}')
- endif
- endfor
- call pathogen#cycle_filetype()
- return ''
-endfunction " }}}1
-
-" Split a path into a list.
-function! pathogen#split(path) abort " {{{1
- if type(a:path) == type([]) | return a:path | endif
- let split = split(a:path,'\\\@"),'!isdirectory(v:val)')) && (!filereadable(dir.sep.'doc'.sep.'tags') || filewritable(dir.sep.'doc'.sep.'tags'))
- silent! execute 'helptags' pathogen#fnameescape(dir.'/doc')
- endif
- endfor
- endfor
-endfunction " }}}1
-
-command! -bar Helptags :call pathogen#helptags()
-
-" Execute the given command. This is basically a backdoor for --remote-expr.
-function! pathogen#execute(...) abort " {{{1
- for command in a:000
- execute command
- endfor
- return ''
-endfunction " }}}1
-
-" Like findfile(), but hardcoded to use the runtimepath.
-function! pathogen#runtime_findfile(file,count) abort "{{{1
- let rtp = pathogen#join(1,pathogen#split(&rtp))
- let file = findfile(a:file,rtp,a:count)
- if file ==# ''
- return ''
- else
- return fnamemodify(file,':p')
- endif
-endfunction " }}}1
-
-" Backport of fnameescape().
-function! pathogen#fnameescape(string) abort " {{{1
- if exists('*fnameescape')
- return fnameescape(a:string)
- elseif a:string ==# '-'
- return '\-'
- else
- return substitute(escape(a:string," \t\n*?[{`$\\%#'\"|!<"),'^[+>]','\\&','')
- endif
-endfunction " }}}1
-
-if exists(':Vedit')
- finish
-endif
-
-let s:vopen_warning = 0
-
-function! s:find(count,cmd,file,lcd) " {{{1
- let rtp = pathogen#join(1,pathogen#split(&runtimepath))
- let file = pathogen#runtime_findfile(a:file,a:count)
- if file ==# ''
- return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'"
- endif
- if !s:vopen_warning
- let s:vopen_warning = 1
- let warning = '|echohl WarningMsg|echo "Install scriptease.vim to continue using :V'.a:cmd.'"|echohl NONE'
- else
- let warning = ''
- endif
- if a:lcd
- let path = file[0:-strlen(a:file)-2]
- execute 'lcd `=path`'
- return a:cmd.' '.pathogen#fnameescape(a:file) . warning
- else
- return a:cmd.' '.pathogen#fnameescape(file) . warning
- endif
-endfunction " }}}1
-
-function! s:Findcomplete(A,L,P) " {{{1
- let sep = pathogen#separator()
- let cheats = {
- \'a': 'autoload',
- \'d': 'doc',
- \'f': 'ftplugin',
- \'i': 'indent',
- \'p': 'plugin',
- \'s': 'syntax'}
- if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0])
- let request = cheats[a:A[0]].a:A[1:-1]
- else
- let request = a:A
- endif
- let pattern = substitute(request,'/\|\'.sep,'*'.sep,'g').'*'
- let found = {}
- for path in pathogen#split(&runtimepath)
- let path = expand(path, ':p')
- let matches = split(glob(path.sep.pattern),"\n")
- call map(matches,'isdirectory(v:val) ? v:val.sep : v:val')
- call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]')
- for match in matches
- let found[match] = 1
- endfor
- endfor
- return sort(keys(found))
-endfunction " }}}1
-
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve :execute s:find(,'edit',,0)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(,'edit',,0)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(,'edit',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(,'split',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(,'vsplit',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(,'tabedit',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(,'pedit',,1)
-command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(,'read',,1)
-
-" vim:set et sw=2:
diff --git a/.vim/bundle/Vundle.vim b/.vim/bundle/Vundle.vim
new file mode 160000
index 00000000..49847675
--- /dev/null
+++ b/.vim/bundle/Vundle.vim
@@ -0,0 +1 @@
+Subproject commit 4984767509e3d05ca051e253c8a8b37de784be45
diff --git a/.vim/bundle/YouCompleteMe b/.vim/bundle/YouCompleteMe
deleted file mode 160000
index 94ec3ed9..00000000
--- a/.vim/bundle/YouCompleteMe
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 94ec3ed902e4e55b1766232d3b0e7d602bc2c472
diff --git a/.vim/bundle/ack.vim b/.vim/bundle/ack.vim
deleted file mode 160000
index 0a7d28bf..00000000
--- a/.vim/bundle/ack.vim
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0a7d28bfb130696f73d122cac99d8903e066c896
diff --git a/.vim/bundle/nerdtree b/.vim/bundle/nerdtree
deleted file mode 160000
index f8fd2ecc..00000000
--- a/.vim/bundle/nerdtree
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit f8fd2ecce20f5005e6313ce57d6d2a209890c946
diff --git a/.vim/bundle/racer b/.vim/bundle/racer
deleted file mode 160000
index 063094b9..00000000
--- a/.vim/bundle/racer
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 063094b977ce6c415f91e939626f334982c0a0a3
diff --git a/.vim/bundle/rust.vim b/.vim/bundle/rust.vim
deleted file mode 160000
index 115d321d..00000000
--- a/.vim/bundle/rust.vim
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 115d321d383eb96d438466c56cc871fcc1bd0faa
diff --git a/.vim/bundle/salt-vim b/.vim/bundle/salt-vim
deleted file mode 160000
index bdfd0a55..00000000
--- a/.vim/bundle/salt-vim
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit bdfd0a558898df77aa8fc4c7b142062fdee3b2f7
diff --git a/.vim/bundle/splice b/.vim/bundle/splice
deleted file mode 160000
index 4d322d82..00000000
--- a/.vim/bundle/splice
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 4d322d823563f6fd2d72c129b1e99f5a98060fa8
diff --git a/.vim/bundle/vim-airline b/.vim/bundle/vim-airline
deleted file mode 160000
index 246c2175..00000000
--- a/.vim/bundle/vim-airline
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 246c217562dfd8541ee0d64600a628daa4195dd2
diff --git a/.vim/bundle/vim-cargo b/.vim/bundle/vim-cargo
deleted file mode 160000
index fbf907c3..00000000
--- a/.vim/bundle/vim-cargo
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit fbf907c353eaafdf4a270f66c1bb6aad767d874f
diff --git a/.vim/bundle/vim-colors-solarized b/.vim/bundle/vim-colors-solarized
deleted file mode 160000
index b1f234b8..00000000
--- a/.vim/bundle/vim-colors-solarized
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b1f234b8aa879a8276fc2c73c99ec68d7635de96
diff --git a/.vim/bundle/vim-ctrlp b/.vim/bundle/vim-ctrlp
deleted file mode 160000
index b5d3fe66..00000000
--- a/.vim/bundle/vim-ctrlp
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b5d3fe66a58a13d2ff8b6391f4387608496a030f
diff --git a/.vim/bundle/vim-dirdiff b/.vim/bundle/vim-dirdiff
deleted file mode 160000
index 779185c3..00000000
--- a/.vim/bundle/vim-dirdiff
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 779185c33cccada094f59aa1345ffe19d2e581e4
diff --git a/.vim/bundle/vim-dispatch b/.vim/bundle/vim-dispatch
deleted file mode 160000
index 5f5c22c9..00000000
--- a/.vim/bundle/vim-dispatch
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5f5c22c9ed48ee64fc5f02ac3acd543b97732fe8
diff --git a/.vim/bundle/vim-fugitive b/.vim/bundle/vim-fugitive
deleted file mode 160000
index 0374322b..00000000
--- a/.vim/bundle/vim-fugitive
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0374322ba5d85ae44dd9dc44ef31ca015a59097e
diff --git a/.vim/bundle/vim-gitgutter b/.vim/bundle/vim-gitgutter
deleted file mode 160000
index 39f01190..00000000
--- a/.vim/bundle/vim-gitgutter
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 39f011909620e0c7ae555efdace20c3963ac88af
diff --git a/.vim/bundle/vim-markdown b/.vim/bundle/vim-markdown
deleted file mode 160000
index 74c9c607..00000000
--- a/.vim/bundle/vim-markdown
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 74c9c60796ef10284ba26aaf38ffb39beae5f62c
diff --git a/.vim/bundle/vim-syntastic b/.vim/bundle/vim-syntastic
deleted file mode 160000
index 64cce208..00000000
--- a/.vim/bundle/vim-syntastic
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 64cce208388c10debd5b150de08d9be371bd0e86
diff --git a/.vimrc b/.vimrc
index 7284ed47..6046b727 100755
--- a/.vimrc
+++ b/.vimrc
@@ -20,6 +20,9 @@ nmap t :wa :Make test
" navigate buffers by ctrl-b
nmap :bprevious
+" YCM
+nnoremap g :YcmCompleter GoTo
+
nnoremap ; :
" no cheating !
@@ -45,16 +48,58 @@ set shiftwidth=4
set expandtab
" plugins
-execute pathogen#infect()
+
+filetype off
+
+set rtp+=~/.vim/bundle/Vundle.vim
+call vundle#begin()
+
+Plugin 'VundleVim/Vundle.vim'
+
+Plugin 'https://github.com/cyplo/vim-colors-solarized.git'
+Plugin 'mileszs/ack.vim'
+Plugin 'scrooloose/nerdtree.git'
+Plugin 'scrooloose/syntastic.git'
+Plugin 'wting/rust.vim'
+Plugin 'sjl/splice.vim.git'
+Plugin 'vim-airline/vim-airline'
+Plugin 'vim-airline/vim-airline-themes'
+Plugin 'timonv/vim-cargo'
+Plugin 'kien/ctrlp.vim'
+Plugin 'will133/vim-dirdiff'
+Plugin 'tpope/vim-dispatch.git'
+Plugin 'tpope/vim-fugitive.git'
+Plugin 'tpope/vim-sensible'
+Plugin 'tpope/vim-cucumber'
+Plugin 'airblade/vim-gitgutter.git'
+Plugin 'godlygeek/tabular'
+Plugin 'plasticboy/vim-markdown'
+Plugin 'Shougo/neocomplete.vim'
+
+call vundle#end()
filetype plugin indent on
-" colours [need pathogen]
+" line ending
+set fileformats=unix,dos
+
+" colours
set t_Co=256
syntax enable
set background=dark
highlight clear SignColumn
colorscheme solarized
+" plugins: neocomplete
+let g:neocomplete#enable_at_startup = 1
+let g:neocomplete#enable_smart_case = 1
+"" : close popup and save indent.
+inoremap =my_cr_function()
+function! s:my_cr_function()
+ return (pumvisible() ? "\" : "" ) . "\"
+endfunction
+"" : completion.
+inoremap pumvisible() ? "\" : "\"
+
" plugins: airline
let g:bufferline_echo = 0
let g:airline_powerline_fonts = 1
diff --git a/.zshrc b/.zshrc
index 924388c3..860a8d40 100644
--- a/.zshrc
+++ b/.zshrc
@@ -45,7 +45,11 @@ else
alias tscp="torsocks scp"
fi
+alias benice="ionice -c3 nice -n20"
+
# env vars
source ~/.setenv
+
+export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
diff --git a/README.md b/README.md
index f30d716e..b26546c8 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,5 @@
[![Build Status](https://travis-ci.org/cyplo/dotfiles.svg?branch=master)](https://travis-ci.org/cyplo/dotfiles)
+[![Build status](https://ci.appveyor.com/api/projects/status/s6i314lyti4o1ny1/branch/master?svg=true)](https://ci.appveyor.com/project/cyplo/dotfiles/branch/master)
My common dotfiles for Linux, Mac and Cygwin
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 00000000..58c4c013
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,2 @@
+install: powershell -NoProfile -ExecutionPolicy Bypass -Command "windows_cygwin\bootstrap.ps1"
+build_script: windows_cygwin\build.bat
diff --git a/bunsen/configure_fresh_system b/bunsen/configure_fresh_system
deleted file mode 100755
index bc9cef84..00000000
--- a/bunsen/configure_fresh_system
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-sudo apt-get update
-sudo apt-get -y upgrade
-sudo apt-get -y install aptitude meld whois zsh tmux atop aria2 curl pv gajim tor torsocks nodejs icedove icedove-enigmail icedove-sogo-connector gajim lm-sensors freecad python3-pip meld whois curl pv tor torsocks nodejs npm terminator gsmartcontrol python-pip mercurial redshift gtk-redshift cmake intltool gparted wine solaar glances silversearcher-ag dkms linux-kernel-headers golang keepass2 libncurses5-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev ruby-dev git retext kdiff3
-
-sudo systemctl enable tor
-sudo systemctl start tor
-
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-DIR="$DIR/../"
-
-# install vim from sources
-VIM_BUILD_DIR=/tmp
-cd "$VIM_BUILD_DIR"
-git clone https://github.com/vim/vim.git
-cd vim
-./configure --with-features=huge \
- --enable-multibyte \
- --enable-rubyinterp \
- --enable-pythoninterp \
- --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu \
- --enable-perlinterp \
- --enable-luainterp \
- --enable-gui=gtk2 --enable-cscope --prefix=/usr
-make -j2
-sudo make install
-cd
-rm -fvr "$VIM_BUILD_DIR/vim"
-
-DIR="$DIR" $DIR/common/configure_fresh_system
diff --git a/common/configure_fresh_system b/common/configure_fresh_system
index a475bb7d..698a54ae 100755
--- a/common/configure_fresh_system
+++ b/common/configure_fresh_system
@@ -1,9 +1,16 @@
#!/bin/bash
+SUDO=""
+if [[ -z $NOSUDO ]]; then
+ SUDO="sudo"
+fi
+
+echo "using '$SUDO' as sudo"
+
set -e
echo
echo "configuring settings common among OSes"
-sudo true
+$SUDO true
#zsh
if [[ -z $DONT_CHANGE_SHELL ]]; then
@@ -14,7 +21,11 @@ fi
CURL="curl -sSf"
jobs_count=`nproc`
-#submodules
+if [[ -z $DIR ]]; then
+ echo "please set DIR"
+ exit 1
+fi
+
DIR=`realpath $DIR`
echo "using $DIR as the top level directory"
cd $DIR
@@ -44,14 +55,10 @@ ln -vfs "$DIR/.config/redshift.conf" ~/.config/redshift.conf
source ~/.setenv
-cd "$DIR/.vim/bundle/YouCompleteMe/"
-git submodule update --init --recursive
-python install.py --clang-completer
-
# symlink 'nodejs' as node on some systems
# will replace symlink if it exists, but won't replace regular file
if [[ ! -f /usr/bin/node ]]; then
- sudo ln -vfs /usr/bin/nodejs /usr/bin/node
+ $SUDO ln -vfs /usr/bin/nodejs /usr/bin/node
fi
# tools
@@ -67,59 +74,64 @@ mkdir -p ~/.fonts
cp -rv "$DIR/fonts" ~/.fonts
set +e
fc-cache -rv
-sudo fc-cache -rv
+$SUDO fc-cache -rv
set -e
-#rust
-echo "installing rust"
-RUSTUP_TEMP="/tmp/blastoff.sh"
-$CURL https://sh.rustup.rs > "$RUSTUP_TEMP"
-chmod a+x "$RUSTUP_TEMP"
-"$RUSTUP_TEMP" -y
-rm -f "$RUSTUP_TEMP"
-rustup update
-rustup default stable
-export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
-cd "$DIR/../"
-echo "getting rust sources..."
-if [[ ! -d rust ]]; then
- git clone https://github.com/rust-lang/rust.git
-else
- cd rust
- git pull
+if [[ -z $NORUST ]]; then
+ #rust
+ echo "installing rust"
+ RUSTUP_TEMP="/tmp/blastoff.sh"
+ $CURL https://sh.rustup.rs > "$RUSTUP_TEMP"
+ chmod a+x "$RUSTUP_TEMP"
+ "$RUSTUP_TEMP" -y
+ rm -f "$RUSTUP_TEMP"
+ rustup update
+ rustup default stable
+ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
+ cd "$DIR/../"
+ echo "getting rust sources..."
+ if [[ ! -d rust ]]; then
+ git clone https://github.com/rust-lang/rust.git --recursive
+ else
+ cd rust
+ git pull
+ git submodule update --init --recursive
+ fi
+ cargo install -j $jobs_count -f rustfmt
fi
-set +e
-cargo uninstall rustfmt
-cargo uninstall racer
-set -e
-cargo install -j $jobs_count rustfmt
-cargo install -j $jobs_count racer
+if [[ -z $NORUBY ]]; then
+ gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
+ curl -sSL https://get.rvm.io | bash -s stable --ruby
+fi
-# rvm
-gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
-$CURL -L https://get.rvm.io | bash -s stable
-source $HOME/.rvm/scripts/rvm
-rvm install ruby
+if [[ -z $NOVIM ]]; then
+ echo "\n" | vim +PluginInstall +qa
+fi
-# go
-export GOPATH="$HOME/go"
-mkdir -p "$GOPATH"
+if [[ -z $NO_GO ]]; then
+ export GOPATH="$HOME/go"
+ mkdir -p "$GOPATH"
-# excercism
-go get -u github.com/exercism/cli/exercism
+ # excercism
+ go get -u github.com/exercism/cli/exercism
+fi
# talks: reveal-md
-sudo npm install -g reveal-md
-sudo npm install -g diff-so-fancy
+$SUDO npm install -g reveal-md
+$SUDO npm install -g diff-so-fancy
# vdir syncer
echo "installing vdirsyncer"
-sudo pip install vdirsyncer
+$SUDO pip install vdirsyncer
+
+if [[ -z $USER ]]; then
+ USER=`whoami`
+fi
# normalize npm permissions
mkdir -p $HOME/.npm
-sudo chown $USER $HOME/.npm -R
+$SUDO chown $USER $HOME/.npm -R
echo
echo "now go ahead and restart"
diff --git a/cygwin/mintty-colors-solarized b/cygwin/mintty-colors-solarized
deleted file mode 160000
index 11d7c05b..00000000
--- a/cygwin/mintty-colors-solarized
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 11d7c05bf97b6c4ae6985fa94b16f6c4e7a61b94
diff --git a/debian/configure_fresh_system b/debian/configure_fresh_system
new file mode 100755
index 00000000..23023f61
--- /dev/null
+++ b/debian/configure_fresh_system
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+set -e
+
+sudo apt-get update
+sudo apt-get -y upgrade
+install_packages="sudo apt-get -y --fix-missing install aptitude meld whois zsh tmux atop aria2 curl pv gajim tor torsocks nodejs icedove icedove-enigmail icedove-sogo-connector gajim lm-sensors freecad python3-pip meld whois curl pv tor torsocks nodejs npm terminator gsmartcontrol python-pip mercurial redshift gtk-redshift cmake intltool gparted wine solaar glances silversearcher-ag dkms linux-kernel-headers golang keepass2 libncurses5-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libatk1.0-dev libbonoboui2-dev libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev ruby-dev git retext kdiff3"
+
+set +e
+for i in `seq 1 3`; do
+ eval $install_packages
+done
+
+set -e
+eval $install_packages
+
+if [[ -z $NO_SYSTEMCTL ]]; then
+ sudo systemctl enable tor
+ sudo systemctl start tor
+fi
+
+# mono
+sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
+echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
+echo "deb http://download.mono-project.com/repo/debian wheezy-libjpeg62-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
+sudo apt-get update
+sudo apt-get -y install mono-devel mono-complete
+# install vim from sources
+VIM_BUILD_DIR=/tmp
+cd "$VIM_BUILD_DIR"
+git clone https://github.com/vim/vim.git
+cd vim
+./configure --with-features=huge \
+ --enable-multibyte \
+ --enable-rubyinterp \
+ --enable-pythoninterp \
+ --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu \
+ --enable-perlinterp \
+ --enable-luainterp \
+ --enable-gui=gtk2 --enable-cscope --prefix=/usr
+make -j2
+sudo make install
+cd
+rm -fvr "$VIM_BUILD_DIR/vim"
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+DIR="$DIR/../"
+DIR="$DIR" $DIR/common/configure_fresh_system
+
+
diff --git a/debian/install_debian.sh b/debian/install_debian.sh
deleted file mode 100755
index 1b68b7bc..00000000
--- a/debian/install_debian.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-sudo apt-get update
-sudo apt-get dist-upgrade
-sudo apt-get install meld whois zsh tmux vim atop aria2 curl pv gajim tor torsocks nodejs
-
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-$DIR/install_common.sh
-
diff --git a/debian/test_insider b/debian/test_insider
new file mode 100755
index 00000000..e1bee875
--- /dev/null
+++ b/debian/test_insider
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -e
+
+export DEBIAN_FRONTEND=noninteractive
+export DONT_CHANGE_SHELL=true
+export NO_SYSTEMCTL=true
+
+echo "APT::Acquire::Retries=16;" >> /etc/apt/apt.conf.d/99_retries
+
+apt-get update
+apt-get install sudo
+cd $HOME
+
+mkdir -p dev/
+cp -rv temp/dotfiles dev/
+
+./dev/dotfiles/debian/configure_fresh_system
+
diff --git a/fedora/configure_fresh_system b/fedora/configure_fresh_system
index dfbeed50..4b6ddb39 100755
--- a/fedora/configure_fresh_system
+++ b/fedora/configure_fresh_system
@@ -1,19 +1,33 @@
#!/bin/bash
+
set -e
#software and shell
sudo dnf -y upgrade --best --allowerasing
-sudo dnf -y --best --allowerasing install vim tmux atop zsh thunderbird thunderbird-enigmail thunderbird-lightning firefox aria2 gajim lm_sensors freecad python3-pip qt5-qtbase-devel qt5-qtwebkit-devel meld whois curl pv tor torsocks nodejs terminator gsmartcontrol python-pip mercurial python-devel libxslt-devel libjpeg-turbo-devel conky conky-manager redshift redshift-gtk cmake gtk2-devel intltool gparted wine solaar glances the_silver_searcher dkms kernel-devel gimp transmission-gtk util-linux-user
+sudo dnf -y --best --allowerasing install vim tmux atop zsh thunderbird thunderbird-enigmail thunderbird-lightning firefox aria2 gajim lm_sensors freecad python3-pip qt5-qtbase-devel qt5-qtwebkit-devel meld whois curl pv tor torsocks nodejs npm terminator gsmartcontrol python-pip mercurial python-devel libxslt-devel libjpeg-turbo-devel conky conky-manager redshift redshift-gtk cmake gtk2-devel intltool gparted wine solaar glances the_silver_searcher dkms kernel-devel gimp transmission-gtk git xz util-linux-user powertop dnf-automatic kdiff3 yum-utils util-linux-user
FEDORA_VERSION=`rpm -E %fedora`
sudo dnf -y install http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$FEDORA_VERSION.noarch.rpm
sudo dnf -y install http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$FEDORA_VERSION.noarch.rpm
-sudo dnf -y --best --allowerasing install vlc splix gutenprint-cups cups-bjnp keepass mplayer golang
+sudo dnf -y --best --allowerasing install vlc splix gutenprint-cups cups-bjnp mono-devel keepass mplayer golang ncurses-compat-libs kicad retext
sudo dnf -y groupinstall "C Development Tools and Libraries"
-sudo systemctl enable tor
-sudo systemctl start tor
-
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+sudo cp -v /etc/dnf/automatic.conf /etc/dnf/automatic.conf.bak
+sudo cp -v $DIR/etc/dnf/automatic.conf /etc/dnf/automatic.conf
+set +e
+sudo diff /etc/dnf/automatic.conf.bak /etc/dnf/automatic.conf
+set -e
+
+if [[ -z $NO_SYSTEMCTL ]]; then
+ sudo systemctl enable dnf-automatic.timer
+ sudo systemctl start dnf-automatic.timer
+ sudo systemctl list-timers "*dnf-*"
+
+ sudo systemctl enable tor
+ sudo systemctl start tor
+fi
+
DIR="$DIR/../"
DIR="$DIR" $DIR/common/configure_fresh_system
diff --git a/fedora/etc/dnf/automatic.conf b/fedora/etc/dnf/automatic.conf
new file mode 100644
index 00000000..d5bed173
--- /dev/null
+++ b/fedora/etc/dnf/automatic.conf
@@ -0,0 +1,46 @@
+[commands]
+# What kind of upgrade to perform:
+# default = all available upgrades
+# security = only the security upgrades
+upgrade_type = security
+random_sleep = 300
+
+# Whether updates should be downloaded when they are available.
+download_updates = yes
+
+# Whether updates should be applied when they are available.
+# Note that if this is set to no, downloaded packages will be left in the
+# cache regardless of the keepcache setting.
+apply_updates = yes
+
+
+[emitters]
+# Name to use for this system in messages that are emitted. Default is the
+# hostname.
+# system_name = my-host
+
+# How to send messages. Valid options are stdio, email and motd. If
+# emit_via includes stdio, messages will be sent to stdout; this is useful
+# to have cron send the messages. If emit_via includes email, this
+# program will send email itself according to the configured options.
+# If emit_via includes motd, /etc/motd file will have the messages.
+# Default is email,stdio.
+emit_via = stdio,email
+
+
+[email]
+# The address to send email messages from.
+email_from = root
+
+# List of addresses to send messages to.
+email_to = admin@cyplo.net
+
+# Name of the host to connect to to send email messages.
+email_host = localhost
+
+
+[base]
+# This section overrides dnf.conf
+
+# Use this to filter DNF core messages
+debuglevel = 1
diff --git a/fedora/install_freecad_dependencies b/fedora/install_freecad_dependencies
index 8ec3a001..4292f342 100755
--- a/fedora/install_freecad_dependencies
+++ b/fedora/install_freecad_dependencies
@@ -1,2 +1,2 @@
#!/bin/bash
-sudo dnf install cmake doxygen swig gettext dos2unix desktop-file-utils libXmu-devel freeimage-devel mesa-libGLU-devel OCE-devel python python-devel python-pyside-devel pyside-tools boost-devel tbb-devel eigen3-devel qt-devel qt-webkit-devel ode-devel xerces-c xerces-c-devel opencv-devel smesh-devel freetype freetype-devel boost-devel Coin3-devel
+sudo dnf install cmake doxygen swig gettext dos2unix desktop-file-utils libXmu-devel freeimage-devel mesa-libGLU-devel OCE-devel python python-devel python-pyside-devel pyside-tools boost-devel tbb-devel eigen3-devel qt-devel qt-webkit-devel ode-devel xerces-c xerces-c-devel opencv-devel smesh-devel freetype freetype-devel boost-devel Coin3-devel vtk-devel med-devel
diff --git a/fedora/test_insider b/fedora/test_insider
new file mode 100755
index 00000000..e31efca7
--- /dev/null
+++ b/fedora/test_insider
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+export DONT_CHANGE_SHELL=true
+export NO_SYSTEMCTL=true
+
+dnf -y install sudo
+
+cd $HOME
+
+mkdir -p dev/
+cp -rv temp/dotfiles dev/
+
+./dev/dotfiles/fedora/configure_fresh_system
+
diff --git a/test b/test
new file mode 100755
index 00000000..10466feb
--- /dev/null
+++ b/test
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+if [[ -z $DETECTED_OS ]]; then
+ echo "cannot detect OS, please set DETECTED_OS manually"
+ exit 1
+fi
+
+if [[ $DETECTED_OS =~ .*:.* ]]; then
+ SYSTEM_NAME=`echo $DETECTED_OS | cut -d':' -f1`
+ SYSTEM_VERSION=`echo $DETECTED_OS | cut -d':' -f2`
+else
+ echo "please set DETECTED_OS to system:version"
+ exit 1
+fi
+
+INSIDER_ROOT_DIR=/root/temp/dotfiles/
+CURRENT_DIR=`pwd`
+
+SYSTEM_DIR="$SYSTEM_NAME/"
+SYSTEM_VERSION_DIR="$SYSTEM_NAME/$SYSTEM_VERSION/"
+
+if [[ -d "$CURRENT_DIR/$SYSTEM_VERSION_DIR" ]]; then
+ DIR=$SYSTEM_VERSION_DIR
+else
+ DIR=$SYSTEM_DIR
+fi
+
+docker run -v $CURRENT_DIR:$INSIDER_ROOT_DIR $DETECTED_OS $INSIDER_ROOT_DIR/$DIR/test_insider
+
diff --git a/ubuntu/configure_fresh_system b/ubuntu/configure_fresh_system
index c5fc4939..8ab84e07 100755
--- a/ubuntu/configure_fresh_system
+++ b/ubuntu/configure_fresh_system
@@ -1,18 +1,30 @@
#!/bin/bash
-# detect if building inside a CI system, like Travis
-echo "choosing the more interactive installation method"
-COMMAND_PREFIX="apt-get -y";
+
set -e
+set -v
sudo apt-get update
+sudo apt-get -y upgrade
+install_packages="sudo apt-get -y --fix-missing install apt-file aptitude aria2 atop cmake curl dkms freecad gajim git glances gnupg2 golang gparted gsmartcontrol gtk-redshift intltool kdiff3 keepass2 libatk1.0-dev libbonoboui2-dev libcairo2-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libncurses5-dev libx11-dev libxpm-dev libxt-dev linux-kernel-headers lm-sensors meld mercurial nodejs npm pv python-dev python-pip python3-pip realpath redshift retext ruby-dev silversearcher-ag solaar terminator thunderbird thunderbird-enigmail thunderbird-ublock-origin tmux tor torsocks vim whois zsh"
-UPGRADE_COMMAND="sudo $COMMAND_PREFIX dist-upgrade"
-eval ${UPGRADE_COMMAND}
+set +e
+for i in `seq 1 3`; do
+ eval $install_packages
+done
-INSTALL_COMMAND="sudo $COMMAND_PREFIX install meld whois zsh tmux vim atop aria2 curl pv pixz gajim tor torsocks nodejs npm terminator gsmartcontrol python-pip mesa-utils mesa-utils-extra aptitude p7zip-full p7zip-rar thunderbird mercurial kdiff3 gnupg2 python3-setuptools aircrack-ng macchanger realpath python3-dev python3 python3-pip apt-file"
-eval ${INSTALL_COMMAND}
+set -e
+eval $install_packages
+
+if [[ -z $NO_SYSTEMCTL ]]; then
+ sudo systemctl enable tor
+ sudo systemctl start tor
+fi
+
+sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
+echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
+sudo apt-get update
+sudo apt-get -y install mono-devel mono-complete
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
DIR="$DIR/../"
DIR="$DIR" $DIR/common/configure_fresh_system
-
diff --git a/ubuntu/test_insider b/ubuntu/test_insider
new file mode 100755
index 00000000..1234fce0
--- /dev/null
+++ b/ubuntu/test_insider
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -e
+
+export DEBIAN_FRONTEND=noninteractive
+export DONT_CHANGE_SHELL=true
+export NO_SYSTEMCTL=true
+
+echo "APT::Acquire::Retries=16;" >> /etc/apt/apt.conf.d/99_retries
+
+apt-get update
+apt-get install sudo
+cd $HOME
+
+mkdir -p dev/
+cp -rv temp/dotfiles dev/
+
+./dev/dotfiles/ubuntu/configure_fresh_system
+
diff --git a/ubuntu/trusty/configure_fresh_system b/ubuntu/trusty/configure_fresh_system
new file mode 100755
index 00000000..886b5f9f
--- /dev/null
+++ b/ubuntu/trusty/configure_fresh_system
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+set -e
+set -v
+
+sudo apt-get update
+sudo apt-get -y upgrade
+install_packages="sudo apt-get -y --fix-missing install apt-file aptitude aria2 atop cmake curl dkms freecad gajim git glances gnupg2 golang gparted gsmartcontrol gtk-redshift intltool kdiff3 keepass2 libatk1.0-dev libbonoboui2-dev libcairo2-dev libgnome2-dev libgnomeui-dev libgtk2.0-dev libncurses5-dev libx11-dev libxpm-dev libxt-dev linux-kernel-headers lm-sensors meld mercurial nodejs npm pv python-dev python-pip python3-pip realpath redshift retext ruby-dev silversearcher-ag terminator thunderbird thunderbird-enigmail tmux tor torsocks vim whois zsh"
+
+set +e
+for i in `seq 1 3`; do
+ eval $install_packages
+done
+
+set -e
+eval $install_packages
+
+if [[ -z $NO_SYSTEMCTL ]]; then
+ sudo systemctl enable tor
+ sudo systemctl start tor
+fi
+
+sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
+echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
+echo "deb http://download.mono-project.com/repo/debian wheezy-libtiff-compat main" | sudo tee -a /etc/apt/sources.list.d/mono-xamarin.list
+sudo apt-get update
+sudo apt-get -y install mono-devel mono-complete
+
+DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+DIR="$DIR/../../"
+export NO_GO=true
+DIR="$DIR" $DIR/common/configure_fresh_system
diff --git a/ubuntu/trusty/test_insider b/ubuntu/trusty/test_insider
new file mode 100755
index 00000000..acfe5d01
--- /dev/null
+++ b/ubuntu/trusty/test_insider
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+set -e
+
+export DEBIAN_FRONTEND=noninteractive
+export DONT_CHANGE_SHELL=true
+export NO_SYSTEMCTL=true
+
+echo "APT::Acquire::Retries=16;" >> /etc/apt/apt.conf.d/99_retries
+
+apt-get update
+apt-get install sudo
+cd $HOME
+
+mkdir -p dev/
+cp -rv temp/dotfiles dev/
+
+./dev/dotfiles/ubuntu/trusty/configure_fresh_system
+
diff --git a/windows_cygwin/.minttyrc b/windows_cygwin/.minttyrc
new file mode 100644
index 00000000..553257b0
--- /dev/null
+++ b/windows_cygwin/.minttyrc
@@ -0,0 +1,27 @@
+BoldAsFont=-1
+Font=DejaVu Sans Mono for Powerline
+FontHeight=12
+FontWeight=700
+FontIsBold=yes
+Locale=en_GB
+Charset=UTF-8
+ForegroundColour=131,148,150
+BackgroundColour=0,43,54
+CursorColour=220,50,47
+Black=7,54,66
+BoldBlack=0,43,54
+Red=220,50,47
+BoldRed=203,75,22
+Green=133,153,0
+BoldGreen=88,110,117
+Yellow=181,137,0
+BoldYellow=101,123,131
+Blue=38,139,210
+BoldBlue=131,148,150
+Magenta=211,54,130
+BoldMagenta=108,113,196
+Cyan=42,161,152
+BoldCyan=147,161,161
+White=238,232,213
+BoldWhite=253,246,227
+BellType=0
diff --git a/windows_cygwin/README.md b/windows_cygwin/README.md
new file mode 100644
index 00000000..cc3c8bb3
--- /dev/null
+++ b/windows_cygwin/README.md
@@ -0,0 +1,19 @@
+Bootstrap from cmd.exe running as Administrator:
+
+ @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/cyplo/dotfiles/master/windows_cygwin/bootstrap.ps1'))"
+
+launch a normal user's cmd.exe and:
+
+ refreshenv
+ ssh-keygen -b 8192
+ type .ssh\id_rsa.pub
+ # add this key to github
+ mkdir dev
+ cd dev
+ git clone git@github.com:cyplo/dotfiles.git
+
+launch new cmd.exe as Administrator and:
+
+ cd %HOMEPATH%\dev\dotfiles
+ windows_cygwin\build.bat
+
diff --git a/windows_cygwin/bootstrap.ps1 b/windows_cygwin/bootstrap.ps1
new file mode 100644
index 00000000..dbec7a91
--- /dev/null
+++ b/windows_cygwin/bootstrap.ps1
@@ -0,0 +1,3 @@
+iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
+choco install -y git win32-openssh
+
diff --git a/windows_cygwin/build.bat b/windows_cygwin/build.bat
new file mode 100755
index 00000000..405f244c
--- /dev/null
+++ b/windows_cygwin/build.bat
@@ -0,0 +1,15 @@
+@echo on
+choco install -y --allowEmptyChecksum firefox googlechrome wget notepadplusplus sublimetext3 mono monodevelop gtksharp visualstudiocode microsoft-build-tools visualstudio2015community p4merge dotnet4.5 ruby nodejs.install stylecop
+call refreshenv
+
+wget -c https://cygwin.com/setup-x86_64.exe
+setup-x86_64.exe -R "C:\cygwin64" -s http://cygwin.netbet.org/ -q -g -P curl,zsh,git,vim,wget,xz,tar,gawk,bzip2,subversion,zlib,fontconfig,clang,cmake,lua,perl,the_silver_searcher
+
+set script_path=%~dp0
+set repo_path=%script_path%\..\
+set bash=c:\cygwin64\bin\bash.exe --login -c
+
+for /f "delims=" %%A in ('%bash% "cd `cygpath $HOMEPATH`/dev/dotfiles && git rev-parse --abbrev-ref HEAD"') do set "branch=%%A"
+%bash% 'echo "branch is $branch"'
+%bash% "cp -vr `cygpath $HOMEPATH`/.ssh $HOME/"
+%bash% "export OUTER_CLONE=`cygpath $repo_path` && $script_path/build_insider.sh"
diff --git a/windows_cygwin/build_insider.sh b/windows_cygwin/build_insider.sh
new file mode 100755
index 00000000..f1c25446
--- /dev/null
+++ b/windows_cygwin/build_insider.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+DOTFILES_PATH="$HOME/dev/dotfiles"
+mkdir -pv $HOME/dev/
+rm -fr $DOTFILES_PATH
+
+git clone "$OUTER_CLONE" "$DOTFILES_PATH"
+cd "$DOTFILES_PATH"
+git remote set-url origin git@github.com:cyplo/dotfiles.git
+git checkout $branch
+
+export NOSUDO=true
+export DONT_CHANGE_SHELL=true
+export NORUST=true
+export NORUBY=true
+export NO_GO=true
+export DIR=$DOTFILES_PATH
+
+curl https://bootstrap.pypa.io/get-pip.py > /tmp/get-pip.py
+python /tmp/get-pip.py
+
+$DIR/common/configure_fresh_system
+ln -vfs $DIR/windows_cygwin/.minttyrc $HOME/
+ln -vfs $DIR/.gitconfig.cygwin $HOME/.gitconfig
+