-
Notifications
You must be signed in to change notification settings - Fork 24
/
linux.sh
135 lines (100 loc) · 3.63 KB
/
linux.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
#!/bin/bash
## Exit trap
trap 'ret=$?; test $ret -ne 0 && printf "failed\n\n" >&2; exit $ret' EXIT
set -e
## Fancy echo
fancy_echo() {
printf "\n%b\n" "$1"
}
## Distro check
if ! grep -qiE 'focal|bionic|artful|xenial|trusty|stretch|buster' /etc/os-release
then
fancy_echo "Sorry! we don't currently support that distro."
exit 1
fi
## Debian-Ubuntu package update
fancy_echo "Updating system packages ..."
if command -v aptitude >/dev/null; then
fancy_echo "Using aptitude ..."
else
fancy_echo "Installing aptitude ..."
sudo apt-get install -y aptitude
fi
sudo aptitude update
## Git
fancy_echo "Installing Git, version control system ..."
sudo aptitude install -y git-core
## Check home bin
if [ ! -d "$HOME/.bin/" ]; then
mkdir "$HOME/.bin"
fi
if [ ! -f "$HOME/.zshrc" ]; then
touch $HOME/.zshrc
fi
if [[ ":$PATH:" != *":$HOME/.bin:"* ]]; then
echo 'export PATH="$HOME/.bin:$PATH"' >> ~/.zshrc
fi
## ZSH and Oh-My-ZSH
fancy_echo "Installing ZSH ..."
sudo aptitude install -y zsh
fancy_echo "Setting ZSH as default, please enter your password:"
chsh -s $(which zsh)
fancy_echo "Installing Oh-My-ZSH ..."
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
cp ~/.zshrc ~/.zshrc.orig
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
if [ ! -n "$ZSH" ]; then
ZSH=~/.oh-my-zsh
fi
## Redis
fancy_echo "Installing Redis, a good key-value database ..."
sudo aptitude install -y redis-server
## Extra components
fancy_echo "Installing ImageMagick, to crop and resize images ..."
sudo aptitude install -y imagemagick
fancy_echo "Installing libraries for common gem dependencies ..."
sudo aptitude install -y libxslt1-dev libcurl4-openssl-dev libksba8 libksba-dev libqtwebkit-dev libreadline-dev libpq-dev
fancy_echo "Installing watch, to execute a program periodically and show the output ..."
sudo aptitude install -y watch
fancy_echo "Installing NodeJS, a Javascript runtime ..."
sudo aptitude install -y nodejs
## Rbenv
if [[ ! -d "$HOME/.rbenv" ]]; then
fancy_echo "Installing rbenv, to change Ruby versions ..."
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
if ! grep -qs "rbenv init" ~/.zshrc; then
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init - --no-rehash)"' >> ~/.zshrc
fi
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
fi
if [[ ! -d "$HOME/.rbenv/plugins/rbenv-gem-rehash" ]]; then
fancy_echo "Installing rbenv-gem-rehash so the shell automatically picks up binaries after installing gems with binaries..."
git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash
fi
if [[ ! -d "$HOME/.rbenv/plugins/ruby-build" ]]; then
fancy_echo "Installing ruby-build, to install Rubies ..."
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
fi
## Ruby dependencies
fancy_echo "Installing Ruby dependencies ..."
sudo aptitude install -y zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev
## Ruby environment
RUBY_VERSION="3.1.0"
fancy_echo "Preveting gem system from installing documentation ..."
echo 'gem: --no-ri --no-doc' >> ~/.gemrc
fancy_echo "Installing Ruby $RUBY_VERSION ..."
rbenv install $RUBY_VERSION
fancy_echo "Setting $RUBY_VERSION as global default Ruby ..."
rbenv global $RUBY_VERSION
rbenv rehash
fancy_echo "Updating to latest Rubygems version ..."
gem update --system
fancy_echo "Installing Rails ..."
gem install rails
fancy_echo "Installing PostgreSQL Ruby interface ..."
gem install pg
clear
fancy_echo "Ready and running ZSH ..."
zsh