# Headings section() { printf "\n$1\n"; } highlight() { printf "$1\n"; } ## System section "System" highlight "Default sudoers configuration" echo 'Defaults editor=/usr/bin/nvim Defaults env_keep="EDITOR"' | sudo tee /etc/sudoers.d/editor echo 'Defaults timestamp_timeout=120 Defaults passwd_timeout=30' | sudo tee /etc/sudoers.d/timeout highlight "password-free reboot" echo "$USER ALL = NOPASSWD: /usr/bin/halt, /usr/bin/shutdown, /usr/bin/reboot, /usr/bin/poweroff, /bin/reboot, /bin/shutdown" | sudo tee /etc/sudoers.d/shutdown highlight "Default to current user in tty1,2,3" sudo mkdir -p /etc/systemd/system/getty@tty1.service.d /etc/systemd/system/getty@tty2.service.d /etc/systemd/system/getty@tty3.service.d echo "[Service] ExecStart= ExecStart=-/usr/bin/agetty --skip-login --login-options $USER %I" | sudo tee /etc/systemd/system/getty@tty1.service.d/override.conf /etc/systemd/system/getty@tty2.service.d/override.conf /etc/systemd/system/getty@tty3.service.d/override.conf ## Hardware section 'Hardware' highlight 'Stop logind from suspending laptop' sudo sed -i 's/#HandleLidSwitch=suspend/HandleLidSwitch=ignore/' /etc/systemd/logind.conf highlight "Fix Chrysalis for keyboardio" # https://github.com/keyboardio/Chrysalis/wiki/Troubleshooting if test ! -f /etc/udev/rules.d/keyboardio.rules; then echo 'SUBSYSTEM=="tty", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="230[0-3]", SYMLINK+="model01", TAG+="seat", TAG+="uaccess", RUN+="'"$HOME/.local/bin/update-keyboard-layout\"" | sudo tee /etc/udev/rules.d/keyboardio.rules sudo udevadm control -R sudo udevadm trigger -v /dev/ttyACM0 #sudo systemctl disable ModemManager fi ## Software section "Software" ln -sv "$XDG_STATE_HOME/gradle/gradle.properties" "$XDG_CONFIG_HOME/gradle.properties" ln -sv "$HOME/.ssh/config" "$XDG_CONFIG_HOME/ssh" ln -sv "$XDG_DATA_HOME/applications/signal-tray.desktop" "$XDG_CONFIG_HOME/autostart/" ln -sv /usr/share/applications/stretchly.desktop "$XDG_CONFIG_HOME/autostart/" ln -sv python3 /usr/bin/python highlight "Cron logging" echo 'cron.* /var/log/cron.log' | sudo tee /etc/rsyslog.d/60-cron.conf hasService=$(which service 2>/dev/null) test "$hasService" && sudo service rsyslog restart || sudo systemctl restart rsyslog highlight "Reload cron" test "$hasService" && sudo service cron reload || sudo systemctl reload cronie highlight "SSH Permissions" chmod og= ~/.ssh -R ### Arch highlight "Configure pacman" if test -f /etc/pacman.conf; then sudo sed -i 's/#Color/Color/' /etc/pacman.conf sudo sed -i "$(grep -n "\[multilib\]" /etc/pacman.conf | cut -d':' -f1),+1 s/# *//" /etc/pacman.conf highlight "Reflector" echo "--save /etc/pacman.d/mirrorlist --protocol https --country Germany --latest 20 --sort rate" | sudo tee /etc/xdg/reflector/reflector.conf sudo systemctl start reflector & sudo systemctl enable reflector.timer fi ### Applications test "$DISPLAY" || exit 0 highlight "Block internet at night & on weekdays in the morning to force focus" walli 22 --save highlight "Mixxx symlinks" mkdir -p ~/.mixxx ln -s -t ~/.mixxx ${XDG_DATA_HOME:-$HOME/.local/share}/mixxx/* ${XDG_CONFIG_HOME:-$HOME/.config}/mixxx/* highlight "Setup kakoune plugin loader" plugkak="${XDG_CONFIG_HOME:-$HOME/.config}/kak/plugins/plug.kak" test -d "$plugkak" || { mkdir -p "$(dirname $plugkak)" && git clone https://github.com/robertmeta/plug.kak.git "$plugkak"; }