post-install.sh 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. #! /bin/sh
  2. echo 'Arch Linux Postinstall'
  3. echo -n "Should we start? [Y|n] "
  4. read yn
  5. yn=${yn:-y}
  6. if [ "$yn" != "y" ]; then
  7. echo "aborting script!"
  8. exit
  9. fi
  10. _cwd="$(pwd)"
  11. echo -n "Create your user? [Y|n]"
  12. read yn
  13. yn=${yn:-y}
  14. if [ "$yn" == "y" ]; then
  15. echo -n "Enter user name:"
  16. read user
  17. useradd -m -g users "$user"
  18. passwd "$user"
  19. echo "user $user created"
  20. echo "$user ALL=(ALL) ALL" >> /etc/sudoers
  21. echo "$user added to sudoers"
  22. su "$user"
  23. fi
  24. # GPG
  25. echo 'Setup a gpg encripting'
  26. echo 'see https://wiki.archlinux.org/index.php/GnuPG'
  27. echo -n "create your gpg encrypting key? [Y|n] "
  28. read yn
  29. yn=${yn:-y}
  30. if [ "$yn" == "y" ]; then
  31. gpg --full-gen-key
  32. fi
  33. # remove root autologin
  34. sudo sed -i.back 's/--autologin root //' /etc/systemd/system/getty@tty1.service.d/autologin.conf
  35. # remove root login
  36. sudo sed -i.back 's/#auth\srequired\spam_wheel.so\suse_uid/auth required spam_wheel.so use_uid/' /etc/pam.d/su
  37. sudo sed -i.back 's/#auth\srequired\spam_wheel.so\suse_uid/auth required spam_wheel.so use_uid/' /etc/pam.d/su-l
  38. # security
  39. sudo touch /etc/sysctl.d/50-dmesg-restrict.conf
  40. sudo sh -c "echo 'kernel.dmesg_restrict = 1' >> /etc/sysctl.d/50-dmesg-restrict.conf"
  41. sudo touch /etc/sysctl.d/50-kptr-restrict.con
  42. sudo sh -c "echo 'kernel.kptr_restrict = 1' >> /etc/sysctl.d/50-kptr-restrict.conf"
  43. echo 'ILoveCandy'
  44. sudo sed -i.back 's/.*\[options\].*/&\nILoveCandy/' /etc/pacman.conf
  45. sudo sed -i.back 's/^#Color$/Color/' /etc/pacman.conf
  46. # bash & prompt
  47. echo 'Bash and Prompt'
  48. git clone https://github.com/hojhan/liquidprompt.git -o github /home/$USER/.liquidprompt
  49. cp $_cwd/assets/bash_profile /home/$USER/.bash_profile
  50. cp $_cwd/assets/bashrc /home/$USER/.bashrc
  51. mkdir /home/$USER/.config
  52. cp $_cwd/assets/liquiprompt /home/$USER/.config/
  53. # sudo pacman -S --needed --noconfirm bash-completion
  54. source /home/$USER/.bashrc
  55. touch /home/$USER/.inputrc
  56. echo 'set show-all-if-ambiguous on' >> /home/$USER/.inputrc
  57. echo 'set completion-ignore-case on' >> /home/$USER/.inputrc
  58. # vim
  59. echo 'vim configuration'
  60. sleep 3
  61. cp $_cwp/assets/vim /home/$USER/.vim
  62. cp $_cwd/assets/vimrc /home/$USER/.vimrc
  63. sudo cp $_cwd/assets/vim /root/.vim
  64. sudo cp $_cwd/assets/vimrc /root/.vimrc
  65. echo 'Git Completion'
  66. sleep 3
  67. sudo pacman -S --needed --noconfirm bash-completion wget
  68. sudo mkdir /etc/bash_completion.d
  69. sudo wget -O /etc/bash_completion.d/git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
  70. # Yaourt
  71. echo -n "install Yaourt [Y|n] "
  72. read yaourt
  73. yaourt=${yaourt:-y}
  74. if [ "$yaourt" == "y" ]; then
  75. sudo pacman -S --needed base-devel
  76. mkdir -p /home/$USER/Developer/Linux/build-repos
  77. wget -O /home/$USER/Developer/Linux/build-repos/package-query.tar.gz https://aur.archlinux.org/cgit/aur.git/snapshot/package-query.tar.gz
  78. wget -O /home/$USER/Developer/Linux/build-repos/yaourt.tar.gz https://aur.archlinux.org/cgit/aur.git/snapshot/yaourt.tar.gz
  79. cd /home/$USER/Developer/Linux/build-repos
  80. tar -xvf package-query.tar.gz
  81. tar -xvf yaourt.tar.gz
  82. cd package-query
  83. makepkg -sri
  84. cd ../yaourt
  85. makepkg -sri
  86. echo 'ask for editing config file before build'
  87. echo "EDITFILES=1" >> ~/.yaourtrc
  88. fi
  89. # network & Bluetooth
  90. sudo pacman -S --needed --noconfirm networkmanager networkmanager-openvpn rfkill
  91. sudo systemctl enable NetworkManager
  92. sudo systemctl start NetworkManager
  93. sudo systemctl enable bluetooth
  94. sudo systemctl start bluetooth
  95. # misc
  96. sudo pacman -S --needed --noconfirm rsync acpi parted imagemagick lynx alsa-utils
  97. if [ "$yaourt" == "y" ]; then
  98. yaourt -S downgrade
  99. fi
  100. # Display Manager
  101. echo -n "Switch linux kernel to long term support version (more stable)? [Y|n] "
  102. read yn
  103. yn=${yn:-y}
  104. if [ "$yn" == "y" ]; then
  105. sudo pacman -S linux-lts linux-lts-headers
  106. fi
  107. # Display Manager
  108. echo -n "install Graphical Display Part 1 : Xorg server (you will have to reboot at the end of part 1)? [Y|n] "
  109. read yn
  110. yn=${yn:-y}
  111. if [ "$yn" == "y" ]; then
  112. sudo pacman -S --needed --noconfirm xf86-video-intel
  113. sudo pacman -S --needed --noconfirm nvidia
  114. sudo pacman -S --needed --noconfirm bbswitch bumblebee
  115. sudo pacman -S --needed --noconfirm mesa mesa-demos
  116. sudo pacman -S --needed --noconfirm xorg-xinit
  117. sudo gpasswd -a $USER bumblebee
  118. sudo systemctl enable bumblebeed
  119. sudo reboot
  120. fi
  121. echo -n "install Graphical Display Part 2 : Kde Plasma 5? [Y|n] "
  122. read yn
  123. yn=${yn:-y}
  124. if [ "$yn" == "y" ]; then
  125. sudo pacman -S --needed --noconfirm --force plasma-meta
  126. sudo pacman -S --needed --noconfirm ttf-{dejavu,liberationi,droid,ubuntu-font-family}
  127. fi
  128. echo "install basic packages? [Y|n]"
  129. read yn
  130. yn=${yn:-y}
  131. if [ "$yn" == "y" ]; then
  132. sudo pacman -S --needed --noconfirm systemd-kcm bluedevil
  133. sudo pacman -S --needed --noconfirm dolphin dolphin-plugins
  134. echo 'install pim softwares'
  135. sudo pacman -S --needed --noconfirm kmail korganizer kaddressbook kdeconnect pidgin
  136. sudo pacman -S --needed --noconfirm spamassassin razor
  137. sudo sa-update
  138. echo "configure akonadi to use system wide sql server"
  139. # https://forum.kde.org/viewtopic.php?t=84478#p140762
  140. echo "please type your root mysql pass-word :"
  141. read -s -p Password: pswd
  142. mysql -u root -p$pswd -e "create database akonadi;"
  143. mysql -u root -p$pswd -e "create user 'akonadi'@'localhost' identified by 'akonadi';"
  144. mysql -u root -p$pswd -e "grant all privileges on akonadi.* to 'akonadi'@'localhost';"
  145. mysql -u root -p$pswd -e "flush privileges;"
  146. mv /home/$USER/.config/akonadi/akonadiserverrc /home/$USER/.config/akonadi/akonadiserverrc.back
  147. cp $_cwd/assets/akonadiserverrc /home/$USER/.config/akonadi/
  148. sudo pacman -S --needed --noconfirm chromium terminator gparted keepass
  149. echo 'install office softwares'
  150. sudo pacman -S --needed --noconfirm gwenview okular kipi-plugins libreoffice-fresh hunspell-{fr,en}
  151. echo 'install media softwares'
  152. sudo pacman -S --needed --noconfirm digikam darktable vlc lua-socket ktorrent banshee
  153. echo 'install graphic softwares'
  154. sudo pacman -S --needed --noconfirm inkscape gimp scribus fontforge blender
  155. #echo 'install some more fonts'
  156. #sudo pacman -S ttf-{,}
  157. echo 'install cloud softwares'
  158. sudo pacman -S --needed --noconfirm owncloud-client syncthing syncthing-gtk syncthing-inotify
  159. echo 'increase inotify watch limit'
  160. sleep 3
  161. sudo cp $_cwd/assets/90-inotify.conf /etc/sysctl.d/
  162. if [ "$yaourt" == "y" ]; then
  163. yaourt -S atom-editor
  164. fi
  165. fi
  166. # LAMP
  167. # https://wiki.archlinux.org/index.php/Apache_HTTP_Server
  168. echo -n "Install apache php mysql? [Y|n] "
  169. read yn
  170. yn=${yn:-y}
  171. if [ "$yn" == "y" ]; then
  172. # install packages
  173. sudo pacman -S --needed --noconfirm apache php php-apache mariadb phpmyadmin php-mcrypt
  174. # configure apache
  175. sudo sed -i.back 's/^LoadModule mpm_event_module modules\/mod_mpm_event\.so$/#&/' /etc/httpd/conf/httpd.conf
  176. 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
  177. sudo sed -i.back 's/^#LoadModule rewrite_module modules\/mod_rewrite\.so$/LoadModule rewrite_module modules\/mod_rewrite.so/' /etc/httpd/conf/httpd.conf
  178. # configure vhosts folder
  179. sudo mkdir /etc/httpd/conf/vhosts
  180. sudo sed -i.back 's/^#Include conf\/extra\/httpd-vhosts\.conf$/&\nInclude conf\/vhosts\/*.conf/' /etc/httpd/conf/httpd.conf
  181. # configure apache for php
  182. sudo sed -i.back 's/^LoadModule dir_module modules\/mod_dir\.so$/&\nLoadModule php5_module modules\/libphp5.so/' /etc/httpd/conf/httpd.conf
  183. sudo sh -c "echo 'Include conf/extra/php5_module.conf' >> /etc/httpd/conf/httpd.conf"
  184. # configure php
  185. sudo sed -i.back 's/^memory_limit.*$/memory_limit = 512M/' /etc/php/php.ini
  186. sudo sed -i.back 's/^error_reporting.*$/error_reporting = E_ALL \& ~E_NOTICE/' /etc/php/php.ini
  187. sudo sed -i.back 's/;extension=gd\.so/extension=gd.so/' /etc/php/php.ini
  188. # configure php for mysql
  189. sudo sed -i.back 's/;extension=pdo_mysql\.so/extension=pdo_mysql.so/' /etc/php/php.ini
  190. # configure mysql
  191. sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
  192. mysql_secure_installation
  193. sudo sed -i.back 's/^log-bin=mysql-bin$/#&/' /etc/mysql/my.cnf
  194. sudo sed -i.back 's/^max_allowed_packet.*$/max_allowed_packet = 16M/' /etc/mysql/my.cnf
  195. # configure phpmyadmin
  196. sudo sed -i.back 's/;extension=mcrypt\.so/extension=mcrypt.so/' /etc/php/php.ini
  197. sudo sed -i.back 's/;extension=bz2\.so/extension=bz2.so/' /etc/php/php.ini
  198. sudo sed -i.back 's/;extension=zip\.so/extension=zip.so/' /etc/php/php.ini
  199. sudo sed -i.back 's/^open_basedir = .*$/&:\/etc\/webapps\//' /etc/php/php.ini
  200. # todo : add custom basedir
  201. # todo : instal drush
  202. fi
  203. # END
  204. echo -n "Reboot? [Y|n] "
  205. read yn
  206. yn=${yn:-y}
  207. if [ "$yn" != "y" ]; then
  208. echo "please reboot"
  209. exit
  210. fi
  211. reboot