#!/usr/bin/env bash # Install Script for Debian and Ubuntu installations # This script can be called multiple times # Copyright (C) 2018 Andreas Fendt - All Rights Reserved # Permission to copy and modify is granted under the MIT license # Last revised 28.04.2018 # check if root if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" 1>&2 exit 1 fi # check if debian if [ ! "$(grep -Ei 'debian|buntu' /etc/*release)" ]; then echo "This script must be run on a debian or ubuntu system" 1>&2 exit 1 fi # update system apt-get update -y apt-get dist-upgrade -y apt-get autoclean -y # get users directory and usernames root_user=$(grep ':0:' /etc/passwd | awk -F':' '{print $1}') root_user_path=$(grep ':0:' /etc/passwd | awk -F':' '{print $6}') default_user_path=$(egrep '\:100[0-9]\:' /etc/passwd | tail -n 1 | awk -F':' '{print $6}') default_user=$(egrep '\:100[0-9]\:' /etc/passwd | tail -n 1 | awk -F':' '{print $1}') # install default packages apt-get install -y sudo mc tree pv vim bash-completion wget git htop iotop iftop nmon apt-file aptitude hexedit tmux \ fonts-powerline pip install git+https://github.com/jeffkaufman/icdiff.git # install zsh shell apt-get install -y zsh && ( chsh -s /bin/zsh ${root_user} chsh -s /bin/zsh $[default_user] ) # install oh-my-zsh ( [ ! -d ${root_user_path}/.oh-my-zsh ] || [ ! -d ${default_user_path}/.oh-my-zsh ] ) && ( sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" # configure oh-my-zsh grep 'ZSH_THEME="agnoster"' ${root_user_path}/.zshrc || sed -i -- 's/ZSH_THEME=".*"/ZSH_THEME="agnoster"/g' ${root_user_path}/.zshrc grep "command-not-found" ${root_user_path}/.zshrc || sed -i -- '/^plugins=(/a \\ command-not-found\n common-aliases\n sudo\n systemd\n tmux\n ubuntu' ${root_user_path}/.zshrc # install oh-my-zsh to default user cp -f ${root_user_path}/.zshrc ${default_user_path}/.zshrc cp -a ${root_user_path}/.oh-my-zsh ${default_user_path}/.oh-my-zsh chown -R ${default_user}:${default_user} ${default_user_path}/.oh-my-zsh ${default_user_path}/.zshrc sed -i -- '/Path to your oh-my-zsh installation/!b;n;c\ export ZSH='"${default_user_path}"'/.oh-my-zsh' ${default_user_path}/.zshrc # configure tmux grep "ZSH_TMUX_AUTOSTART" ${default_user_path}/.zshrc || sed -i -- '1s/^/ZSH_TMUX_AUTOSTART="true"\nZSH_TMUX_AUTOQUIT="false"\n\n/' ${default_user_path}/.zshrc ) # install fzf install_fzf='cd ~ && git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install' [ ! -d ${root_user_path}/.fzf ] && su -c ${install_fzf} -s /bin/bash ${root_user} [ ! -d ${default_user_path}/.fzf ] && su -c ${install_fzf} -s /bin/bash ${default_user} # configure vim touch ${root_user_path}/.vimrc ${default_user_path}/.vimrc for config in "filetype plugin indent on" "set tabstop=4" "set shiftwidth=4" \ "set expandtab" "syntax enable" "set softtabstop=4" \ "set number" "set showcmd" "set cursorline"; do grep "${config}" ${root_user_path}/.vimrc || echo "${config}" >> ${root_user_path}/.vimrc grep "${config}" ${default_user_path}/.vimrc || echo "${config}" >> ${default_user_path}/.vimrc done chown ${default_user}:${default_user} ${default_user_path}/.vimrc # configure tmux for config in "bind '\"' split-window -c \"#{pane_current_path}\"" \ "bind % split-window -h -c \"#{pane_current_path}\"" \ "bind c new-window -c \"#{pane_current_path}\""; do grep "${config}" /etc/tmux.conf || echo "${config}" >> /etc/tmux.conf done # configure system apt-get install -y console-data console-setup locales \ keyboard-configuration tzdata dpkg-reconfigure console-data console-setup locales \ keyboard-configuration tzdata # run programs apt-file update sensors-detect --auto