Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.19 KB | None | 0 0
  1. #!/usr/bin/env bash
  2. set -eu
  3.  
  4. function blacklist-hosts {
  5. bash -"$-" ~/scripts/blacklist-hosts
  6. }
  7.  
  8. function clone-dotfiles {
  9. bash -"$-" ~/scripts/clone-dotfiles
  10. }
  11.  
  12. function clone-scripts {
  13. if [[ ! -d ~/scripts/.git ]]; then
  14. install-packages git
  15. git clone https://sgtpep@github.com/sgtpep/scripts.git ~/scripts
  16. fi
  17. }
  18.  
  19. function configure-grub {
  20. local checksum=$(md5sum /etc/default/grub)
  21. grep -q '^GRUB_TIMEOUT_STYLE=' /etc/default/grub || sudo tee -a /etc/default/grub > /dev/null <<< 'GRUB_TIMEOUT_STYLE=hidden'
  22. sudo sed -i 's/^#*\(GRUB_TERMINAL=\).*/\1console/' /etc/default/grub
  23. sudo sed -i 's/^\(GRUB_TIMEOUT=\).*/\10/' /etc/default/grub
  24. md5sum -c --status <<< $checksum || sudo update-grub
  25. }
  26.  
  27. function configure-initramfs-modules {
  28. local checksum=$(md5sum /etc/initramfs-tools/modules)
  29. sudo tee /etc/initramfs-tools/modules > /dev/null <<< 'i915'
  30. md5sum -c --status <<< $checksum || sudo update-initramfs -u
  31. }
  32.  
  33. function disable-console-font {
  34. sudo sed -i 's/^\(FONTFACE=\).*/\1""/' /etc/default/console-setup
  35. }
  36.  
  37. function disable-power-key {
  38. sudo sed -i 's/^#\(HandlePowerKey=\).*/\1ignore/' /etc/systemd/logind.conf
  39. }
  40.  
  41. function enable-backports {
  42. if [[ ! -f /etc/apt/sources.list.d/backports.list ]]; then
  43. sudo tee /etc/apt/sources.list.d/backports.list > /dev/null <<< "deb http://deb.debian.org/debian $(lsb_release -cs)-backports main"
  44. sudo apt update -o APT::Get::List-Cleanup=0 -o Dir::Etc::sourcelist=sources.list.d/backports.list -o Dir::Etc::sourceparts=-
  45. fi
  46. }
  47.  
  48. function enable-backports-contrib {
  49. if [[ ! -f /etc/apt/sources.list.d/backports-contrib.list ]]; then
  50. sudo tee /etc/apt/sources.list.d/backports-contrib.list > /dev/null <<< "deb http://deb.debian.org/debian $(lsb_release -cs)-backports contrib"
  51. sudo apt update -o APT::Get::List-Cleanup=0 -o Dir::Etc::sourcelist=sources.list.d/backports-contrib.list -o Dir::Etc::sourceparts=-
  52. fi
  53. }
  54.  
  55. function enable-fstrim {
  56. sudo ln -fs /usr/share/doc/util-linux/examples/fstrim.service /etc/systemd/system
  57. sudo systemctl enable /usr/share/doc/util-linux/examples/fstrim.timer
  58. }
  59.  
  60. function install-packages {
  61. dpkg -s "${@%/*}" &> /dev/null || sudo DEBIAN_FRONTEND=noninteractive apt install -y "$@"
  62. }
  63.  
  64. function install-pulseaudio {
  65. install-packages pavucontrol pulseaudio
  66. }
  67.  
  68. function install-standalone-packages {
  69. local packages=(
  70. acpi
  71. apcalc
  72. connman
  73. curl
  74. gimp
  75. git
  76. gmrun
  77. gphoto2
  78. htop
  79. mosh
  80. mpv
  81. ncdu
  82. openbox
  83. rsync
  84. s3fs
  85. silversearcher-ag
  86. suckless-tools
  87. sxiv
  88. tmux
  89. unattended-upgrades
  90. unclutter
  91. vifm
  92. wmctrl
  93. xbindkeys
  94. xsel
  95. )
  96. install-packages "${packages[@]}"
  97. }
  98.  
  99. function main {
  100. clone-scripts
  101. setup-system
  102. install-standalone-packages
  103. }
  104.  
  105. function setup-acpid {
  106. install-packages acpid
  107. sudo tee /etc/acpi/handler.sh > /dev/null << \EOF
  108. #!/usr/bin/env bash
  109. set -eu
  110. if [[ $1 == video/brightness* ]]; then
  111. cd /sys/class/backlight
  112. cd ./intel_backlight 2> /dev/null || cd ./acpi_video0
  113. declare -A signs=([video/brightnessdown]=- [video/brightnessup]=+)
  114. echo "$(($(< ./brightness) ${signs[$1]} $(< ./max_brightness) / 50))" > ./brightness
  115. fi
  116. EOF
  117. }
  118.  
  119. function setup-chromium {
  120. install-packages chromium
  121. sudo update-alternatives --set x-www-browser /usr/bin/chromium
  122. }
  123.  
  124. function setup-devmon {
  125. install-packages udevil zenity-
  126. sudo cp /usr/lib/x86_64-linux-gnu/systemd/system/devmon@.service /etc/systemd/system
  127. sudo systemctl enable devmon@"$USER"
  128. }
  129.  
  130. function setup-firejail {
  131. install-packages firejail/"$(lsb_release -cs)"-backports libgconf-2-4
  132. sudo tee /etc/firejail/default.local > /dev/null <<< 'protocol unix,inet,inet6,netlink'
  133. }
  134.  
  135. function setup-lightdm {
  136. install-packages lightdm
  137. sudo sed -i "s/^#\(autologin-user=\).*/\1$USER/" /etc/lightdm/lightdm.conf
  138. }
  139.  
  140. function setup-sshuttle {
  141. install-packages sshuttle
  142. sudo tee /etc/sudoers.d/sshuttle > /dev/null <<< "$USER ALL = NOPASSWD: SETENV: /usr/bin/python3 /usr/bin/sshuttle --method auto --firewall"
  143. }
  144.  
  145. function setup-system {
  146. blacklist-hosts
  147. clone-dotfiles
  148. configure-grub
  149. configure-initramfs-modules
  150. disable-console-font
  151. disable-power-key
  152. enable-backports
  153. enable-fstrim
  154. install-pulseaudio
  155. setup-acpid
  156. setup-chromium
  157. setup-devmon
  158. setup-firejail
  159. setup-lightdm
  160. setup-sshuttle
  161. setup-urxvt
  162. setup-vim
  163. setup-virtualbox-guest
  164. setup-xorg
  165. }
  166.  
  167. function setup-urxvt {
  168. install-packages rxvt-unicode
  169. sudo update-alternatives --set x-terminal-emulator /usr/bin/urxvt
  170. }
  171.  
  172. function setup-vim {
  173. install-packages vim-gtk
  174. sudo update-alternatives --set editor /usr/bin/vim.gtk
  175. }
  176.  
  177. function setup-virtualbox-guest {
  178. if [[ $(< /sys/class/dmi/id/product_name) == VirtualBox ]]; then
  179. enable-backports-contrib
  180. install-packages virtualbox-guest-x11/"$(lsb_release -cs)"-backports
  181. sudo usermod -a -G vboxsf "$USER"
  182. fi
  183. }
  184.  
  185. function setup-xorg {
  186. install-packages dbus-x11 xorg
  187. sudo sed -i 's/^\(XKBLAYOUT=\).*/\1"us,ru"/' /etc/default/keyboard
  188. sudo sed -i 's/^\(XKBOPTIONS=\).*/\1"ctrl:nocaps,grp:rctrl_toggle,grp:switch,lv3:lwin_switch,misc:typo"/' /etc/default/keyboard
  189. }
  190.  
  191. main "$@"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement