added functions and menu, made some tests

This commit is contained in:
Bachir Soussi Chiadmi
2016-01-02 12:54:54 +01:00
parent f6f9bb1ae7
commit 95fb5278c9
+197 -96
View File
@@ -1,33 +1,66 @@
#! /bin/sh #! /bin/bash
echo 'Arch Linux Postinstall' 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)" _cwd="$(pwd)"
alpi_user(){
echo -n "Create your user? [Y|n]" echo -n "Create your user? [Y|n]"
read yn read yn
yn=${yn:-y} yn=${yn:-y}
if [ "$yn" == "y" ]; then if [ "$yn" == "y" ]; then
echo -n "Enter user name:" echo -n "Enter user name:"
read user read username
useradd -m -g users "$user" useradd -m -g users -G wheel -s /bin/bash ${username}
passwd "$user" chfn ${username}
echo "user $user created" passwd ${username}
echo "$user ALL=(ALL) ALL" >> /etc/sudoers echo "user $username created"
echo "$user added to sudoers" echo "$username ALL=(ALL) ALL" >> /etc/sudoers
su "$user" echo "$username added to sudoers"
su ${username}
fi fi
}
# misc
alpi_basics(){
sudo pacman -S --needed --noconfirm vim rsync acpi parted imagemagick lynx alsa-utils tmux git
}
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
# 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
touch /home/$USER/.inputrc
echo 'set show-all-if-ambiguous on' >> /home/$USER/.inputrc
echo 'set completion-ignore-case on' >> /home/$USER/.inputrc
echo 'ILoveCandy'
sudo sed -i.back 's/.*\[options\].*/&\nILoveCandy/' /etc/pacman.conf
sudo sed -i.back 's/^#Color$/Color/' /etc/pacman.conf
}
# GPG # GPG
alpi_gnupg(){
echo 'Setup a gpg encripting' echo 'Setup a gpg encripting'
echo 'see https://wiki.archlinux.org/index.php/GnuPG' echo 'see https://wiki.archlinux.org/index.php/GnuPG'
echo -n "create your gpg encrypting key? [Y|n] " echo -n "create your gpg encrypting key? [Y|n] "
@@ -36,7 +69,9 @@ yn=${yn:-y}
if [ "$yn" == "y" ]; then if [ "$yn" == "y" ]; then
gpg --full-gen-key gpg --full-gen-key
fi fi
}
alpi_secure(){
# remove root autologin # remove root autologin
sudo sed -i.back 's/--autologin root //' /etc/systemd/system/getty@tty1.service.d/autologin.conf sudo sed -i.back 's/--autologin root //' /etc/systemd/system/getty@tty1.service.d/autologin.conf
# remove root login # remove root login
@@ -48,42 +83,51 @@ 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 sh -c "echo 'kernel.dmesg_restrict = 1' >> /etc/sysctl.d/50-dmesg-restrict.conf"
sudo touch /etc/sysctl.d/50-kptr-restrict.con sudo touch /etc/sysctl.d/50-kptr-restrict.con
sudo sh -c "echo 'kernel.kptr_restrict = 1' >> /etc/sysctl.d/50-kptr-restrict.conf" 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 # Display Manager
echo 'vim configuration' alpi_xserver(){
sleep 3 echo -n "install Graphical Display Part 1 : Xorg server (you will have to reboot at the end of part 1)? [Y|n] "
cp $_cwp/assets/vim /home/$USER/.vim read yn
cp $_cwd/assets/vimrc /home/$USER/.vimrc yn=${yn:-y}
sudo cp $_cwd/assets/vim /root/.vim if [ "$yn" == "y" ]; then
sudo cp $_cwd/assets/vimrc /root/.vimrc # touch pad
sudo pacman -S --needed --noconfirm xf86-input-libinput
echo 'Git Completion' # integred gpu
sleep 3 sudo pacman -S --needed --noconfirm xf86-input-libinput xf86-video-intel
sudo pacman -S --needed --noconfirm bash-completion wget # discret gpu
sudo mkdir /etc/bash_completion.d sudo pacman -S --needed --noconfirm bbswitch bumblebee primus
sudo wget -O /etc/bash_completion.d/git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash 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 # Yaourt
alpi_yaourt(){
echo -n "install Yaourt [Y|n] " echo -n "install Yaourt [Y|n] "
read yaourt read yaourt
yaourt=${yaourt:-y} yaourt=${yaourt:-y}
@@ -102,52 +146,32 @@ if [ "$yaourt" == "y" ]; then
echo 'ask for editing config file before build' echo 'ask for editing config file before build'
echo "EDITFILES=1" >> ~/.yaourtrc echo "EDITFILES=1" >> ~/.yaourtrc
fi 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
# misc # kernel LTS
sudo pacman -S --needed --noconfirm rsync acpi parted imagemagick lynx alsa-utils alpi_kernellts(){
if [ "$yaourt" == "y" ]; then
yaourt -S downgrade
fi
# Display Manager
echo -n "Switch linux kernel to long term support version (more stable)? [Y|n] " echo -n "Switch linux kernel to long term support version (more stable)? [Y|n] "
read yn read yn
yn=${yn:-y} yn=${yn:-y}
if [ "$yn" == "y" ]; then if [ "$yn" == "y" ]; then
sudo pacman -S linux-lts linux-lts-headers sudo pacman -S linux-lts linux-lts-headers nvidia-lts
sudo grub-mkconfig -o /boot/grub/grub.cfg
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 fi
}
echo -n "install Graphical Display Part 2 : Kde Plasma 5? [Y|n] " alpi_mysql(){
read yn sudo pacman -S --needed --noconfirm mariadb
yn=${yn:-y} # configure mysql
if [ "$yn" == "y" ]; then sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
sudo pacman -S --needed --noconfirm --force plasma-meta mysql_secure_installation
sudo pacman -S --needed --noconfirm ttf-{dejavu,liberationi,droid,ubuntu-font-family} sudo sed -i.back 's/^log-bin=mysql-bin$/#&/' /etc/mysql/my.cnf
fi 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]" echo "install basic packages? [Y|n]"
read yn read yn
yn=${yn:-y} yn=${yn:-y}
@@ -158,7 +182,19 @@ if [ "$yn" == "y" ]; then
sudo pacman -S --needed --noconfirm kmail korganizer kaddressbook kdeconnect pidgin sudo pacman -S --needed --noconfirm kmail korganizer kaddressbook kdeconnect pidgin
sudo pacman -S --needed --noconfirm spamassassin razor sudo pacman -S --needed --noconfirm spamassassin razor
sudo sa-update sudo sa-update
echo "configure akonadi to use system wide sql server"
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 # https://forum.kde.org/viewtopic.php?t=84478#p140762
echo "please type your root mysql pass-word :" echo "please type your root mysql pass-word :"
read -s -p Password: pswd read -s -p Password: pswd
@@ -166,12 +202,14 @@ if [ "$yn" == "y" ]; then
mysql -u root -p$pswd -e "create user 'akonadi'@'localhost' identified by '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 "grant all privileges on akonadi.* to 'akonadi'@'localhost';"
mysql -u root -p$pswd -e "flush privileges;" 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 mv /home/$USER/.config/akonadi/akonadiserverrc /home/$USER/.config/akonadi/akonadiserverrc.back
cp $_cwd/assets/akonadiserverrc /home/$USER/.config/akonadi/ cp $_cwd/assets/akonadiserverrc /home/$USER/.config/akonadi/
fi
sudo pacman -S --needed --noconfirm chromium terminator gparted keepass sudo pacman -S --needed --noconfirm chromium terminator gparted keepass
echo 'install office softwares' echo 'install office softwares'
sudo pacman -S --needed --noconfirm gwenview okular kipi-plugins libreoffice-fresh hunspell-{fr,en} sudo pacman -S --needed --noconfirm gwenview kimageformats kdegraphics-okular kipi-plugins libreoffice-fresh hunspell-{fr,en}
echo 'install media softwares' echo 'install media softwares'
sudo pacman -S --needed --noconfirm digikam darktable vlc lua-socket ktorrent banshee sudo pacman -S --needed --noconfirm digikam darktable vlc lua-socket ktorrent banshee
echo 'install graphic softwares' echo 'install graphic softwares'
@@ -185,19 +223,27 @@ if [ "$yn" == "y" ]; then
sudo cp $_cwd/assets/90-inotify.conf /etc/sysctl.d/ sudo cp $_cwd/assets/90-inotify.conf /etc/sysctl.d/
if [ "$yaourt" == "y" ]; then if [ "$yaourt" == "y" ]; then
yaourt -S downgrade
yaourt -S atom-editor yaourt -S atom-editor
fi fi
fi fi
}
# LAMP # LAMP
alpi_lamp(){
# https://wiki.archlinux.org/index.php/Apache_HTTP_Server # https://wiki.archlinux.org/index.php/Apache_HTTP_Server
echo -n "Install apache php mysql? [Y|n] " echo -n "Install apache php mysql? [Y|n] "
read yn read yn
yn=${yn:-y} yn=${yn:-y}
if [ "$yn" == "y" ]; then if [ "$yn" == "y" ]; then
# install packages # install packages
sudo pacman -S --needed --noconfirm apache php php-apache mariadb phpmyadmin php-mcrypt 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 # 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_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 mpm_prefork_module modules\/mod_mpm_prefork\.so$/LoadModule mpm_prefork_module modules\/mod_mpm_prefork.so/' /etc/httpd/conf/httpd.conf
@@ -214,27 +260,82 @@ if [ "$yn" == "y" ]; then
sudo sed -i.back 's/;extension=gd\.so/extension=gd.so/' /etc/php/php.ini sudo sed -i.back 's/;extension=gd\.so/extension=gd.so/' /etc/php/php.ini
# configure php for mysql # configure php for mysql
sudo sed -i.back 's/;extension=pdo_mysql\.so/extension=pdo_mysql.so/' /etc/php/php.ini 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 # configure phpmyadmin
sudo sed -i.back 's/;extension=mcrypt\.so/extension=mcrypt.so/' /etc/php/php.ini 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=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/;extension=zip\.so/extension=zip.so/' /etc/php/php.ini
sudo sed -i.back 's/^open_basedir = .*$/&:\/etc\/webapps\//' /etc/php/php.ini sudo sed -i.back 's/^open_basedir = .*$/&:\/etc\/webapps\//' /etc/php/php.ini
# todo : add custom basedir
# todo : instal drush 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 fi
# TODO : instal drush
fi
}
# END # END
alpi_end(){
echo -n "Reboot? [Y|n] " echo -n "Reboot? [Y|n] "
read yn read yn
yn=${yn:-y} yn=${yn:-y}
if [ "$yn" != "y" ]; then if [ "$yn" != "y" ]; then
echo "please reboot" echo "depending on what you've done you may need to reboot"
exit exit
fi fi
reboot 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