Advertisement
Guest User

Untitled

a guest
Jul 17th, 2018
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.20 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. firejail/"$(lsb_release -cs)"-backports
  75. gimp
  76. git
  77. gmrun
  78. gphoto2
  79. htop
  80. mosh
  81. mpv
  82. ncdu
  83. openbox
  84. rsync
  85. s3fs
  86. silversearcher-ag
  87. suckless-tools
  88. sxiv
  89. tmux
  90. unattended-upgrades
  91. unclutter
  92. vifm
  93. wmctrl
  94. xbindkeys
  95. xsel
  96. )
  97. install-packages "${packages[@]}"
  98. }
  99.  
  100. function main {
  101. clone-scripts
  102. setup-system
  103. install-standalone-packages
  104. }
  105.  
  106. function setup-acpid {
  107. install-packages acpid
  108. sudo tee /etc/acpi/handler.sh > /dev/null << \EOF
  109. #!/usr/bin/env bash
  110. set -eu
  111. if [[ $1 == video/brightness* ]]; then
  112. cd /sys/class/backlight
  113. cd ./intel_backlight 2> /dev/null || cd ./acpi_video0
  114. declare -A signs=([video/brightnessdown]=- [video/brightnessup]=+)
  115. echo "$(($(< ./brightness) ${signs[$1]} $(< ./max_brightness) / 50))" > ./brightness
  116. fi
  117. EOF
  118. }
  119.  
  120. function setup-chromium {
  121. install-packages chromium
  122. sudo update-alternatives --set x-www-browser /usr/bin/chromium
  123. }
  124.  
  125. function setup-devmon {
  126. install-packages udevil zenity-
  127. sudo cp /usr/lib/x86_64-linux-gnu/systemd/system/devmon@.service /etc/systemd/system
  128. sudo systemctl enable devmon@"$USER"
  129. }
  130.  
  131. function setup-electron {
  132. install-packages libgconf-2-4
  133. sudo tee /etc/firejail/default.local > /dev/null <<< 'protocol unix,inet,inet6,netlink'
  134. }
  135.  
  136. function setup-lightdm {
  137. install-packages lightdm
  138. sudo sed -i "s/^#\(autologin-user=\).*/\1$USER/" /etc/lightdm/lightdm.conf
  139. }
  140.  
  141. function setup-sshuttle {
  142. install-packages sshuttle
  143. sudo tee /etc/sudoers.d/sshuttle > /dev/null <<< "$USER ALL = NOPASSWD: SETENV: /usr/bin/python3 /usr/bin/sshuttle --method auto --firewall"
  144. }
  145.  
  146. function setup-system {
  147. blacklist-hosts
  148. clone-dotfiles
  149. configure-grub
  150. configure-initramfs-modules
  151. disable-console-font
  152. disable-power-key
  153. enable-backports
  154. enable-fstrim
  155. install-pulseaudio
  156. setup-acpid
  157. setup-chromium
  158. setup-devmon
  159. setup-electron
  160. setup-lightdm
  161. setup-sshuttle
  162. setup-urxvt
  163. setup-vim
  164. setup-virtualbox-guest
  165. setup-xorg
  166. }
  167.  
  168. function setup-urxvt {
  169. install-packages rxvt-unicode
  170. sudo update-alternatives --set x-terminal-emulator /usr/bin/urxvt
  171. }
  172.  
  173. function setup-vim {
  174. install-packages vim-gtk
  175. sudo update-alternatives --set editor /usr/bin/vim.gtk
  176. }
  177.  
  178. function setup-virtualbox-guest {
  179. if [[ $(< /sys/class/dmi/id/product_name) == VirtualBox ]]; then
  180. enable-backports-contrib
  181. install-packages virtualbox-guest-x11/"$(lsb_release -cs)"-backports
  182. sudo usermod -a -G vboxsf "$USER"
  183. fi
  184. }
  185.  
  186. function setup-xorg {
  187. install-packages dbus-x11 xorg
  188. sudo sed -i 's/^\(XKBLAYOUT=\).*/\1"us,ru"/' /etc/default/keyboard
  189. sudo sed -i 's/^\(XKBOPTIONS=\).*/\1"ctrl:nocaps,grp:rctrl_toggle,grp:switch,lv3:lwin_switch,misc:typo"/' /etc/default/keyboard
  190. }
  191.  
  192. main "$@"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement