Advertisement
Guest User

arch linux install script

a guest
May 27th, 2015
938
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 24.61 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. grub_disk=/dev/sda
  4. boot_diskpart=${grub_disk}1
  5. root_diskpart=${grub_disk}2
  6. swap_diskpart=${grub_disk}3
  7. home_diskpart=${grub_disk}4
  8. #swap_filesize=4G
  9. #swap_filename=/swapfile
  10.  
  11. mylogin=username
  12. myhostname=${mylogin}-pc
  13. mypass=password
  14. rootpass=$mypass
  15. myvncpass=password
  16.  
  17. autologin=0
  18.  
  19. packages+=" openssh"
  20. packages+=" memtest86+ os-prober"
  21. packages+=" lightdm lightdm-gtk3-greeter"
  22. packages+=" xorg-server xorg-xinit xorg-server-utils xorg-utils xcursor-themes xf86-video-vesa xf86-video-fbdev"
  23. packages+=" xf86-input-synaptics network-manager-applet"
  24. packages+=" xf86-video-intel"
  25. #packages+=" xf86-video-nouveau"
  26. #packages+=" xf86-video-ati"
  27.  
  28. packages+=" xcursor-vanilla-dmz"
  29. packages+=" i3 dmenu lxtask"
  30. packages+=" ntp"
  31. packages+=" samba"
  32. packages+=" pulseaudio pulseaudio-alsa alsa-utils pavucontrol"
  33.  
  34. packages+=" ntfs-3g dosfstools fuse-exfat exfat-utils ntfsprogs"
  35. packages+=" wget unrar unzip p7zip unace lrzip"
  36. packages+=" htop lsof"
  37.  
  38. packages+=" file-roller gksu viewnior pinta librsvg fbreader evince chromium vlc"
  39. packages+=" thunar-archive-plugin thunar-media-tags-plugin thunar-volman ffmpegthumbnailer tumbler gvfs gvfs-smb polkit-gnome gamin"
  40. packages+=" terminator scite transmission-gtk"
  41.  
  42. packages+=" x11vnc tk"
  43. packages+=" numlockx ethtool hdparm xautolock"
  44.  
  45. packages+=" cups system-config-printer"
  46. #packages+=" foomatic-db-nonfree"
  47. #packages+=" splix"
  48. #packages+=" gutenprint"
  49. #packages+=" hplip"
  50.  
  51. packages+=" ttf-dejavu ttf-sazanami"
  52.  
  53. packages+=" emacs emacs-php-mode emacs-lua-mode emacs-haskell-mode"
  54. packages+=" mercurial git svn cvs bzr premake cmake scons"
  55. packages+=" python chicken swi-prolog"
  56.  
  57. #packages+=" texlive-most"
  58. #packages+=" erlang ocaml ghc lua sbt scala racket apache-ant sbcl bigloo boost clang"
  59.  
  60. #packages+=" kdenetwork-krdc libvncserver kdepimlibs"
  61. #packages+=" libreoffice-writer libreoffice-en-GB"
  62. #packages+=" lighttpd fcgi php php-cgi"
  63. #packages+=" mariadb"
  64. #packages+=" virtualbox linux-headers qt dkms virtualbox-host-dkms virtualbox-ext-vnc"
  65. #packages+=" python2-nltk nltk-data python2-beautifulsoup4 python2-chardet python2-lxml"
  66. #packages+=" winetricks zenity wine mpg123 wmctrl lib32-ncurses"
  67. #packages+=" mythtv"
  68.  
  69. function setup_apps() {
  70.     setup_ssh
  71.     setup_ntp
  72.     setup_lightdm
  73.     setup_xserver
  74.     setup_i3
  75.     setup_samba
  76.     setup_scite
  77.     setup_terminator
  78.     setup_whitecursor
  79.     setup_gtk
  80.     setup_mousepad
  81.     setup_power
  82.     setup_swiprolog
  83.     setup_pulseaudio
  84.     setup_x11vnc
  85.     setup_cups
  86.    
  87.     #setup_lighttpd
  88.     #setup_mysql
  89.     #setup_virtualbox  
  90.  
  91.     #add_other_mount "/dev/sdb1" "/mnt/c" "ntfs-3g"
  92.     #symlink_caches_to_tmp()
  93. }
  94.  
  95. ###################################################
  96.  
  97. err_report() {
  98.     echo "Error on line $1"
  99. }
  100.  
  101. trap 'err_report $LINENO' ERR
  102.  
  103. set -e
  104.  
  105. installer=$(dirname $0)/$(basename $0)
  106. HOME=/home/$mylogin
  107.  
  108. function get_uuid() {
  109.     echo `blkid -s UUID $1 | sed -n 's/.*UUID=\"\([^\"]*\)\".*/\1/p'`
  110. }
  111.  
  112. function get_escaped() {
  113.     echo `echo "$1" | sed 's/\//\\\\\//g'`
  114. }
  115.  
  116. function create_swap_file() {
  117.     file=$1
  118.     size=$2
  119.     fallocate -l $size $file
  120.     #dd if=/dev/zero of=$name bs=1M count=$size
  121.     chmod 600 $file
  122.     mkswap $file
  123. }
  124.  
  125. function os() {
  126.     #format/mount root
  127.     mkfs.ext4 $root_diskpart
  128.     mount $root_diskpart /mnt
  129.     mkdir -p /mnt/home
  130.  
  131.     #format/mount boot
  132.     if [ $boot_diskpart ]; then
  133.         mkfs.ext4 $boot_diskpart
  134.         mkdir -p /mnt/boot
  135.         mount $boot_diskpart /mnt/boot
  136.     fi
  137.  
  138.     #format/mount home
  139.     if [ $home_diskpart ]; then
  140.         mkfs.ext4 $home_diskpart
  141.         mount $home_diskpart /mnt/home
  142.     fi
  143.  
  144.     #pacstrap
  145.     pacstrap /mnt base base-devel
  146.  
  147.     #fstab
  148.     genfstab -U /mnt > /mnt/etc/fstab
  149.  
  150.     #swap
  151.     if [ $swap_filename ] && [ $swap_filesize ]; then
  152.         create_swap_file /mnt${swap_filename} $swap_filesize
  153.         swapon /mnt${swap_filename}
  154.     elif [ $swap_diskpart ]; then
  155.         mkswap $swap_diskpart
  156.         swapon $swap_diskpart
  157.     fi
  158.  
  159.     #go to stage 2
  160.     start_os2
  161.  
  162.     #swap off
  163.     if [ $swap_filename ] && [ $swap_filesize ]; then
  164.         swapoff /mnt${swap_filename}
  165.     elif [ $swap_diskpart ]; then
  166.         swapoff $swap_diskpart
  167.     fi
  168.  
  169.     #unmount
  170.     umount -R /mnt
  171.  
  172.     #go to stage 3
  173.     reboot
  174. }
  175.  
  176. function start_os2() {
  177.     cp -f $installer /mnt
  178.     arch-chroot /mnt /bin/bash -c "bash /$(basename $0) os2"
  179. }
  180.  
  181. function add_fstab_swap_file() {
  182.     filename=$1
  183.     echo -e "\n# \n/swapfile none swap defaults 0 0" >> /etc/fstab
  184. }
  185.  
  186. function add_fstab_swap_part() {
  187.     part=$1
  188.     echo -e "\n# $part\nUUID=$(get_uuid $part) none swap defaults 0 0" >> /etc/fstab
  189. }
  190.  
  191. function add_grub_swap_file() {
  192.     filename=$1
  193.     swap_diskpart2=`df -P $filename | tail -1 | cut -d' ' -f 1`
  194.     resoff=`filefrag -v /swapfile | awk 'FNR == 4 {print $4}' | sed 's/\..//'`
  195.     swapuuid=`get_uuid $swap_diskpart2`
  196.     sed -i "s/\(GRUB_CMDLINE_LINUX_DEFAULT=\"\)\([^\"]*\"\)/\1resume=UUID=$swapuuid resume_offset=$resoff \2/g" /etc/default/grub
  197. }
  198.  
  199. function add_grub_swap_part() {
  200.     swap_diskpart2=$1  
  201.     #escaped_swap_diskpart=$(get_escaped $swap_diskpart2)
  202.     swapuuid=`get_uuid $swap_diskpart2`    
  203.     sed -i "s/\(GRUB_CMDLINE_LINUX_DEFAULT=\"\)\([^\"]*\"\)/\1resume=UUID=$swapuuid \2/g" /etc/default/grub
  204. }
  205.  
  206. function os2() {
  207.     #install packages
  208.     #pacman-key --refresh-keys
  209.     pacman -S --needed --noconfirm $packages networkmanager grub-bios
  210.  
  211.     #fstab swapfile
  212.     if [ $swap_filename ] && [ $swap_filesize ]; then
  213.         add_fstab_swap_file $swap_filename
  214.     elif [ $swap_diskpart ]; then
  215.         add_fstab_swap_part $swap_diskpart
  216.     fi
  217.      
  218.     #swapiness
  219.     #if [ $swap_diskpart ] || ([ $swap_filename ] && [ $swap_filesize ]); then
  220.     #   sed -i "s/#\(vm.swappiness = \).*/\10/g" /etc/sysctl.conf
  221.     #fi
  222.  
  223.     #fstab tmp ramdisk
  224.     echo -e "\n# ramdisk\n#none /tmp tmpfs defaults,size=2G 0 0" >> /etc/fstab 
  225.    
  226.     #locale
  227.     ln -sf /usr/share/zoneinfo/Australia/Sydney /etc/localtime
  228.     sed -i "s/#\(en_AU.*\)/\1/g" /etc/locale.gen
  229.     sed -i "s/#\(en_GB.*\)/\1/g" /etc/locale.gen
  230.     sed -i "s/#\(en_US.*\)/\1/g" /etc/locale.gen
  231.     echo -e 'LANG="en_AU.UTF-8"\nLANGUAGE="en_AU.UTF-8:en_US.UTF-8:en"\nLC_COLLATE="C"\nLC_TIME="en_AU.UTF-8"' > /etc/locale.conf
  232.     echo 'KEYMAP=us' > /etc/vconsole.conf
  233.     locale-gen en_AU.UTF-8
  234.  
  235.     #mkinitcpio
  236.     sed -i 's/\(HOOKS=\).*/\1"base udev keymap autodetect modconf block resume filesystems keyboard fsck" /g' /etc/mkinitcpio.conf
  237.     mkinitcpio -p linux
  238.  
  239.     #grub
  240.     if [ $grub_disk ]; then
  241.         grub-install $grub_disk
  242.         sed -i "s/\(GRUB_DEFAULT=\)0/\1saved/g" /etc/default/grub
  243.         sed -i "s/\(GRUB_TIMEOUT=\)5/\12/g" /etc/default/grub
  244.         #echo "GRUB_DISABLE_OS_PROBER=true" >> /etc/default/grub
  245.         echo -e '\n#quick fix for broken grub.cfg gen\nGRUB_DISABLE_SUBMENU=y' >> /etc/default/grub
  246.        
  247.         rootuuid=`get_uuid $root_diskpart`
  248.         sed -i "s/\(GRUB_CMDLINE_LINUX_DEFAULT=\).*/\1\"linux \/boot\/vmlinuz-linux root=UUID=$rootuuid rw quiet splash\"/g" /etc/default/grub
  249.  
  250.         if [ $swap_filename ] && [ $swap_filesize ]; then
  251.             add_grub_swap_file $swap_filename
  252.         elif [ $swap_diskpart ]; then
  253.             add_grub_swap_part $swap_diskpart
  254.         fi
  255.  
  256.         #
  257.         #add_grub_custom "/dev/sdb1" "Windows"
  258.  
  259.         #
  260.         grub-mkconfig -o /boot/grub/grub.cfg
  261.         #mv /boot/grub/grub.cfg /boot/grub/grub.cfg.old
  262.         #mv /boot/grub/grub.cfg.new /boot/grub/grub.cfg
  263.     fi
  264.  
  265.     #
  266.     echo $myhostname > /etc/hostname
  267.     sed -i '/^hosts:/ s/$/ wins/' /etc/nsswitch.conf
  268.     echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf
  269.  
  270.     #next startup auto login as root
  271.     mkdir -p /etc/systemd/system/getty@tty1.service.d
  272.     echo -e '[Service]\nExecStart=\nExecStart=-/usr/bin/agetty --autologin root --noclear %I 38400 linux' > /etc/systemd/system/getty@tty1.service.d/autologin.conf
  273.  
  274.     #set root statup to run next install stage
  275.     touch  /root/.bash_profile
  276.     cp /root/.bash_profile /root/.bash_profile.bak
  277.     echo "bash $installer os3" >> /root/.bash_profile
  278.  
  279.     #return to stage 1
  280.     exit
  281. }
  282.  
  283. function os3() {
  284.     #restore original root bash profile
  285.     mv -f /root/.bash_profile.bak /root/.bash_profile
  286.  
  287.     #network manager
  288.     systemctl enable NetworkManager
  289.  
  290.     #root
  291.     echo root:$rootpass | chpasswd
  292.  
  293.     #groups
  294.     groupadd admin
  295.  
  296.     #user
  297.     useradd -m -U -G admin,users,storage,lp,optical,audio,video,power,games -s /bin/bash $mylogin
  298.     echo $mylogin:$mypass | chpasswd
  299.    
  300.     #
  301.     cp -f /etc/skel/.bash_profile $HOME/
  302.  
  303.     #sudoers
  304.     echo "%admin ALL=(ALL) ALL" >> /etc/sudoers
  305.     echo "#Cmnd_Alias MY_CMDS=/usr/sbin/grub-reboot,/usr/sbin/grub-set-default" >> /etc/sudoers
  306.     echo "#$mylogin ALL=(ALL) NOPASSWD:MY_CMDS" >> /etc/sudoers
  307.    
  308.     #
  309.     chown -R $mylogin $HOME
  310.    
  311.     #disable auto login root
  312.     if [ $autologin -eq 1 ]; then
  313.         #and change it to the user
  314.         sed -i "s/root/$mylogin/g" /etc/systemd/system/getty@tty1.service.d/autologin.conf
  315.     else
  316.         rm /etc/systemd/system/getty@tty1.service.d/autologin.conf
  317.     fi
  318.        
  319.     #
  320.     setup_apps
  321.  
  322.     #move installer to user's home
  323.     chown $mylogin $installer
  324.     mv $installer $HOME/
  325.    
  326.     #done
  327.     reboot
  328. }
  329.  
  330. function setup_scripts() {
  331.     #sleep scripts
  332.     echo -e "#!/bin/bash\nsystemctl suspend" > /usr/local/bin/suspend.sh
  333.     echo -e "#!/bin/bash\nsystemctl hibernate" > /usr/local/bin/hibernate.sh
  334.     echo -e "#!/bin/bash\nsystemctl hybrid-sleep" > /usr/local/bin/sleep.sh
  335.     chmod o+rx /usr/local/bin/suspend.sh /usr/local/bin/hibernate.sh /usr/local/bin/sleep.sh
  336.  
  337.     #reboot to win
  338.     echo -e "#!/bin/bash\nsudo grub-set-default 0 && sudo grub-reboot 2 && reboot" > /usr/local/bin/reboot_to_win.sh
  339.     chmod o+rx /usr/local/bin/reboot_to_win.sh
  340. }
  341.  
  342. function setup_ntp() {
  343.     systemctl enable ntpd.service
  344.     #ntpd -qg
  345.     #hwclock -w
  346. }
  347.  
  348. function setup_cups() {
  349.     systemctl enable org.cups.cupsd.service
  350. }
  351.  
  352. function add_other_mount() {
  353.     part=$1
  354.     mounting=$2
  355.     fsys=$3
  356.    
  357.     u=`get_uuid $part`
  358.     useuid=`id -u $mylogin`
  359.     usegid=`id -g $mylogin`
  360.    
  361.     echo -e "\nUUID=$u $mounting $fsys relatime,uid=$useuid,gid=$usegid,umask=000,nofail 0 0"  >> /etc/fstab
  362.  
  363.     mkdir -p /mnt/$mounting
  364.    
  365.     #mount $part /mnt/$mounting
  366. }
  367.  
  368. function add_grub_custom() {
  369.     part=$1
  370.     title=$2
  371.     u=`get_uuid $part`
  372.     old=`echo $part | sed 's/[/a-zA-Z]\+\([0-9]\+\)/\1/'`
  373.    
  374.     echo "
  375. menuentry \"$title\" {
  376.     search --fs-uuid --no-floppy --set=root $u 
  377.     #set root=(hd0,$old)
  378.     chainloader +1
  379. }" >> /etc/grub.d/40_custom;
  380. }
  381.  
  382. function setup_mysql() {
  383.     systemctl start mysqld
  384.     systemctl enable mysqld
  385.    
  386.     mysql --user=root -e "UPDATE mysql.user SET Password=PASSWORD('pass') WHERE User='root';\nDELETE FROM mysql.user WHERE User='';\nDELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');\nDROP DATABASE test;\nDELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';\nFLUSH PRIVILEGES;\nGRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' IDENTIFIED BY 'pass' WITH GRANT OPTION;"
  387.     mysql_upgrade -u root -ppass
  388.     mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -ppass mysql
  389.  
  390.     sed -i 's/;\(extension=mysql.so\)/\1/g' /etc/php/php.ini
  391. }
  392.  
  393. function setup_mythtv() {
  394.     mysql -u root -ppass -e "CREATE USER 'mythtv'@'localhost' IDENTIFIED BY 'mythtv';"
  395.     mysql -u root -ppass -e "create database mythconverg;"
  396.     mysql -u root -ppass -e "GRANT ALL PRIVILEGES ON mythconverg.* TO mythtv@localhost IDENTIFIED BY 'mythtv';"
  397.     #mythtv-setup
  398. }
  399.  
  400. function setup_lighttpd() {
  401.     systemctl enable lighttpd
  402.  
  403.     mkdir -p /etc/lighttpd/conf.d/
  404.  
  405.     echo -e 'server.modules += ("mod_fastcgi")
  406. index-file.names += ("index.php")
  407.  
  408. fastcgi.server = (
  409.    ".php" => (
  410.        "localhost" => (
  411.            "bin-path" => "/usr/bin/php-cgi",
  412.            "socket" => "/tmp/php-fastcgi.sock",
  413.            "broken-scriptfilename" => "enable",
  414.            "max-procs" => 4,
  415.            "bin-environment" => (
  416.                "PHP_FCGI_CHILDREN" => "1"
  417.            )
  418.        )
  419.    )
  420. )' > /etc/lighttpd/conf.d/fastcgi.conf
  421.  
  422.     echo -e '\ninclude "conf.d/fastcgi.conf"\n' >>  /etc/lighttpd/lighttpd.conf
  423.  
  424.     echo '<?php phpinfo(); ?>' > /srv/http/index.php
  425.     chmod 755 /srv/http/index.php
  426. }
  427.  
  428. function setup_virtualbox() {
  429.     systemctl start dkms
  430.     systemctl enable dkms
  431.     dkms install vboxhost/$(pacman -Q virtualbox|awk {'print $2'}|sed 's/\-.\+//') -k $(uname -rm|sed 's/\ /\//')
  432.     dkms autoinstall
  433.     usermod -a -G vboxusers $mylogin
  434. }
  435.  
  436. function add_samba_share() {
  437.     if [ "$2" = true ] ; then
  438.         commented=''
  439.     else
  440.         commented='#'
  441.     fi
  442.  
  443.     echo "
  444. [$(basename $1)]
  445. path = $1
  446. guest ok = yes
  447. guest only = yes
  448. guest account = nobody
  449. ${commented}writeable = yes
  450. browsable = yes
  451. ${commented}create mask = 777
  452. ${commented}force directory mode = 777"  >> /etc/samba/smb.conf
  453. }
  454.  
  455. function setup_samba() {
  456.     systemctl enable smbd
  457.     systemctl enable nmbd
  458.     cp -f /etc/samba/smb.conf.default /etc/samba/smb.conf
  459.     sed -i 's/MYGROUP/WORKGROUP/g' /etc/samba/smb.conf
  460.     #sed -i 's/security = user/security = share/g' /etc/samba/smb.conf
  461.     sed -i 's/;\(  guest account = \)pcguest/\1nobody/g' /etc/samba/smb.conf
  462.     sed -i "/^\[global\]$/ a\ map to guest = Bad User" /etc/samba/smb.conf
  463. }
  464.  
  465. function setup_ethtool() {
  466.     for x in `ip link | awk '(NR % 2) && $2!="lo:"  { print substr($2,0,length($2)-1) }'`; do
  467.         echo 'todo';
  468.         #ethtool --offload $x tx on;
  469.         #ethtool --show-offload $x;
  470.     done
  471. }
  472.  
  473. function setup_pulseaudio() {
  474.     mkdir -p $HOME/.config/pulse
  475.     cp /etc/pulse/default.pa $HOME/.config/pulse/
  476.     echo -e "\n#\n#set-card-profile 0   output:analog-stereo\n#set-default-sink 1" >> $HOME/.config/pulse/default.pa
  477.    
  478.     echo -e "
  479. ### Load analog device
  480. #load-module module-alsa-sink device=hw:0,0
  481. #load-module module-combine-sink sink_name=combined
  482. #set-default-sink combined" >> $HOME/.config/pulse/default.pa
  483. }
  484.  
  485. function setup_diskmanagment() {
  486.     hdspindown_min=120
  487.     hdspindown_val=($hdspindown_min * 60)/5
  488.  
  489.     #systemctl enable laptop-mode.service
  490.  
  491.     mkdir -p /etc/udev/rules.d
  492.     echo 'ACTION=="add", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/sbin/hdparm -B 254 /dev/$kernel"' >> /etc/udev/rules.d/75-hdparm.rules
  493.  
  494.     echo "ACTION==\"add\", KERNEL==\"sd[a-z]\", ATTR{queue/rotational}==\"1\", RUN+=\"/sbin/hdparm -S 254 /dev/\$kernel\"" >> /etc/udev/rules.d/75-hdparm.rules
  495.  
  496.     mkdir -p /etc/pm/sleep.d
  497.     echo '
  498. if [ -n "$1" ] && ([ "$1" = "resume" ] || [ "$1" = "thaw" ]); then
  499.     hdparm -B 254 /dev/your-hard-drive > /dev/null
  500. fi' >> /etc/pm/sleep.d/50-hdparm_pm
  501.  
  502.     chmod +x /etc/pm/sleep.d/50-hdparm_pm
  503. }
  504.  
  505. function setup_ssh() {
  506.     systemctl enable sshd
  507. }
  508.  
  509. function setup_lightdm() {
  510.     systemctl enable lightdm
  511.  
  512.     groupadd autologin
  513.     usermod -a -G autologin $mylogin
  514.  
  515.     sed -i "/^\[SeatDefaults\]$/ a\autologin-user=$mylogin" /etc/lightdm/lightdm.conf
  516.     sed -i "/^\[SeatDefaults\]$/ a\autologin-user-timeout=0" /etc/lightdm/lightdm.conf
  517. }
  518.  
  519. function setup_xserver() {
  520.     cp -f /etc/skel/.xinitrc  $HOME/
  521.     echo '#[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx' >> $HOME/.bash_profile
  522.    
  523.     #dconf write /org/gnome/desktop/input-sources/xkb-options "['terminate:ctrl_alt_bksp']"
  524. }
  525.  
  526. function setup_scite() {
  527.     echo 'load.on.activate=1
  528. quit.on.close.last=1
  529. check.if.already.open=1
  530. line.margin.visible=1
  531. line.margin.width=1+
  532. caret.line.back=#6BC9A8
  533. caret.line.back.alpha=55
  534. save.session=1
  535. save.recent=1
  536. save.find=1
  537. wrap=1
  538. output.wrap=1
  539. wrap.style=1
  540. selection.back=#86C1EB
  541. selection.alpha= 88
  542. highlight.current.word=1
  543. highlight.current.word.colour=#2635DE
  544. highlight.current.word.by.style=1
  545. indicators.alpha=100
  546. indicators.under=1
  547. title.full.path=1
  548. toolbar.visible=1
  549. statusbar.visible=1
  550. style.*.34=fore:#000000,back:#A1A4ED,bold
  551. style.*.35=fore:#000000,back:#A1A4ED,bold
  552. open.filter=$(all.files)
  553. file.patterns.lisp=$(file.patterns.lisp);.emacs;*.el' >> $HOME/.SciTEUser.properties
  554.  
  555.     echo -e "#!/bin/bash\ngksudo -u $USER \"scite -check.if.already.open=0\"" > /usr/local/bin/sciteroot.sh
  556.     chmod o+rx /usr/local/bin/sciteroot.sh
  557. }
  558.  
  559. function setup_terminator() {
  560.     mkdir -p $HOME/.config/terminator
  561.     echo -e "[global_config]\n  inactive_color_offset = 1.0\n[profiles]\n [[default]]\n  show_titlebar = False\n  scrollbar_position = disabled" > $HOME/.config/terminator/config
  562.     echo -e "[Desktop Entry]\nIcon=terminator\nType=X-XFCE-Helper\nName=Terminator\nX-XFCE-Binaries=terminator;\nX-XFCE-Category=TerminalEmulator\nX-XFCE-Commands=%B;\nX-XFCE-CommandsWithParameter=%B -x %s;" > /usr/share/xfce4/helpers/terminator.desktop
  563. }
  564.  
  565. function setup_x11vnc() {
  566.     mkdir $HOME/.x11vnc
  567.     x11vnc -storepasswd $myvncpass $HOME/.x11vnc/passwd
  568.     echo -e "#!/bin/bash\nx11vnc -many -display :0 -rfbauth ~/.x11vnc/passwd -gui tray -o ~/.x11vnc.log.%VNCDISPLAY" > /usr/local/bin/x11vnc_start.sh
  569.     chmod o+rx /usr/local/bin/x11vnc_start.sh
  570. }
  571.  
  572. function setup_whitecursor() {
  573.     mkdir -p $HOME/.icons
  574.     ln -sf /usr/share/icons/Vanilla-DMZ/ $HOME/.icons/default
  575. }
  576.  
  577. function setup_gtk() {
  578.     mkdir -p $HOME/Documents $HOME/Downloads $HOME/Pictures $HOME/Desktop
  579.     mkdir -p $HOME/.config/gtk-3.0
  580.    
  581.     echo 'gtk-recent-files-max-age=0' >> $HOME/.gtkrc-2.0
  582.     echo 'gtk-recent-files-max-age=0' >> $HOME/.gtkrc-3.0
  583.     echo -e '[Settings]\ngtk-recent-files-max-age=0\ngtk-recent-files-limit=0' > $HOME/.config/gtk-3.0/settings.ini
  584.    
  585.     echo "file:///$HOME/Documents Documents" >> $HOME/.gtk-bookmarks
  586.     echo "file:///$HOME/Downloads Downloads" >> $HOME/.gtk-bookmarks
  587.     echo "file:///$HOME/Pictures Pictures" >> $HOME/.gtk-bookmarks
  588. }
  589.  
  590. function setup_mousepad() {
  591.     cp -f /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d/
  592.     sed -i '/TapButton3/ a\        Option "VertEdgeScroll" "on"\n        Option "HorizEdgeScroll" "on"' /etc/X11/xorg.conf.d/50-synaptics.conf
  593. }
  594.  
  595. function setup_power() {
  596.     sed 's/#\(HandlePowerKey=\).*/\1suspend/g' /etc/systemd/logind.conf
  597.     sed 's/#\(HandleLidSwitch=\).*/\1hybrid-sleep/g' /etc/systemd/logind.conf
  598.     echo '# Suspend the system when battery level drops to 2% or lower
  599. SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="2", RUN+="/usr/bin/systemctl suspend"
  600. SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="1", RUN+="/usr/bin/systemctl suspend"
  601. SUBSYSTEM=="power_supply", ATTR{status}=="Discharging", ATTR{capacity}=="0", RUN+="/usr/bin/systemctl suspend"' > /etc/udev/rules.d/99-lowbat.rules
  602.     #echo 'ACTION=="add", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 254 /dev/$kernel"' > /etc/udev/rules.d/75-hdparm.rules
  603. }
  604.  
  605. function setup_i3() {
  606.     #i3 config
  607.     mkdir -p $HOME/.i3
  608.     cp -f /etc/i3/config $HOME/.i3/
  609.  
  610.     sed -i 's/\(bindsym Mod1+d exec\) \(dmenu_run\)/\1 --no-startup-id \2/g' $HOME/.i3/config
  611.     sed -i 's/\(exec i3-config-wizard\)/#\1/g' $HOME/.i3/config
  612.     sed -i 's/# \(bindsym Mod1+\)\(d exec --no-startup-id i3-dmenu-desktop\)/\1Shift+\2/g' $HOME/.i3/config
  613.     sed -i 's/\(set \$mod\) Mod4/\1 Mod1/g' $HOME/.i3/config
  614.     sed -i "/^bar {$/ a\\\t#tray_output primary" $HOME/.i3/config
  615.  
  616.     echo -e '\n#' >> $HOME/.i3/config
  617.     echo 'default_orientation vertical' >> $HOME/.i3/config
  618.     echo -e '\n# Can be set <default|stacking|tabbed>\nworkspace_layout stacking' >> $HOME/.i3/config
  619.  
  620.     echo -e '\n#' >> $HOME/.i3/config
  621.     echo 'for_window [title="File Operation Progress"] floating enable' >> $HOME/.i3/config
  622.     echo 'for_window [title="File Operations"] floating enable' >> $HOME/.i3/config
  623.     echo 'for_window [class="VirtualBox"] floating enable' >> $HOME/.i3/config
  624.  
  625.     echo -e '\n#' >> $HOME/.i3/config
  626.     echo 'bindsym Control+Shift+Escape exec lxtask' >> $HOME/.i3/config
  627.     echo 'bindsym Mod4+b exec chromium' >> $HOME/.i3/config
  628.     echo 'bindsym Mod4+f exec thunar' >> $HOME/.i3/config
  629.     echo 'bindsym Mod4+t exec scite' >> $HOME/.i3/config
  630.     echo 'bindsym Mod4+e exec emacs' >> $HOME/.i3/config
  631.     echo 'bindsym Mod4+v exec virtualbox' >> $HOME/.i3/config
  632.     echo 'bindsym Mod4+m exec vlc' >> $HOME/.i3/config
  633.     echo 'bindsym Mod4+g exec transmission-gtk' >> $HOME/.i3/config
  634.     echo 'bindsym Mod4+o exec opera' >> $HOME/.i3/config
  635.     echo 'bindsym Mod4+k exec krdc' >> $HOME/.i3/config
  636.     echo 'bindsym Mod4+r exec remmina' >> $HOME/.i3/config
  637.  
  638.     echo -e '\n#' >> $HOME/.i3/config
  639.     echo 'exec --no-startup-id system-config-printer-applet' >> $HOME/.i3/config
  640.     echo 'exec --no-startup-id start-pulseaudio-x11' >> $HOME/.i3/config
  641.  
  642.     echo -e '\n#' >> $HOME/.i3/config
  643.     echo '#exec --no-startup-id x11vnc -many -display :0 -rfbauth ~/.x11vnc/passwd -gui tray -o ~/.x11vnc.log.%VNCDISPLAY' >> $HOME/.i3/config
  644.     echo '#exec --no-startup-id xrandr --output HDMI1 --auto --primary --output HDMI2 --auto --right-of HDMI1' >> $HOME/.i3/config
  645.     echo '#exec --no-startup-id numlockx' >> $HOME/.i3/config
  646.     echo '#exec --no-startup-id nm-applet' >> $HOME/.i3/config
  647.     echo "#exec --no-startup-id xautolock -detectsleep -time 45 -locker 'systemctl hybrid-sleep'" >> $HOME/.i3/config
  648.     echo '#exec --no-startup-id xmodmap -e "pointer = 1 10 3 4 5 6 7 8 9 2 11 12 13 14 15 16 17 18 19 20 21 22 23 24"' >> $HOME/.i3/config
  649.    
  650.     echo -e '\n#' >> $HOME/.i3/config
  651.     echo '#bindsym XF86AudioRaiseVolume exec pactl set-sink-volume `pactl list short sinks | grep RUNNING | cut -f1` -- +5%' >> $HOME/.i3/config
  652.     echo '#bindsym XF86AudioLowerVolume exec pactl set-sink-volume `pactl list short sinks | grep RUNNING | cut -f1` -- -5%' >> $HOME/.i3/config
  653.     echo '#bindsym XF86AudioMute exec pactl set-sink-mute `pactl list short sinks | grep RUNNING | cut -f1` toggle' >> $HOME/.i3/config
  654.  
  655.     echo -e '\n#' >> $HOME/.i3/config
  656.     echo 'bindsym XF86AudioRaiseVolume exec amixer -q set Master 5%+ unmute' >> $HOME/.i3/config
  657.     echo 'bindsym XF86AudioLowerVolume exec amixer -q set Master 5%- unmute' >> $HOME/.i3/config
  658.     echo 'bindsym XF86AudioMute exec amixer -q set Master toggle' >> $HOME/.i3/config
  659.    
  660.     echo -e '\n#' >> $HOME/.i3/config
  661.     echo 'bindsym XF86AudioPlay exec playerctl play' >> $HOME/.i3/config
  662.     echo 'bindsym XF86AudioPause exec playerctl pause' >> $HOME/.i3/config
  663.     echo 'bindsym XF86AudioNext exec playerctl next' >> $HOME/.i3/config
  664.     echo 'bindsym XF86AudioPrev exec playerctl previous' >> $HOME/.i3/config
  665.  
  666.     #i3 status
  667.     echo -e 'general {\n\tcolors = true\n\tinterval = 10\n}\n' > $HOME/.i3status.conf
  668.     echo -e 'cpu_usage {\n\tformat = "%usage"\n}\n' >> $HOME/.i3status.conf
  669.     echo -e 'cpu_temperature 0 {\n\tformat = "%degrees\xc2\xb0C"\n#\tpath = "/sys/devices/platform/coretemp.0/temp2_input"\n}\n' >> $HOME/.i3status.conf
  670.     echo -e 'cpu_temperature 1 {\n\tformat = "%degrees\xc2\xb0C"\n#\tpath = "/sys/devices/platform/coretemp.0/temp3_input"\n}\n' >> $HOME/.i3status.conf
  671.     echo -e 'battery 0 {\n\tformat="%percentage %remaining"\n\tpath="/sys/class/power_supply/BAT1/uevent"\n\tlow_threshold=30\n\tthreshold_type=percentage\n}\n' >> $HOME/.i3status.conf
  672.  
  673.     echo -e 'time {\n\tformat = "%a %d %b, %I:%M %p"\n}\n' >> $HOME/.i3status.conf
  674.     echo -e 'volume master {\n\tformat = "%volume"\n\tdevice = "default"\n\tmixer = "Master"\n\tmixer_idx = 0\n}\n' >> $HOME/.i3status.conf
  675.    
  676.     echo '' >> $HOME/.i3/config
  677.     echo -e '#order += "cpu_usage"\n' >> $HOME/.i3status.conf
  678.     echo -e '#order += "cpu_temperature 0"\n' >> $HOME/.i3status.conf
  679.     echo -e '#order += "cpu_temperature 1"\n' >> $HOME/.i3status.conf
  680.     echo -e '#order += "battery 0"\n' >> $HOME/.i3status.conf
  681.     echo -e 'order += "time"\n' >> $HOME/.i3status.conf
  682.     echo -e 'order += "volume master"\n' >> $HOME/.i3status.conf
  683.  
  684.     #
  685.     echo -e "\n#exec i3" >> $HOME/.xinitrc
  686.     echo -e "[Desktop]\nSession=i3\n" > $HOME/.dmrc
  687. }
  688.  
  689. function setup_swiprolog() {
  690.     echo ':- set_prolog_flag(toplevel_print_options,[quoted(true),portray(true)]).' > $HOME/.plrc
  691. }
  692.  
  693. function connect_wireless() {
  694.     echo 'todo'
  695.     #lspci -k or lsusb -v
  696.     #ip link
  697.     #ip link set wlan0 up
  698.     #dmesg | grep iwlwifi
  699.  
  700.     #iw wireless_tools wpa_supplicant
  701.  
  702.     #wpa_passphrase ssid password | wpa_supplicant -Dwext -iwlan0 -c/dev/stdin
  703.     #dhcpcd wlan0
  704.  
  705.     #wpa_supplicant -iwlan0 -Dwext -B -c <(wpa_passphrase ssid pass)
  706. }
  707.  
  708. function disable_coredump() {
  709.     ln -s /dev/null /etc/sysctl.d/50-coredump.conf
  710.     sysctl kernel.core_pattern=core
  711. }
  712.  
  713. function setup_shared_folder() {
  714.     mkdir -p /shared
  715.     setfacl -d -m o::rwx /shared
  716.     setfacl -d -m g::rwx /shared
  717.     add_samba_share /shared true
  718. }
  719.  
  720. function symlink_caches_to_tmp() {
  721.     mkdir -p $HOME/.cache
  722.  
  723.     ln -sf /tmp $HOME/.thumbnails
  724.     ln -sf /tmp $HOME/.cache/chromium
  725.     ln -sf /tmp $HOME/.adobe
  726.     ln -sf /tmp $HOME/.macromedia
  727.     ln -sf /tmp $HOME/.cache/vlc
  728. }
  729.  
  730. function add_guest_user() {
  731.     useradd -m -U -G users,storage,lp,optical,audio,video,power,games -s /bin/bash guest
  732.     passwd -ud guest
  733.    
  734.     cp -f /etc/skel/.bash_profile /home/guest/
  735.  
  736.     chmod -R 777 /home/guest
  737.     chown -R guest /home/guest
  738.    
  739.     setfacl -d -m o::rwx /home/guest
  740.     setfacl -d -m g::rwx /home/guest
  741. }
  742.  
  743. function aur_get() {
  744.     n=$1
  745.     cd /tmp
  746.     wget "https://aur.archlinux.org/packages/${n:0:2}/${n}/${n}.tar.gz"
  747.     tar xzf ${n}.tar.gz
  748.     cd $n
  749.  
  750.     if [ $2 ] && [ "$2" != "" ]; then
  751.         sed -i "s/\(arch=(.*\))/\1 '$2')/g" PKGBUILD
  752.     fi
  753. }
  754.  
  755. function aur_make() {
  756.     n=$1
  757.     cd /tmp/$n
  758.     #makepkg -s --asroot
  759.     makepkg -s
  760. }
  761.  
  762. function aur_install() {
  763.     n=$1
  764.     cd /tmp/$n
  765.     sudo pacman -U --noconfirm --needed ${n}*pkg.tar.xz
  766. }
  767.  
  768. function aur() {
  769.     aur_get $1
  770.     aur_make $1
  771.     read -n 1 -s -p "Press any key to continue..."
  772.     echo -e '\n'
  773.     aur_install $1
  774. }
  775.  
  776. if [ $1 ]; then
  777.     args=""
  778.     for (( i=2;$i<=$#;i=$i+1 )); do args+=" ${!i}"; done
  779.     eval $1 $args
  780. else
  781.     echo "No option entered (to begin installation enter the option: os)."
  782. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement