Browse Source

added functions and menu, made some tests

Bachir Soussi Chiadmi 8 years ago
parent
commit
95fb5278c9
1 changed files with 319 additions and 218 deletions
  1. 319 218
      post-install.sh

+ 319 - 218
post-install.sh

@@ -1,240 +1,341 @@
-#! /bin/sh
+#! /bin/bash
 
 echo 'Arch Linux Postinstall'
 
-echo -n "Should we start? [Y|n] "
-read yn
-yn=${yn:-y}
-if [ "$yn" != "y" ]; then
-  echo "aborting script!"
-  exit
-fi
-
 _cwd="$(pwd)"
 
-echo -n "Create your user? [Y|n]"
-read yn
-yn=${yn:-y}
-if [ "$yn" == "y" ]; then
-	echo -n "Enter user name:"
-	read user
-	useradd -m -g users "$user"
-	passwd "$user"
-	echo "user $user created"
-	echo "$user	ALL=(ALL) ALL" >> /etc/sudoers
-	echo "$user added to sudoers"
-	su "$user"
-fi
+alpi_user(){
+  echo -n "Create your user? [Y|n]"
+  read yn
+  yn=${yn:-y}
+  if [ "$yn" == "y" ]; then
+    echo -n "Enter user name:"
+    read username
+    useradd -m -g users -G wheel -s /bin/bash ${username}
+    chfn ${username}
+    passwd ${username}
+    echo "user $username created"
+    echo "$username	ALL=(ALL) ALL" >> /etc/sudoers
+    echo "$username added to sudoers"
+    su ${username}
+  fi
+}
 
+# misc
+alpi_basics(){
+  sudo pacman -S --needed --noconfirm vim rsync acpi parted imagemagick lynx alsa-utils tmux git
+}
 
-# GPG
-echo 'Setup a gpg encripting'
-echo 'see https://wiki.archlinux.org/index.php/GnuPG'
-echo -n "create your gpg encrypting key? [Y|n] "
-read yn
-yn=${yn:-y}
-if [ "$yn" == "y" ]; then
-  gpg --full-gen-key
-fi
-
-# remove root autologin
-sudo sed -i.back 's/--autologin root //' /etc/systemd/system/getty@tty1.service.d/autologin.conf
-# remove root login
-sudo sed -i.back 's/#auth\srequired\spam_wheel.so\suse_uid/auth	required	spam_wheel.so use_uid/' /etc/pam.d/su
-sudo sed -i.back 's/#auth\srequired\spam_wheel.so\suse_uid/auth	required	spam_wheel.so use_uid/' /etc/pam.d/su-l
-
-# security
-sudo touch /etc/sysctl.d/50-dmesg-restrict.conf
-sudo sh -c "echo 'kernel.dmesg_restrict = 1' >> /etc/sysctl.d/50-dmesg-restrict.conf"
-sudo touch /etc/sysctl.d/50-kptr-restrict.con
-sudo sh -c "echo 'kernel.kptr_restrict = 1' >> /etc/sysctl.d/50-kptr-restrict.conf"
-
-echo 'ILoveCandy'
-sudo sed -i.back 's/.*\[options\].*/&\nILoveCandy/' /etc/pacman.conf
-sudo sed -i.back 's/^#Color$/Color/' /etc/pacman.conf
-
-# bash & prompt
-echo 'Bash and Prompt'
-git clone https://github.com/hojhan/liquidprompt.git -o github /home/$USER/.liquidprompt
-cp $_cwd/assets/bash_profile /home/$USER/.bash_profile
-cp $_cwd/assets/bashrc /home/$USER/.bashrc
-mkdir /home/$USER/.config
-cp $_cwd/assets/liquiprompt /home/$USER/.config/
-# sudo pacman -S --needed --noconfirm bash-completion
-source /home/$USER/.bashrc
-
-touch /home/$USER/.inputrc
-echo 'set show-all-if-ambiguous on' >> /home/$USER/.inputrc
-echo 'set completion-ignore-case on' >> /home/$USER/.inputrc
-
-
-# vim
-echo 'vim configuration'
-sleep 3
-cp $_cwp/assets/vim /home/$USER/.vim
-cp $_cwd/assets/vimrc /home/$USER/.vimrc
-sudo cp $_cwd/assets/vim /root/.vim
-sudo cp $_cwd/assets/vimrc /root/.vimrc
-
-echo 'Git Completion'
-sleep 3
-sudo pacman -S --needed --noconfirm bash-completion wget
-sudo mkdir /etc/bash_completion.d
-sudo wget -O /etc/bash_completion.d/git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
+alpi_cosmetics(){
+  # vim
+  echo 'vim configuration'
+  sudo pacman -S --needed --noconfirm vim-{spell-fr,spell-en,nerdtree,supertab,systemd}
+  cp $_cwp/assets/vim /home/$USER/.vim
+  cp $_cwd/assets/vimrc /home/$USER/.vimrc
+  sudo cp $_cwd/assets/vim /root/.vim
+  sudo cp $_cwd/assets/vimrc /root/.vimrc
 
+  echo 'Git Completion'
+  sudo pacman -S --needed --noconfirm bash-completion wget
+  sudo mkdir /etc/bash_completion.d
+  sudo wget -O /etc/bash_completion.d/git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
 
-# Yaourt
-echo -n "install Yaourt [Y|n] "
-read yaourt
-yaourt=${yaourt:-y}
-if [ "$yaourt" == "y" ]; then
-  sudo pacman -S --needed base-devel
-  mkdir -p /home/$USER/Developer/Linux/build-repos
-  wget -O /home/$USER/Developer/Linux/build-repos/package-query.tar.gz https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz
-  wget -O /home/$USER/Developer/Linux/build-repos/yaourt.tar.gz https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz
-  cd /home/$USER/Developer/Linux/build-repos
-  tar -xvf package-query.tar.gz
-  tar -xvf yaourt.tar.gz
-  cd package-query
-  makepkg -sri
-  cd ../yaourt
-  makepkg -sri
-  echo 'ask for editing config file before build'
-  echo "EDITFILES=1" >> ~/.yaourtrc
-fi
-
-# network & Bluetooth
-sudo pacman -S --needed --noconfirm networkmanager networkmanager-openvpn rfkill
-sudo systemctl enable NetworkManager
-sudo systemctl start NetworkManager
-sudo systemctl enable bluetooth
-sudo systemctl start bluetooth
+  # bash & prompt
+  echo 'Bash and Prompt'
+  git clone https://github.com/hojhan/liquidprompt.git -o github /home/$USER/.liquidprompt
+  cp $_cwd/assets/bash_profile /home/$USER/.bash_profile
+  cp $_cwd/assets/bashrc /home/$USER/.bashrc
+  mkdir /home/$USER/.config
+  cp $_cwd/assets/config/liquipromptrc /home/$USER/.config/
+  # sudo pacman -S --needed --noconfirm bash-completion
+  source /home/$USER/.bashrc
 
-# misc
-sudo pacman -S --needed --noconfirm rsync acpi parted imagemagick lynx alsa-utils
+  touch /home/$USER/.inputrc
+  echo 'set show-all-if-ambiguous on' >> /home/$USER/.inputrc
+  echo 'set completion-ignore-case on' >> /home/$USER/.inputrc
 
-if [ "$yaourt" == "y" ]; then
-  yaourt -S downgrade
-fi
+  echo 'ILoveCandy'
+  sudo sed -i.back 's/.*\[options\].*/&\nILoveCandy/' /etc/pacman.conf
+  sudo sed -i.back 's/^#Color$/Color/' /etc/pacman.conf
+}
+
+# GPG
+alpi_gnupg(){
+  echo 'Setup a gpg encripting'
+  echo 'see https://wiki.archlinux.org/index.php/GnuPG'
+  echo -n "create your gpg encrypting key? [Y|n] "
+  read yn
+  yn=${yn:-y}
+  if [ "$yn" == "y" ]; then
+    gpg --full-gen-key
+  fi
+}
+
+alpi_secure(){
+  # remove root autologin
+  sudo sed -i.back 's/--autologin root //' /etc/systemd/system/getty@tty1.service.d/autologin.conf
+  # remove root login
+  sudo sed -i.back 's/#auth\srequired\spam_wheel.so\suse_uid/auth	required	spam_wheel.so use_uid/' /etc/pam.d/su
+  sudo sed -i.back 's/#auth\srequired\spam_wheel.so\suse_uid/auth	required	spam_wheel.so use_uid/' /etc/pam.d/su-l
+
+  # security
+  sudo touch /etc/sysctl.d/50-dmesg-restrict.conf
+  sudo sh -c "echo 'kernel.dmesg_restrict = 1' >> /etc/sysctl.d/50-dmesg-restrict.conf"
+  sudo touch /etc/sysctl.d/50-kptr-restrict.con
+  sudo sh -c "echo 'kernel.kptr_restrict = 1' >> /etc/sysctl.d/50-kptr-restrict.conf"
+}
 
-# Display Manager
-echo -n "Switch linux kernel to long term support version (more stable)? [Y|n] "
-read yn
-yn=${yn:-y}
-if [ "$yn" == "y" ]; then
-  sudo pacman -S linux-lts linux-lts-headers
 
-fi
 # Display Manager
-echo -n "install Graphical Display Part 1 : Xorg server (you will have to reboot at the end of part 1)? [Y|n] "
-read yn
-yn=${yn:-y}
-if [ "$yn" == "y" ]; then
-  sudo pacman -S --needed --noconfirm xf86-video-intel
-  sudo pacman -S --needed --noconfirm nvidia
-  sudo pacman -S --needed --noconfirm bbswitch bumblebee
-  sudo pacman -S --needed --noconfirm mesa mesa-demos
-  sudo pacman -S --needed --noconfirm xorg-xinit
-  sudo gpasswd -a $USER bumblebee
-  sudo systemctl enable bumblebeed
-  sudo reboot
-fi
-
-echo -n "install Graphical Display Part 2 : Kde Plasma 5? [Y|n] "
-read yn
-yn=${yn:-y}
-if [ "$yn" == "y" ]; then
-  sudo pacman -S --needed --noconfirm --force plasma-meta
-  sudo pacman -S --needed --noconfirm ttf-{dejavu,liberationi,droid,ubuntu-font-family}
-fi
-
-echo "install basic packages? [Y|n]"
-read yn
-yn=${yn:-y}
-if [ "$yn" == "y" ]; then
-  sudo pacman -S --needed --noconfirm systemd-kcm bluedevil
-  sudo pacman -S --needed --noconfirm dolphin dolphin-plugins
-  echo 'install pim softwares'
-  sudo pacman -S --needed --noconfirm kmail korganizer kaddressbook kdeconnect pidgin
-  sudo pacman -S --needed --noconfirm spamassassin razor
-  sudo sa-update
-  echo "configure akonadi to use system wide sql server"
-  # https://forum.kde.org/viewtopic.php?t=84478#p140762
-  echo "please type your root mysql pass-word :"
-  read -s -p Password: pswd
-  mysql -u root -p$pswd -e "create database akonadi;"
-  mysql -u root -p$pswd -e "create user 'akonadi'@'localhost' identified by 'akonadi';"
-  mysql -u root -p$pswd -e "grant all privileges on akonadi.* to 'akonadi'@'localhost';"
-  mysql -u root -p$pswd -e "flush privileges;"
-  mv /home/$USER/.config/akonadi/akonadiserverrc /home/$USER/.config/akonadi/akonadiserverrc.back
-  cp $_cwd/assets/akonadiserverrc /home/$USER/.config/akonadi/
-
-  sudo pacman -S --needed --noconfirm chromium terminator gparted keepass
-  echo 'install office softwares'
-  sudo pacman -S --needed --noconfirm gwenview okular kipi-plugins libreoffice-fresh hunspell-{fr,en}
-  echo 'install media softwares'
-  sudo pacman -S --needed --noconfirm digikam darktable vlc lua-socket ktorrent banshee
-  echo 'install graphic softwares'
-  sudo pacman -S --needed --noconfirm inkscape gimp scribus fontforge blender
-  #echo 'install some more fonts'
-  #sudo pacman -S ttf-{,}
-  echo 'install cloud softwares'
-  sudo pacman -S --needed --noconfirm owncloud-client syncthing syncthing-gtk syncthing-inotify
-  echo 'increase inotify watch limit'
-  sleep 3
-  sudo cp $_cwd/assets/90-inotify.conf /etc/sysctl.d/
+alpi_xserver(){
+  echo -n "install Graphical Display Part 1 : Xorg server (you will have to reboot at the end of part 1)? [Y|n] "
+  read yn
+  yn=${yn:-y}
+  if [ "$yn" == "y" ]; then
+    # touch pad
+    sudo pacman -S --needed --noconfirm xf86-input-libinput
+    # integred gpu
+    sudo pacman -S --needed --noconfirm xf86-input-libinput xf86-video-intel
+    # discret gpu
+    sudo pacman -S --needed --noconfirm bbswitch bumblebee primus
+    sudo pacman -S --needed --noconfirm nvidia nvidia-utils
+    # xorg server
+    sudo pacman -S --needed --noconfirm xorg-xinit xorg-server-devel
+    sudo pacman -S --needed --noconfirm mesa mesa-demos
+    sudo gpasswd -a $USER bumblebee
+    sudo systemctl enable bumblebeed
+    sudo reboot
+  fi
+}
 
+alpi_plasma5(){
+  echo -n "install Graphical Display Part 2 : Kde Plasma 5? [Y|n] "
+  read yn
+  yn=${yn:-y}
+  if [ "$yn" == "y" ]; then
+    sudo pacman -S --needed --noconfirm --force plasma-meta
+    sudo pacman -S --needed --noconfirm ttf-{dejavu,liberation,droid,ubuntu-font-family}
+    # network & Bluetooth
+    sudo pacman -S --needed --noconfirm networkmanager-openvpn pulseaudio-alsa rfkill
+    sudo systemctl enable NetworkManager
+    sudo systemctl start NetworkManager
+    sudo systemctl enable bluetooth
+    sudo systemctl start bluetooth
+    touch /home/$USER/.xinitrc
+    echo 'exec startkde' > /home/$USER/.xinitrc
+  fi
+}
+
+# Yaourt
+alpi_yaourt(){
+  echo -n "install Yaourt [Y|n] "
+  read yaourt
+  yaourt=${yaourt:-y}
   if [ "$yaourt" == "y" ]; then
-    yaourt -S atom-editor
+    sudo pacman -S --needed base-devel
+    mkdir -p /home/$USER/Developer/Linux/build-repos
+    wget -O /home/$USER/Developer/Linux/build-repos/package-query.tar.gz https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz
+    wget -O /home/$USER/Developer/Linux/build-repos/yaourt.tar.gz https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz
+    cd /home/$USER/Developer/Linux/build-repos
+    tar -xvf package-query.tar.gz
+    tar -xvf yaourt.tar.gz
+    cd package-query
+    makepkg -sri
+    cd ../yaourt
+    makepkg -sri
+    echo 'ask for editing config file before build'
+    echo "EDITFILES=1" >> ~/.yaourtrc
   fi
-fi
+}
 
 
+# kernel LTS
+alpi_kernellts(){
+  echo -n "Switch linux kernel to long term support version (more stable)? [Y|n] "
+  read yn
+  yn=${yn:-y}
+  if [ "$yn" == "y" ]; then
+    sudo pacman -S linux-lts linux-lts-headers nvidia-lts
+    sudo grub-mkconfig -o /boot/grub/grub.cfg
+  fi
+}
+
+alpi_mysql(){
+    sudo pacman -S --needed --noconfirm mariadb
+    # configure mysql
+    sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
+    mysql_secure_installation
+    sudo sed -i.back 's/^log-bin=mysql-bin$/#&/' /etc/mysql/my.cnf
+    sudo sed -i.back 's/^max_allowed_packet.*$/max_allowed_packet = 16M/' /etc/mysql/my.cnf
+}
+
+# Packages
+alpi_defaultpkgs(){
+  # TODO : install and configure mariadb before that
+  echo "install basic packages? [Y|n]"
+  read yn
+  yn=${yn:-y}
+  if [ "$yn" == "y" ]; then
+    sudo pacman -S --needed --noconfirm systemd-kcm bluedevil
+    sudo pacman -S --needed --noconfirm dolphin dolphin-plugins
+    echo 'install pim softwares'
+    sudo pacman -S --needed --noconfirm kmail korganizer kaddressbook kdeconnect pidgin
+    sudo pacman -S --needed --noconfirm spamassassin razor
+    sudo sa-update
+
+    echo -n "Install regular mysql support for akonadi? [Y|n] "
+    read ako
+    ako=${ako:-y}
+    if [ "$ako" == "y" ]; then
+
+      echo -n "Should we install and configure mysql (if not already done)? [y|N] "
+      read sql
+      sql=${sql:-n}
+      if [ "$sql" == "y" ]; then
+        alpi_mysql
+      fi
+
+      # https://forum.kde.org/viewtopic.php?t=84478#p140762
+      echo "please type your root mysql pass-word :"
+      read -s -p Password: pswd
+      mysql -u root -p$pswd -e "create database akonadi;"
+      mysql -u root -p$pswd -e "create user 'akonadi'@'localhost' identified by 'akonadi';"
+      mysql -u root -p$pswd -e "grant all privileges on akonadi.* to 'akonadi'@'localhost';"
+      mysql -u root -p$pswd -e "flush privileges;"
+      # TODO : BUG create first the .config/akonadi folder
+      mv /home/$USER/.config/akonadi/akonadiserverrc /home/$USER/.config/akonadi/akonadiserverrc.back
+      cp $_cwd/assets/akonadiserverrc /home/$USER/.config/akonadi/
+    fi
+
+    sudo pacman -S --needed --noconfirm chromium terminator gparted keepass
+    echo 'install office softwares'
+    sudo pacman -S --needed --noconfirm gwenview kimageformats kdegraphics-okular kipi-plugins libreoffice-fresh hunspell-{fr,en}
+    echo 'install media softwares'
+    sudo pacman -S --needed --noconfirm digikam darktable vlc lua-socket ktorrent banshee
+    echo 'install graphic softwares'
+    sudo pacman -S --needed --noconfirm inkscape gimp scribus fontforge blender
+    #echo 'install some more fonts'
+    #sudo pacman -S ttf-{,}
+    echo 'install cloud softwares'
+    sudo pacman -S --needed --noconfirm owncloud-client syncthing syncthing-gtk syncthing-inotify
+    echo 'increase inotify watch limit'
+    sleep 3
+    sudo cp $_cwd/assets/90-inotify.conf /etc/sysctl.d/
+
+    if [ "$yaourt" == "y" ]; then
+      yaourt -S downgrade
+      yaourt -S atom-editor
+    fi
+  fi
+}
+
 # LAMP
-# https://wiki.archlinux.org/index.php/Apache_HTTP_Server
-echo -n "Install apache php mysql? [Y|n] "
-read yn
-yn=${yn:-y}
-if [ "$yn" == "y" ]; then
-  # install packages
-  sudo pacman -S --needed --noconfirm apache php php-apache mariadb phpmyadmin php-mcrypt
-  # configure apache
-  sudo sed -i.back 's/^LoadModule mpm_event_module modules\/mod_mpm_event\.so$/#&/' /etc/httpd/conf/httpd.conf
-  sudo sed -i.back 's/^#LoadModule mpm_prefork_module modules\/mod_mpm_prefork\.so$/LoadModule mpm_prefork_module modules\/mod_mpm_prefork.so/' /etc/httpd/conf/httpd.conf
-  sudo sed -i.back 's/^#LoadModule rewrite_module modules\/mod_rewrite\.so$/LoadModule rewrite_module modules\/mod_rewrite.so/' /etc/httpd/conf/httpd.conf
-  # configure vhosts folder
-  sudo mkdir /etc/httpd/conf/vhosts
-  sudo sed -i.back 's/^#Include conf\/extra\/httpd-vhosts\.conf$/&\nInclude conf\/vhosts\/*.conf/' /etc/httpd/conf/httpd.conf
-  # configure apache for php
-  sudo sed -i.back 's/^LoadModule dir_module modules\/mod_dir\.so$/&\nLoadModule php5_module modules\/libphp5.so/' /etc/httpd/conf/httpd.conf
-  sudo sh -c "echo 'Include conf/extra/php5_module.conf' >> /etc/httpd/conf/httpd.conf"
-  # configure php
-  sudo sed -i.back 's/^memory_limit.*$/memory_limit = 512M/' /etc/php/php.ini
-  sudo sed -i.back 's/^error_reporting.*$/error_reporting = E_ALL \& ~E_NOTICE/' /etc/php/php.ini
-  sudo sed -i.back 's/;extension=gd\.so/extension=gd.so/' /etc/php/php.ini
-  # configure php for mysql
-  sudo sed -i.back 's/;extension=pdo_mysql\.so/extension=pdo_mysql.so/' /etc/php/php.ini
-  # configure mysql
-  sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
-  mysql_secure_installation
-  sudo sed -i.back 's/^log-bin=mysql-bin$/#&/' /etc/mysql/my.cnf
-  sudo sed -i.back 's/^max_allowed_packet.*$/max_allowed_packet = 16M/' /etc/mysql/my.cnf
-  # configure phpmyadmin
-  sudo sed -i.back 's/;extension=mcrypt\.so/extension=mcrypt.so/' /etc/php/php.ini
-  sudo sed -i.back 's/;extension=bz2\.so/extension=bz2.so/' /etc/php/php.ini
-  sudo sed -i.back 's/;extension=zip\.so/extension=zip.so/' /etc/php/php.ini
-  sudo sed -i.back 's/^open_basedir = .*$/&:\/etc\/webapps\//' /etc/php/php.ini
-  # todo : add custom basedir
-  # todo : instal drush
-fi
+alpi_lamp(){
+  # https://wiki.archlinux.org/index.php/Apache_HTTP_Server
+  echo -n "Install apache php mysql? [Y|n] "
+  read yn
+  yn=${yn:-y}
+  if [ "$yn" == "y" ]; then
+    # install packages
+    sudo pacman -S --needed --noconfirm apache php php-apache phpmyadmin php-mcrypt
+    echo -n "Should we install and configure mysql (if not already done)? [y|N] "
+    read sql
+    sql=${sql:-n}
+    if [ "$sql" == "y" ]; then
+      alpi_mysql
+    fi
+    # configure apache
+    sudo sed -i.back 's/^LoadModule mpm_event_module modules\/mod_mpm_event\.so$/#&/' /etc/httpd/conf/httpd.conf
+    sudo sed -i.back 's/^#LoadModule mpm_prefork_module modules\/mod_mpm_prefork\.so$/LoadModule mpm_prefork_module modules\/mod_mpm_prefork.so/' /etc/httpd/conf/httpd.conf
+    sudo sed -i.back 's/^#LoadModule rewrite_module modules\/mod_rewrite\.so$/LoadModule rewrite_module modules\/mod_rewrite.so/' /etc/httpd/conf/httpd.conf
+    # configure vhosts folder
+    sudo mkdir /etc/httpd/conf/vhosts
+    sudo sed -i.back 's/^#Include conf\/extra\/httpd-vhosts\.conf$/&\nInclude conf\/vhosts\/*.conf/' /etc/httpd/conf/httpd.conf
+    # configure apache for php
+    sudo sed -i.back 's/^LoadModule dir_module modules\/mod_dir\.so$/&\nLoadModule php5_module modules\/libphp5.so/' /etc/httpd/conf/httpd.conf
+    sudo sh -c "echo 'Include conf/extra/php5_module.conf' >> /etc/httpd/conf/httpd.conf"
+    # configure php
+    sudo sed -i.back 's/^memory_limit.*$/memory_limit = 512M/' /etc/php/php.ini
+    sudo sed -i.back 's/^error_reporting.*$/error_reporting = E_ALL \& ~E_NOTICE/' /etc/php/php.ini
+    sudo sed -i.back 's/;extension=gd\.so/extension=gd.so/' /etc/php/php.ini
+    # configure php for mysql
+    sudo sed -i.back 's/;extension=pdo_mysql\.so/extension=pdo_mysql.so/' /etc/php/php.ini
+
+    # configure phpmyadmin
+    sudo sed -i.back 's/;extension=mcrypt\.so/extension=mcrypt.so/' /etc/php/php.ini
+    sudo sed -i.back 's/;extension=bz2\.so/extension=bz2.so/' /etc/php/php.ini
+    sudo sed -i.back 's/;extension=zip\.so/extension=zip.so/' /etc/php/php.ini
+    sudo sed -i.back 's/^open_basedir = .*$/&:\/etc\/webapps\//' /etc/php/php.ini
+
+    echo -n "Should we configure custom basedir folder? [Y|n] "
+    read bd
+    sql=${bd:-y}
+    if [ "$bd" == "y" ]; then
+      echo -n "Please enter the basedir path"
+      read basedir
+      sudo sed -i.back "s/^open_basedir = .*$/&:${basedir}/" /etc/php/php.ini
+    fi
+    # TODO : instal drush
+  fi
+}
 
 # END
-echo -n "Reboot? [Y|n] "
-read yn
-yn=${yn:-y}
-if [ "$yn" != "y" ]; then
-  echo "please reboot"
-  exit
-fi
-
-reboot
+alpi_end(){
+  echo -n "Reboot? [Y|n] "
+  read yn
+  yn=${yn:-y}
+  if [ "$yn" != "y" ]; then
+    echo "depending on what you've done you may need to reboot"
+    exit
+  fi
+
+  reboot
+}
+
+
+while true
+do
+  echo -e "choosse action (preferably in order)\n"
+  action_list=("create user" "install basics" "cosmetics" "create gnupgp key" "secure the system" "install Xorg Server" "install Plasma 5 (kde)" "yaourt" "switch to LTS kernel" "install default packages" "install lamp" "end");
+  select action in "${action_list[@]}"; do
+    case "$REPLY" in
+      1)
+        alpi_user
+        ;;
+      2)
+        alpi_basics
+        ;;
+      3)
+        alpi_cosmetics
+        ;;
+      4)
+        alpi_gnupg
+        ;;
+      5)
+        alpi_secure
+        ;;
+      6)
+        alpi_xserver
+        ;;
+      7)
+        alpi_plasma5
+        ;;
+      8)
+        alpi_yaourt
+        ;;
+      9)
+        alpi_kernellts
+        ;;
+      10)
+        alpi_defaultpkgs
+        ;;
+      11)
+        alpi_lamp
+        ;;
+      12)
+        alpi_end
+        ;;
+    esac
+    [[ -n $OPT ]] && break
+  done
+done