post-install.sh 7.0 KB

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