forked from retrohacker/old-dotfiles
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.sh
executable file
·213 lines (198 loc) · 4.63 KB
/
setup.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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
#!/usr/bin/env bash
# Define packages that will be installed
PACKAGES=(
alsa-base
alsa-utils
alsa-oss
autoconf
automake
autotools-dev
awesome
awesome-extra
build-essential
digikam
firmware-iwlwifi
fonts-powerline
gedit
gimp
gimp-plugin-registry
gnupg
htop
inkscape
ksnapshot
libasound2
libasound2-doc
linux-headers-$(uname -r|sed 's,[^-]*-[^-]*-,,')
tree
vim
vlc
xbacklight
xorg
zsh
)
# Ensure script is run as root
if [ $UID -ne 0 ]; then
echo "Script must be run as root"
exit 1
fi
# Get Working Directory
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
# Get Logged In User and Homedir
USERNAME=$(who am i | awk '{print $1}')
HOMEDIR=$(eval echo ~$USERNAME)
# Get list of users that can log in
USERS=$(exec $DIR/users.sh)
# Useful Functions
Log() {
if [ -z "$heading" ]; then
echo "# $*"
else
echo "## $*"
fi
}
runner() {
echo "Running \`$*\`"
echo "\`\`\`"
bash -c "$*"
echo "\`\`\`"
}
# Run Setup
heading='true' Log 'Updating System'
Log 'Updating apt-get'
runner \
apt-get update
Log 'Downloading new packages'
runner \
DEBIAN_FRONTEND=noninteractive apt-get --download-only -y --force-yes dist-upgrade
Log 'Installing new packages'
runner \
DEBIAN_FRONTEND=noninteractive apt-get -y --force-yes dist-upgrade
runner \
DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes ${PACKAGES[*]}
heading='true' Log 'Setting up hardware'
runner \
modprobe -r iwlwifi; \
modprobe iwlwifi
Log 'Adding users to bumblebee group'
for u in $USERS; do
runner \
id $u
runner \
usermod -aG bumblebee $u
runner \
id $u
done
Log 'Adding users to audio group'
for u in $USERS; do
runner \
id $u
runner \
usermod -aG audio $u
runner \
id $u
done
Log 'Moving asoundrc into place'
runner \
ln $DIR/asoundrc $HOMEDIR/.asoundrc
Log 'Setting up background rotation'
for u in $USERS; do
runner \
"(crontab -u $u -l; echo \"* * * * * DISPLAY=:0 $DIR/backgrounds/random.sh\") | crontab -u $u -"
done
heading='true' Log 'Terminal Environment'
Log 'Setting up Awesome'
runner \
mkdir -p $HOMEDIR/.config/awesome
runner \
ln -s $DIR/awesome.lua $HOMEDIR/.config/rc.lua
Log 'Setting zsh as default shell'
for u in $USERS; do
runner \
grep "^$u" /etc/passwd
runner \
chsh -s $(which zsh) $u
runner \
grep "^$u" /etc/passwd
done
Log 'Moving zsh dotfiles into place'
runner \
ln -s $DIR/zsh $HOMEDIR/.zsh
runner \
ln $DIR/zsh/zshrc $HOMEDIR/.zshrc
Log 'Moving vim dotfiles into place'
runner \
ln -s $DIR/vim $HOMEDIR/.vim
runner \
ln $DIR/vim/vimrc $HOMEDIR/.vimrc
Log 'Moving .Xresources into place'
runner \
ln -s $DIR/Xresources $HOMEDIR/.Xresources
Log 'Moving .xinitrc into place'
runner \
ln -s $DIR/xinitrc $HOMEDIR/.xinitrc
Log 'Installing Web Browser'
runner \
gdebi -n \
$DIR/debs/google_chrome.deb
Log 'Installing Dropbox'
runner \
gdebi -n \
$DIR/debs/dropbox.deb
Log 'Installing docker'
runner \
curl -sSL https://get.docker.com/ | sh
runner \
groupadd docker
runner \
gpasswd -a $USERNAME docker
runner \
service docker restart
Log 'Installing iojs'
runner \
"curl -sL https://deb.nodesource.com/setup_iojs_2.x | bash -"
runner \
apt-get install -y --force-yes \
iojs
Log 'Installing nvm'
runner \
"curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash"
Log 'Installing webserver'
runner \
npm install -g local-web-server
Log' Installing JavaScript Linter'
runner \
npm install -g standard
Log 'Installing Ansible'
runner \
git clone --recursive -b stable-1.9 --depth 1 git://github.com/ansible/ansible.git
runner \
easy_install pip
runner \
pip install paramiko PyYAML Jinja2 httplib2
runner \
"cd ansible && make install"
Log 'Installing Anki'
runner \
gdebi -n $DIR/debs/anki.deb
Log 'Installing Golang'
runner \
"tar -C /usr/local -xzf $DIR/debs/go*.tar.gz"
Log 'Installing docker-compose'
runner \
"curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose"
runner \
chmod +x /usr/local/bin/docker-compose
Log 'Installing neovim'
runner \
mkdir -p ~wblankenship/.bin
runner \
"git clone https://github.com/neovim/neovim.git $DIR/neovim && cd $DIR/neovim && make CMAKE_EXTRA_FLAGS=\"-DCMAKE_NSTALL_PREFIX:PATH=~wblankenship/.bin && make install"
heading='true' Log "Rebooting"
runner \
shutdown -r now