forked from mitchellwills/dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinstall.sh
executable file
·181 lines (140 loc) · 4.68 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#!/usr/bin/env bash
set -euo pipefail
set -x
script_dir="$( (builtin cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) )"
root_dir="$( (builtin cd "$script_dir" && git rev-parse --show-toplevel) )"
home="$HOME"
################################################################################
# Command line args
################################################################################
full_install=""
if [[ $# -gt 0 && $1 = --full-install ]]; then
full_install=true
fi
headless=""
if [[ $# -gt 1 && $2 = "--headless" ]]; then
headless=true
fi
################################################################################
# Update repository
################################################################################
if [ -n "$full_install" ]; then
# Tmux v2.0
sudo add-apt-repository -y ppa:pi-rho/dev
sudo apt-get update
# Graphical programs
if [ -n "$headless" ]; then
sudo apt-get install -y \
compiz-plugins \
compizconfig-settings-manager \
software-properties-common \
terminator \
fi
# Command-line utilities
sudo apt-get install -y \
aptitude \
build-essential \
cmake \
exuberant-ctags \
htop \
inotify-tools \
python-dev \
python2.7-dev \
python-software-properties \
tmux \
vim \
xclip \
else
echo "--full-install not specified. linking only."
fi
################################################################################
# Update repository
################################################################################
if [ -n "$full_install" ]; then
git submodule update --init --recursive
fi
################################################################################
# Set current directory
################################################################################
cd $root_dir
################################################################################
# Create required directories
################################################################################
mkdir -p $home/GitHub $home/include $home/.config $home/.bundles $home/.go
################################################################################
# Link config files in home folder
################################################################################
function mklnk() {
local source_file="$1"
local mklnk_file="$2"
$root_dir/link.py "$source_file" "$mklnk_file"
}
export -f mklnk
# Shell
mklnk $root_dir/shell/bashrc.sh $home/.bashrc
mklnk $root_dir/shell/zshrc.zsh $home/.zshrc
mklnk $root_dir/tmux.conf $home/.tmux.conf
mklnk $root_dir/.ros_config $home/.ros_config
mklnk $root_dir/themes $home/.themes
mklnk $root_dir/shell/commonrc.sh $home/.commonrc
mklnk $root_dir/shell/xinitrc.sh $home/.xinitrc
mklnk $root_dir/shell/alias.sh $home/.alias
mklnk $root_dir/shell/dircolors $home/.dircolors
mklnk $root_dir/shell/function.sh $home/.function
mklnk $root_dir/shell/colors.sh $home/.colors
mklnk $root_dir/shell/ssh_config $home/.ssh/config
mklnk $root_dir/shell/scripts $home/.scripts
mklnk $root_dir/shell/tools/complete-alias/completions/bash_completion.sh $home/.bash_completion
# Git
mklnk $root_dir/git/git-completion.sh $home/.git-completion.sh
mklnk $root_dir/git/gitconfig $home/.gitconfig
mklnk $root_dir/git/gitignore $home/.gitignore
# Vim
mklnk $root_dir/vim $home/.vim
mklnk $root_dir/vim $home/.ideavim
mklnk $root_dir/vim/vimrc $home/.vimrc
#mklnk $root_dir/vim/ycm_extra_conf.py $home/.ycm_extra_conf.py
zoox_vim_root=$home/current_workspace/scripts/editors/vim
mklnk $zoox_vim_root/ycm_extra_conf.py $home/.ycm_extra_conf.py
mklnk $zoox_vim_root/ycm_extra_conf_offline_ycm.py $home/.ycm_extra_conf_offline_ycm.py
mklnk $zoox_vim_root/generate_compile_commands_from_filename_vim_plugin.py $home/.ycm_compile_commands.py
# TMux
mklnk $root_dir/tmux $home/.tmux
# Configs
for D in $root_dir/config/config/*; do
echo $D | sed 's/.*\(config\/.*\)/~\/\.\1/g' | xargs $root_dir/link.py $D
done
mklnk $root_dir/config/Xmodmap $home/.Xmodmap
mklnk $root_dir/config/i3 $home/.i3
if [ -z "$full_install" ]; then
exit 0
fi
echo "Installing TMux plugins..."
$home/.tmux/plugins/tpm/bin/install_plugins
# YouCompleteMe
echo "Reinstall Vundle Bundles? y/n "
read bundleinstall
if [ "$bundleinstall" == "y" ] || [ "$bundleinstall" == "Y" ]; then
(
vim +BundleInstall +qall
)
fi
# YouCompleteMe
echo "Recompile YouCompleteMe? y/n "
read recomp
if [ "$recomp" == "y" ] || [ "$recomp" == "Y" ]; then
(
cd $home/.bundles/YouCompleteMe
./install.py --clangd-completer
#--system-libclang --system-boost
)
fi
# Powerline Fontconfig
if [ -z "$headless" ]; then
(
mkdir -p $home/.fonts/
$root_dir/themes/powerline-fonts/install.sh
sudo fc-cache -vf $home/.fonts/
)
fi
source $home/.bashrc