#!/usr/bin/env bash # functions function repository { apt-get install -y software-properties-common && ( add-apt-repository -y ppa:ultradvorka/ppa add-apt-repository -y ppa:webupd8team/java ) } function update-upgrade { apt-get update -y apt-get upgrade -y } function common { # get users directory root_user=$(grep ':0:' /etc/passwd | awk -F':' '{print $6}') default_user=$(grep ':1000:' /etc/passwd | awk -F':' '{print $6}') # default shell apt-get install -y sudo mc tree pv vim mosh bash-completion # bash shell apt-get install -y hh && ( grep HH_CONFIG /etc/bash.bashrc || \ hh --show-configuration >> /etc/bash.bashrc ) # zsh shell apt-get install -y zsh && ( sed -i -- 's/\/bin\/bash/\/bin\/zsh/' /etc/passwd wget -O /etc/zsh/newuser.zshrc.recommended \ http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc cp -f /etc/zsh/newuser.zshrc.recommended $default_user/.zshrc cp -f /etc/zsh/newuser.zshrc.recommended $root_user/.zshrc ) # tmux apt-get install -y tmux && ( echo 'if [ "$TMUX" = "" ]; then tmux; fi' | cat - $default_user/.zshrc > \ /tmp/.zshrc && mv /tmp/.zshrc $default_user/.zshrc ) # diagnostics apt-get install -y htop iotop iftop nmon powertop stress lm-sensors \ gddrescue smartmontools kpartx nmap # programming apt-get install -y git subversion libapache2-svn build-essential # networking apt-get install -y nfs-common cifs-utils openvpn axel \ wget ethtool fping # misc. tools apt-get install -y apt-file aptitude hexedit manpages-de # configure vim touch $root_user/.vimrc $default_user/.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/.vimrc || echo "$config" >> $root_user/.vimrc grep "$config" $default_user/.vimrc || echo "$config" >> $default_user/.vimrc done } function common-end { # 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 } function client-gui { # programs apt-get install -y firefox firefox-locale-de thunderbird \ thunderbird-locale-de keepassx filezilla vlc gparted \ wireshark kate # IDE apt-get install -y eclipse # OpenJDK apt-get install -y openjdk-6-jdk openjdk-6-source openjdk-6-demo \ openjdk-6-doc openjdk-6-jre-headless openjdk-6-jre-lib apt-get install -y openjdk-7-jdk openjdk-7-source openjdk-7-demo \ openjdk-7-doc openjdk-7-jre-headless openjdk-7-jre-lib apt-get install -y icedtea-7-plugin # Oracle Java apt-get install -y oracle-java7-installer oracle-java8-installer # misc. tools apt-get install -y git-gui bless } function client-gui-end { # Java Plugin update-alternatives --config mozilla-javaplugin.so } function server-gui { # programs apt-get install -y firefox firefox-locale-de thunderbird \ thunderbird-locale-de filezilla gparted wireshark kate # ssh apt-get install -y openssh-server } function server-cli { # ssh apt-get install -y openssh-server } # check if root if [[ $EUID -ne 0 ]]; then echo "This script must be run as root" 1>&2 exit 1 fi # choose plattform PS3='Please enter your system ' options=("client-gui" "server-cli" "server-gui" "quit") select opt in "${options[@]}" do case $opt in "client-gui") update-upgrade repository common client-gui common-end client-gui-end break ;; "server-cli") update-upgrade repository common server-cli common-end break ;; "server-gui") update-upgrade repository common server-gui common-end break ;; *) echo invalid option ;; esac done