160 lines
5.2 KiB
Plaintext
Executable File
160 lines
5.2 KiB
Plaintext
Executable File
SECTION() { printf "\n[1m[4m$1[0m\n"; }
|
||
highlight() { printf "[1m[3m$1[0m\n"; }
|
||
subhighlight() { printf "[3m$1[0m\n"; }
|
||
|
||
source "$HOME/.zshenv"
|
||
|
||
SECTION "System"
|
||
|
||
highlight "Sudoers defaults"
|
||
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
|
||
subhighlight "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 "Set default user in tty1,2,3"
|
||
agetty="$(sudo which agetty)" &&
|
||
sudo mkdir -p /etc/systemd/system/getty@tty{1,2,3}.service.d &&
|
||
echo "[Service]
|
||
Restart=Never
|
||
ExecStart=
|
||
ExecStart=-$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"
|
||
if test -d "/etc/yadm/repo.git/"
|
||
then sy l
|
||
else echo "" | sy clone
|
||
fi
|
||
|
||
SECTION "Software"
|
||
|
||
highlight "Cleanup Manjaro Sway Dotfiles"
|
||
rmexist() {
|
||
for arg
|
||
do test -e "$arg" && echo -n "$arg: " && rm -rI "$arg"
|
||
done
|
||
}
|
||
rmexist "$XDG_CONFIG_HOME/nvim/init.lua" "$HOME/.emacs.d/"
|
||
|
||
highlight "MPD"
|
||
mkdir "${XDG_STATE_HOME}/mpd"
|
||
sudo systemctl enable --now mpd
|
||
mpc update
|
||
|
||
template() {
|
||
local dir=$(dirname "$1")
|
||
local file=${1/.template}
|
||
test -d "$dir" && ! test -f "$file" &&
|
||
cp -iv "$1" "$file"
|
||
}
|
||
template "$XDG_CONFIG_HOME/doom/user.template.el"
|
||
template "$XDG_CONFIG_HOME/MuseScore/MuseScore3.template.ini"
|
||
# TODO JOSM
|
||
# TODO audacity
|
||
# TODO puddletag
|
||
|
||
if command -v nvim >/dev/null 2>&1; then
|
||
echo "Updating NeoVim Plugins"
|
||
nvim '+PlugClean!' '+PlugUpgrade' '+PlugUpdate' '+qall'
|
||
fi
|
||
|
||
link() {
|
||
test -e "$2" -o -h "$2" || $($HOME/.local/bin/scripts/checkaccess -w "$2" || echo sudo) ln -sv "$@"
|
||
}
|
||
|
||
mkdir -p "$XDG_CONFIG_HOME/audacity"
|
||
find $HOME -maxdepth 1 -type l -exec file {} + |
|
||
grep '.local/share' | grep broken |
|
||
sed 's/.* //' | xargs -r mkdir -p
|
||
|
||
link python /usr/bin/python3
|
||
# TODO don't link these prematurely, might lead to installation conflicts
|
||
link fdfind /usr/bin/fd
|
||
link batcat /usr/bin/bat
|
||
|
||
highlight "SSH Permissions"
|
||
chmod og= $HOME/.ssh -R
|
||
test -d "$HOME/.ssh/keys" && chmod a+r $HOME/.ssh/keys/*.pub
|
||
_ovpn="$XDG_DATA_HOME/openvpn"
|
||
test -d "$_ovpn" &&
|
||
sudo rm -vdf /etc/openvpn/client &&
|
||
sudo ln -vsf "$_ovpn" /etc/openvpn/client &&
|
||
sudo chmod -vR ugo-rwx,ug+rX,u+w "$_ovpn" &&
|
||
sudo chown -vR janek:openvpn "$_ovpn"
|
||
|
||
highlight "Cron"
|
||
sudo systemctl enable --now cronie
|
||
if test -d "/etc/rsyslog.d"; then
|
||
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
|
||
fi
|
||
|
||
highlight "Zsh"
|
||
test -n "$ZSH" || export ZSH="${XDG_DATA_HOME:-$HOME/.local/share}/zsh/oh-my-zsh"
|
||
mkdir -p "$(dirname $ZSH)"
|
||
oldzsh="$XDG_STATE_HOME/zsh/oh-my-zsh" && test ! -d "$ZSH" -a -d "$oldzsh" && mv -vn $oldzsh $ZSH
|
||
cloneshallow() {
|
||
url=https://github.com/$2/$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
|
||
|
||
highlight "Arch"
|
||
if test -f /etc/pacman.conf; then
|
||
subhighlight "Pacman"
|
||
sudo sed -i 's/#Parallel/Parallel/;s/#Color/Color/;s/#UseSyslog/UseSyslog/' /etc/pacman.conf
|
||
sudo sed -i "$(grep -n "\[multilib\]" /etc/pacman.conf | cut -d':' -f1),+1 s/# *//" /etc/pacman.conf
|
||
if which reflector 2>/dev/null
|
||
then subhighlight "Reflector"
|
||
echo "--save /etc/pacman.d/mirrorlist
|
||
--protocol https
|
||
--country Germany
|
||
--latest 50
|
||
--score 10
|
||
--sort rate" | sudo tee /etc/xdg/reflector/reflector.conf
|
||
sudo systemctl start reflector &
|
||
sudo systemctl enable reflector.timer
|
||
fi
|
||
fi
|
||
|
||
test "$DISPLAY" || exit 0
|
||
highlight "Desktop Applications"
|
||
|
||
subhighlight "Application symlinks"
|
||
link .bash_aliases "$HOME/.bashrc"
|
||
link "$HOME/.ssh/config" "$XDG_CONFIG_HOME/ssh"
|
||
link "$XDG_DATA_HOME/.cpan/CPAN/MyConfig.pm" "$XDG_CONFIG_HOME/cpan/MyConfig.pm"
|
||
|
||
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/mixxx/*
|
||
fi
|
||
|
||
subhighlight "Setup kakoune plugin loader"
|
||
cloneshallow plug.kak robertmeta "$XDG_CONFIG_HOME/kak/plugins/plug.kak"
|
||
|
||
touch $HOME/.local/state/wget-hsts
|
||
|
||
dasht-docsets-install haskell rails_4 >/dev/null
|