Last active
December 26, 2015 03:19
-
-
Save diyan/7085360 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Based on https://github.com/holman/dotfiles/blob/master/script/bootstrap | |
set -e | |
declare -r DOTFILES_ROOT=$(pwd) | |
# Ask for the admin password upfront | |
#sudo -v | |
#https://github.com/cowboy/dotfiles/blob/master/bin/dotfiles | |
header() { echo -e "\033[1m$@\033[0m"; } | |
info() { echo -e " [\033[00;34mINFO\033[0m] $@"; } | |
success() { echo -e " [ \033[00;32mOK\033[0m ] $@"; } | |
fail() { echo -e " [\033[00;31mFAIL\033[0m] $@"; } | |
input() { echo -e " [ \033[0;33m??\033[0m ] $@ "; } | |
link_files () { | |
ln -s $1 $2 | |
success "linked $1 to $2" | |
} | |
install_dotfiles() { | |
header "install dotfiles. start" | |
local overwrite_all=false | |
local backup_all=false | |
local skip_all=false | |
#info "installing dotfiles... info" | |
#success "installing dotfiles... success" | |
#fail "installing dotfiles... fail" | |
#input "installing dotfiles... input" | |
cd $DOTFILES_ROOT/home | |
#TODO create directories automatically | |
mkdir -p $HOME/.config/autostart | |
mkdir -p $HOME/.config/gtk-3.0 | |
mkdir -p $HOME/.config/i3 | |
mkdir -p $HOME/.config/i3status | |
mkdir -p $HOME/.config/mc | |
for source in $(find $DOTFILES_ROOT/home -maxdepth 4 -not -type d); do | |
local dest=$(echo $source | sed s:$DOTFILES_ROOT/home:$HOME:) | |
if [ -f $dest ] || [ -d $dest ]; then | |
local overwrite=false | |
local backup=false | |
local skip=false | |
if [ "$overwrite_all" == "false" ] && [ "$backup_all" == "false" ] && [ "$skip_all" == "false" ]; then | |
input "File already exists: `basename $source`, what do you want to do? [s]kip, [S]kip all, [o]verwrite, [O]verwrite all, [b]ackup, [B]ackup all?" | |
read -n 1 action | |
echo "" | |
case "$action" in | |
o ) | |
overwrite=true ;; | |
O ) | |
overwrite_all=true ;; | |
b ) | |
backup=true ;; | |
B ) | |
backup_all=true ;; | |
s ) | |
skip=true ;; | |
S ) | |
skip_all=true ;; | |
* ) | |
;; | |
esac | |
fi | |
if [ "$overwrite" == "true" ] || [ "$overwrite_all" == "true" ]; then | |
rm -rf $dest | |
success "removed $dest" | |
fi | |
if [ "$backup" == "true" ] || [ "$backup_all" == "true" ]; then | |
mv $dest $dest\.backup | |
success "moved $dest to $dest.backup" | |
fi | |
if [ "$skip" == "false" ] && [ "$skip_all" == "false" ]; then | |
link_files $source $dest | |
else | |
success "skipped $source" | |
fi | |
else | |
link_files $source $dest | |
fi | |
done | |
header "install dotfiles. finish" | |
} | |
setup_de_settings() { | |
sudo apt-get install -yqq shimmer-themes | |
success Greybird GTK theme installed | |
sudo add-apt-repository -y ppa:noobslab/icons | |
sudo apt-get update -qq && sudo apt-get install -yqq faenza-icon-theme | |
success Faenza icon theme installed | |
# Use bigger font on high resolution display | |
local font_name='Sans 11' | |
local mono_font_name='Inconsolata for Powerline Medium 13' | |
if [ `xrandr | grep -E 'connected 1920x1080.*? 282mm x 165mm' | wc -l` -eq 1 ]; then | |
font_name='Sans 16' | |
mono_font_name='Inconsolata for Powerline Medium 16' | |
fi | |
#TOOD consider use text scaling as described here | |
#http://askubuntu.com/questions/281941/ubuntu-resolution-with-ultrabook | |
#http://askubuntu.com/questions/197828/how-to-find-and-change-the-screen-dpi | |
#gsettings set org.gnome.desktop.interface text-scaling-factor 1.0 | |
gsettings set org.gnome.desktop.interface font-name "$font_name" | |
gsettings set org.gnome.desktop.interface monospace-font-name "$mono_font_name" | |
gsettings set org.gnome.desktop.interface gtk-theme "Greybird" | |
gsettings set org.gnome.desktop.interface icon-theme "Faenza-Dark" | |
#gsettings set org.gnome.desktop.interface menubar-accel '' | |
gsettings set org.gnome.desktop.interface show-input-method-menu false | |
gsettings set org.gnome.desktop.background show-desktop-icons false | |
# Gnome Terminal | |
gconftool --type bool --set /apps/gnome-terminal/profiles/Default/default_show_menubar false | |
gconftool --type string --set /apps/gnome-terminal/profiles/Default/cursor_shape underline | |
gconftool --type string --set /apps/gnome-terminal/profiles/Default/background_type transparent | |
gconftool --type string --set /apps/gnome-terminal/profiles/Default/background_color "#000000000000" | |
gconftool --type float --set /apps/gnome-terminal/profiles/Default/background_darkness 0.7 | |
# gconftool --type bool --set /apps/gnome-terminal/profiles/Default/use_theme_colors false | |
success Unity/Gnome settings were configured | |
} | |
install_zsh() { | |
sudo apt-get install -yqq zsh git | |
if [ ! -d ~/.oh-my-zsh ]; then | |
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh | |
git clone git://github.com/zsh-users/zsh-syntax-highlighting.git ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting | |
fi | |
mkdir -p ~/.fonts | |
curl -L https://github.com/Lokaltog/powerline-fonts/raw/master/Inconsolata/Inconsolata%20for%20Powerline.otf > ~/.fonts/Inconsolata_for_Powerline.otf | |
fc-cache -vf ~/.fonts | |
success zsh, powerline, oh-my-zsh and zsh syntax highlighting installed | |
} | |
install_vim() { | |
if [ ! -d ~/.vim/bundle/vundle ]; then | |
git clone git://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/vundle | |
fi | |
# NOTE vim-gtk package has Lua, Mouse and Clipboard support | |
sudo apt-get install -yqq vim-gtk | |
vim +BundleInstall +qa | |
# Build vimproc binary module | |
cd ~/.vim/bundle/vimproc.vim && make | |
success Vim. Installed and configured | |
} | |
fix_update_apt_xapi() { | |
# http://ubuntuforums.org/showthread.php?p=9304431#post9304431 | |
sudo sed -i 's/$CMD --quiet/$CMD --update --quiet/g' /etc/cron.weekly/apt-xapian-index | |
success Fixed. update-apt-xapi process consumes too much CPU power | |
} | |
install_i3wm() { | |
echo "deb http://debian.sur5r.net/i3/ $(lsb_release -c -s) universe" | \ | |
sudo tee /etc/apt/sources.list.d/i3wm.list | |
sudo apt-get update -qq | |
sudo apt-get --allow-unauthenticated install sur5r-keyring | |
sudo apt-get update -qq && sudo apt-get install -yqq i3 | |
} | |
install_google_chrome() { | |
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | \ | |
sudo apt-key add - | |
echo "deb http://dl.google.com/linux/chrome/deb/ stable main" | \ | |
sudo tee /etc/apt/sources.list.d/google-chrome.list | |
sudo apt-get update -qq && sudo apt-get install -yqq google-chrome-stable | |
success "Google Chrome (web browser) installed" | |
} | |
install_google_music_manager() { | |
# http://www.ubuntuupdates.org/ppa/google_music | |
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | \ | |
sudo apt-key add - | |
echo 'deb http://dl.google.com/linux/musicmanager/deb/ stable main' | \ | |
sudo tee /etc/apt/sources.list.d/google-musicmanager.list | |
sudo apt-get update -qq && sudo apt-get install -yqq google-musicmanager-beta | |
success Google Music Manager installed | |
} | |
fix_dual_screen() { | |
xrandr --output HDMI1 --primary --left-of HDMI2 | |
success Switch dual monitors to extend instead of clone. HDMI1 is primary | |
} | |
fix_skype_sound() { | |
# https://wiki.archlinux.org/index.php/PulseAudio#Glitches.2C_skips_or_crackling | |
sudo sed -i "s/module-udev-detect$/module-udev-detect tsched=0/" /etc/pulse/default.pa | |
success Skype sound fixed by enabling interrupt-based PulseAudio scheduler | |
} | |
fix_font_rendering() { | |
# http://www.webupd8.org/2013/06/better-font-rendering-in-linux-with.html | |
sudo add-apt-repository -y ppa:no1wantdthisname/ppa | |
sudo apt-get update -qq && sudo apt-get upgrade -y | |
sudo apt-get install -yqq fontconfig-infinality | |
sudo bash /etc/fonts/infinality/infctl.sh setstyle | |
# http://www.webupd8.org/2013/06/install-openjdk-patched-with-font-fixes.html | |
cat << EOF | sudo tee | |
/etc/apt/preferences.d/no1wantdthisname-openjdk-fontfix-pin-600 | |
Package: * | |
Pin: release o=LP-PPA-no1wantdthisname-openjdk-fontfix | |
Pin-Priority: 600 | |
EOF | |
success "High priority was configured for PPA with Infinality/OpenJDK" | |
sudo add-apt-repository -y ppa:no1wantdthisname/openjdk-fontfix | |
sudo apt-get update -qq && sudo apt-get install -yqq openjdk-7-jre | |
success "Infinality font rendering was installed for freetype and OpenJDK" | |
} | |
install_exfat_support() { | |
sudo add-apt-repository -y ppa:relan/exfat | |
sudo apt-get update -qq && sudo apt-get install -yqq exfat-fuse exfat-utils | |
success "exFAT support (FUSE) installed" | |
} | |
install_dropbox() { | |
# http://askubuntu.com/questions/126198/how-to-install-dropbox | |
echo 100000 | sudo tee /proc/sys/fs/inotify/max_user_watches | |
sudo apt-key adv --keyserver=keyserver.ubuntu.com --recv-keys=8E5D2411637A5E2A | |
#TODO add dropbox repo in separate file | |
echo "deb http://linux.dropbox.com/ubuntu $(lsb_release -sc) main" | \ | |
sudo tee /etc/apt/sources.list.d/dropbox.list | |
sudo apt-get update -qq && sudo apt-get install -yqq python-gpgme dropbox | |
success "Dropbox (file sync/hosting/sharing service) installed" | |
} | |
install_zim() { | |
sudo add-apt-repository -y ppa:jaap.karssenberg/zim | |
sudo apt-get update -qq && sudo apt-get install -yqq zim | |
success "Zim (notetaking application) installed" | |
} | |
#install_viewnior() { | |
# sudo add-apt-repository -y ppa:xsisqox/ppa | |
# sudo sed -i "s/$(lsb_release -sc)/maverik/g" /etc/apt/sources.list.d/xsisqox-ppa-*.list | |
# sudo apt-get -qq update && sudo apt-get install -yqq viewnior | |
# success "Viewnior (light image viewer) installed" | |
#} | |
install_deadbeef() { | |
sudo add-apt-repository -y ppa:starws-box/deadbeef-player | |
sudo apt-get update -qq && sudo apt-get install -yqq deadbeef | |
success "DeaDBeeF (audio player) installed" | |
} | |
install_vkontakte_deadbeef() { | |
cd ~ && git clone https://github.com/scorpp/db-vk.git deadbeef_vk_plugin && cd $_ | |
sudo apt-get install -yqq cmake libgtk2.0-dev libgtk-3-dev libcurl3-dev \ | |
libjson-glib-dev deadbeef-plugins-dev | |
cmake . && make | |
mkdir -p ~/.local/lib/deadbeef | |
cp vkontakte_gtk*.so ~/.local/lib/deadbeef/ | |
sudo apt-get remove -yqq cmake libgtk2.0-dev libgtk-3-dev libcurl3-dev \ | |
libjson-glib-dev deadbeef-plugins-dev | |
sudo apt-get -yqq autoremove | |
success "VKontakte plugin for DeaDBeeF compiled and installed" | |
} | |
install_sublime_text() { | |
sudo add-apt-repository -y ppa:webupd8team/sublime-text-2 | |
sudo apt-get update -qq && sudo apt-get install -yqq sublime-text | |
success "Sublime Text 2 (text editor) installed" | |
} | |
install_diff_merge() { | |
sudo wget -O - http://debian.sourcegear.com/SOURCEGEAR-GPG-KEY | \ | |
sudo apt-key add - | |
echo "deb http://debian.sourcegear.com/ubuntu raring main" | \ | |
sudo tee /etc/apt/sources.list.d/sourcegear-diffmerge.list | |
sudo apt-get update -qq && sudo apt-get install -yqq diffmerge | |
success "SourceGear DiffMerge (diff tool) installed" | |
} | |
install_shutter() { | |
sudo add-apt-repository -y ppa:shutter/ppa | |
sudo apt-get update -qq && sudo apt-get install -yqq shutter | |
success "Shutter (powerful screenshot tool) installed" | |
} | |
install_youtube_dl(){ | |
sudo add-apt-repository -y ppa:nilarimogard/webupd8 | |
sudo apt-get update -qq && sudo apt-get install -yqq youtube-dl | |
success "YouTube downloader installed" | |
} | |
#install_oracle_java() { | |
# sudo add-apt-repository -y ppa:webupd8team/java | |
# sudo apt-get update -qq && sudo apt-get install -yqq oracle-java7-installer | |
# success Oracle Java Runtime installed | |
#} | |
install_pycharm() { | |
echo "fs.inotify.max_user_watches = 524288" | sudo tee -a /etc/sysctl.conf | |
sudo sysctl -p | |
wget http://download-ln.jetbrains.com/python/pycharm-professional-3.1.tar.gz | |
mkdir -p ~/opt/pycharm && tar -xzf pycharm-*.tar.gz --strip=1 -C ~/opt/pycharm | |
#~/opt/pycharm/bin/pycharm.sh | |
success "PyCharm (Python IDE) installed" | |
} | |
install_skype() { | |
# https://help.ubuntu.com/community/Skype | |
echo "deb http://archive.canonical.com/ $(lsb_release -sc) partner" | \ | |
sudo tee /etc/apt/sources.list.d/canonical-partnet.list | |
sudo apt-get update -qq && sudo apt-get install -yqq skype qt4-qtconfig | |
mkdir -p ~/.config/skype/dev-pro.alexey.diyan | |
mkdir -p ~/.config/skype/alexey.diyan | |
success Skype installed | |
} | |
install_wine() { | |
# http://www.tecmint.com/install-wine-on-ubuntu-and-linux-mint/ | |
sudo add-apt-repository -y ppa:ubuntu-wine/ppa | |
#TODO Investigate how to use ms fonts intaller in non-interactive mode | |
sudo apt-get update -qq && sudo apt-get install -yqq wine winetricks | |
success Wine installed | |
} | |
install_nodejs() { | |
# https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager | |
sudo add-apt-repository -y ppa:chris-lea/node.js | |
sudo apt-get update -qq && sudo apt-get install -yqq nodejs | |
success Node.js installed | |
} | |
install_pypy() { | |
sudo add-apt-repository -y ppa:pypy/ppa | |
sudo apt-get update -qq && sudo apt-get install -yqq pypy | |
success PyPy installed | |
} | |
install_unetbootin() { | |
sudo add-apt-repository -y ppa:gezakovacs/ppa | |
sudo apt-get update -qq && sudo apt-get install -yqq unetbootin | |
success UNetbootin installed | |
} | |
install_ubuntu_soft() { | |
sudo apt-get install -yqq mc htop curl git tig p7zip dos2unix expect | |
sudo apt-get install -yqq exuberant-ctags | |
sudo apt-get install -yqq flashplugin-installer | |
sudo apt-get install -yqq feh pidgin speedcrunch synapse weather-util | |
success Software listed in Ubuntu repository installed | |
} | |
uninstall_ubuntu_soft() { | |
sudo apt-get remove -y gnome-screenshot gnome-orca gnome-sudoku \ | |
gnome-mahjongg gnomine aisleriot gcalctool brasero thunderbird \ | |
simple-scan xchat rhythmbox | |
sudo apt-get -y autoremove | |
success Some GNOME default soft were replaced with third-party and removed | |
} | |
#autostart_soft() { | |
# find /usr/share/applications/*.desktop | grep -E 'firefox|skype|pidgin|zim'\ | |
# | xargs cp -t ~/.config/autostart | |
# success Frequently used programs added to autostart | |
#} | |
install_percona_toolkit() { | |
gpg --keyserver hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A | |
gpg -a --export CD2EFD2A | sudo apt-key add - | |
#TODO use tee tool and add debian repo into separate file | |
sudo add-apt-repository -y "deb http://repo.percona.com/apt $(lsb_release -sc) main" | |
sudo apt-get update -qq && sudo apt-get install -yqq percona-toolkit | |
success "Percona Toolkit (advanced cli tools for MySQL) installed" | |
} | |
<< COMMENT | |
install_ubuntu_soft | |
install_dotfiles | |
setup_de_settings | |
install_zsh | |
install_vim | |
install_i3wm | |
fix_update_apt_xapi | |
fix_skype_sound | |
fix_font_rendering | |
fix_dual_screen | |
install_exfat_support | |
install_google_chrome | |
install_google_music_manager | |
###install_dropbox | |
install_zim | |
install_deadbeef | |
###install_vkontakte_deadbeef | |
install_sublime_text | |
install_diff_merge | |
install_shutter | |
install_youtube_dl | |
install_pycharm | |
install_skype | |
COMMENT | |
install_wine | |
install_nodejs | |
install_pypy | |
install_unetbootin | |
uninstall_ubuntu_soft | |
# Powerline in Bash | |
#sudo mkdir -p /usr/share/fonts/opentype | |
#sudo wget -P /usr/share/fonts/opentype "https://github.com/Lokaltog/powerline-fonts/raw/master/Inconsolata/Inconsolata for Powerline.otf" | |
#sudo fc-cache -f | |
# TODO Do git clone into ~/.config/powerline-shell or ~/.local/share/powerline-shell then create symbol link | |
#ln -s ~/Dropbox/dotfiles/powerline-shell/powerline-shell.py ~/powerline-shell.py | |
#chmod 600 ~/.ssh/alexey_diyan_at_github.key |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment