dotfiles/.config/yadm/bootstrap

102 lines
3.6 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. /usr/bin/umount" |
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
highlight "Sysyadm setup"
test -d "/etc/yadm" || sy clone
## Software
section "Software"
link() { test -e "$2" || ln -sv "$@"; }
mkdir -p .config/audacity
find $HOME -maxdepth 1 -type l -exec file {} + |
grep '.local/share' | grep broken |
sed 's/.* //' | xargs mkdir -p
link python3 /usr/bin/python
link fd /usr/bin/fdfind
link bat /usr/bin/batcat
link "$HOME/.ssh/config" "$XDG_CONFIG_HOME/ssh"
highlight "SSH Permissions"
chmod og= "$HOME/.ssh" -R
highlight "Cron"
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
test "$hasService" && sudo service cron reload || sudo systemctl reload cronie
highlight "Zsh"
export ZSH="${XDG_STATE_HOME:-$HOME/.local/state}/zsh/oh-my-zsh"
cloneshallow() {
url=https://github.com/$1.git
dir="${3:-$ZSH/plugins/$1}"
mkdir -p "$(dirname $dir)"
if test -d "$dir"
then git -C "$dir" remote set-url origin $url
else git clone --depth=1 $url "$dir"
fi
}
cloneshallow oh-my-zsh robbyrussell "$ZSH"
cloneshallow powerlevel10k romkatv "$ZSH/themes/powerlevel10k"
cloneshallow fast-syntax-highlighting zdharma-continuum
cloneshallow zsh-autosuggestions zsh-users
cloneshallow zsh-vim-mode softmoth
case "$(grep "^$USER" /etc/passwd | sed 's/.*://')" in (*zsh);; (*) chsh -s $(which zsh);; esac
### Arch
highlight "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 "Application symlinks"
link "$XDG_STATE_HOME/gradle/gradle.properties" "$XDG_CONFIG_HOME/gradle.properties"
link "$XDG_DATA_HOME/applications/signal-tray.desktop" "$XDG_CONFIG_HOME/autostart/"
link "/usr/share/applications/stretchly.desktop" "$XDG_CONFIG_HOME/autostart/"
mx="$HOME/.mixxx"
if ! test -d "$mx"
then mkdir "$mx" && ln -sv -t "$mx" ${XDG_DATA_HOME:-$HOME/.local/share}/mixxx/* ${XDG_CONFIG_HOME:-$HOME/.config}/mixxx/*
fi
highlight "Block internet at night & on weekdays in the morning to force focus"
walli 22 --save
highlight "Setup kakoune plugin loader"
cloneshallow plug.kak robertmeta "${XDG_CONFIG_HOME:-$HOME/.config}/kak/plugins/plug.kak"