Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- set -eu
- function blacklist-hosts {
- bash -"$-" ~/scripts/blacklist-hosts
- }
- function clone-dotfiles {
- bash -"$-" ~/scripts/clone-dotfiles
- }
- function clone-scripts {
- if [[ ! -d ~/scripts/.git ]]; then
- install-packages git
- git clone https://sgtpep@github.com/sgtpep/scripts.git ~/scripts
- fi
- }
- function configure-grub {
- local checksum=$(md5sum /etc/default/grub)
- grep -q '^GRUB_TIMEOUT_STYLE=' /etc/default/grub || sudo tee -a /etc/default/grub > /dev/null <<< 'GRUB_TIMEOUT_STYLE=hidden'
- sudo sed -i 's/^#*\(GRUB_TERMINAL=\).*/\1console/' /etc/default/grub
- sudo sed -i 's/^\(GRUB_TIMEOUT=\).*/\10/' /etc/default/grub
- md5sum -c --status <<< $checksum || sudo update-grub
- }
- function configure-initramfs-modules {
- local checksum=$(md5sum /etc/initramfs-tools/modules)
- sudo tee /etc/initramfs-tools/modules > /dev/null <<< 'i915'
- md5sum -c --status <<< $checksum || sudo update-initramfs -u
- }
- function disable-console-font {
- sudo sed -i 's/^\(FONTFACE=\).*/\1""/' /etc/default/console-setup
- }
- function disable-power-key {
- sudo sed -i 's/^#\(HandlePowerKey=\).*/\1ignore/' /etc/systemd/logind.conf
- }
- function enable-backports {
- if [[ ! -f /etc/apt/sources.list.d/backports.list ]]; then
- sudo tee /etc/apt/sources.list.d/backports.list > /dev/null <<< "deb http://deb.debian.org/debian $(lsb_release -cs)-backports main"
- sudo apt update -o APT::Get::List-Cleanup=0 -o Dir::Etc::sourcelist=sources.list.d/backports.list -o Dir::Etc::sourceparts=-
- fi
- }
- function enable-backports-contrib {
- if [[ ! -f /etc/apt/sources.list.d/backports-contrib.list ]]; then
- sudo tee /etc/apt/sources.list.d/backports-contrib.list > /dev/null <<< "deb http://deb.debian.org/debian $(lsb_release -cs)-backports contrib"
- sudo apt update -o APT::Get::List-Cleanup=0 -o Dir::Etc::sourcelist=sources.list.d/backports-contrib.list -o Dir::Etc::sourceparts=-
- fi
- }
- function enable-fstrim {
- sudo ln -fs /usr/share/doc/util-linux/examples/fstrim.service /etc/systemd/system
- sudo systemctl enable /usr/share/doc/util-linux/examples/fstrim.timer
- }
- function install-packages {
- dpkg -s "${@%/*}" &> /dev/null || sudo DEBIAN_FRONTEND=noninteractive apt install -y "$@"
- }
- function install-pulseaudio {
- install-packages pavucontrol pulseaudio
- }
- function install-standalone-packages {
- local packages=(
- acpi
- apcalc
- connman
- curl
- firejail/"$(lsb_release -cs)"-backports
- gimp
- git
- gmrun
- gphoto2
- htop
- mosh
- mpv
- ncdu
- openbox
- rsync
- s3fs
- silversearcher-ag
- suckless-tools
- sxiv
- tmux
- unattended-upgrades
- unclutter
- vifm
- wmctrl
- xbindkeys
- xsel
- )
- install-packages "${packages[@]}"
- }
- function main {
- clone-scripts
- setup-system
- install-standalone-packages
- }
- function setup-acpid {
- install-packages acpid
- sudo tee /etc/acpi/handler.sh > /dev/null << \EOF
- #!/usr/bin/env bash
- set -eu
- if [[ $1 == video/brightness* ]]; then
- cd /sys/class/backlight
- cd ./intel_backlight 2> /dev/null || cd ./acpi_video0
- declare -A signs=([video/brightnessdown]=- [video/brightnessup]=+)
- echo "$(($(< ./brightness) ${signs[$1]} $(< ./max_brightness) / 50))" > ./brightness
- fi
- EOF
- }
- function setup-chromium {
- install-packages chromium
- sudo update-alternatives --set x-www-browser /usr/bin/chromium
- }
- function setup-devmon {
- install-packages udevil zenity-
- sudo cp /usr/lib/x86_64-linux-gnu/systemd/system/devmon@.service /etc/systemd/system
- sudo systemctl enable devmon@"$USER"
- }
- function setup-electron {
- install-packages libgconf-2-4
- sudo tee /etc/firejail/default.local > /dev/null <<< 'protocol unix,inet,inet6,netlink'
- }
- function setup-lightdm {
- install-packages lightdm
- sudo sed -i "s/^#\(autologin-user=\).*/\1$USER/" /etc/lightdm/lightdm.conf
- }
- function setup-sshuttle {
- install-packages sshuttle
- sudo tee /etc/sudoers.d/sshuttle > /dev/null <<< "$USER ALL = NOPASSWD: SETENV: /usr/bin/python3 /usr/bin/sshuttle --method auto --firewall"
- }
- function setup-system {
- blacklist-hosts
- clone-dotfiles
- configure-grub
- configure-initramfs-modules
- disable-console-font
- disable-power-key
- enable-backports
- enable-fstrim
- install-pulseaudio
- setup-acpid
- setup-chromium
- setup-devmon
- setup-electron
- setup-lightdm
- setup-sshuttle
- setup-urxvt
- setup-vim
- setup-virtualbox-guest
- setup-xorg
- }
- function setup-urxvt {
- install-packages rxvt-unicode
- sudo update-alternatives --set x-terminal-emulator /usr/bin/urxvt
- }
- function setup-vim {
- install-packages vim-gtk
- sudo update-alternatives --set editor /usr/bin/vim.gtk
- }
- function setup-virtualbox-guest {
- if [[ $(< /sys/class/dmi/id/product_name) == VirtualBox ]]; then
- enable-backports-contrib
- install-packages virtualbox-guest-x11/"$(lsb_release -cs)"-backports
- sudo usermod -a -G vboxsf "$USER"
- fi
- }
- function setup-xorg {
- install-packages dbus-x11 xorg
- sudo sed -i 's/^\(XKBLAYOUT=\).*/\1"us,ru"/' /etc/default/keyboard
- sudo sed -i 's/^\(XKBOPTIONS=\).*/\1"ctrl:nocaps,grp:rctrl_toggle,grp:switch,lv3:lwin_switch,misc:typo"/' /etc/default/keyboard
- }
- main "$@"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement