90 lines
3.4 KiB
Bash
Executable file
90 lines
3.4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
DOTFILES="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
backup_and_link() {
|
|
local src="$1"
|
|
local dst="$2"
|
|
|
|
if [ -L "$dst" ]; then
|
|
echo "already a symlink, skipping: $dst"
|
|
return
|
|
fi
|
|
|
|
if [ -e "$dst" ]; then
|
|
echo "backing up: $dst -> $dst.bak"
|
|
mv "$dst" "$dst.bak"
|
|
fi
|
|
|
|
echo "linking: $dst -> $src"
|
|
ln -s "$src" "$dst"
|
|
}
|
|
|
|
backup_and_link "$DOTFILES/config/starship.toml" "$HOME/.config/starship.toml"
|
|
backup_and_link "$DOTFILES/config/profile" "$HOME/.profile"
|
|
backup_and_link "$DOTFILES/config/xinitrc" "$HOME/.xinitrc"
|
|
backup_and_link "$DOTFILES/vimrc" "$HOME/.vimrc"
|
|
backup_and_link "$DOTFILES/config/wezterm" "$HOME/.config/wezterm"
|
|
backup_and_link "$DOTFILES/config/fish" "$HOME/.config/fish"
|
|
backup_and_link "$DOTFILES/config/tmux" "$HOME/.config/tmux"
|
|
backup_and_link "$DOTFILES/config/senpai" "$HOME/.config/senpai"
|
|
backup_and_link "$DOTFILES/config/kanata" "$HOME/.config/kanata"
|
|
backup_and_link "$DOTFILES/config/nyxt" "$HOME/.config/nyxt"
|
|
backup_and_link "$DOTFILES/config/yazi" "$HOME/.config/yazi"
|
|
|
|
backup_and_link "$DOTFILES/config/rofi" "$HOME/.config/rofi"
|
|
backup_and_link "$DOTFILES/config/zathura" "$HOME/.config/zathura"
|
|
|
|
# StumpWM: link individual file (preserve ~/.config/stumpwm for live data like groups, etc.)
|
|
mkdir -p "$HOME/.config/stumpwm"
|
|
backup_and_link "$DOTFILES/config/stumpwm/config.lisp" "$HOME/.config/stumpwm/config"
|
|
|
|
# GPG: link individual files to preserve ~/.gnupg's required 700 permissions
|
|
mkdir -p "$HOME/.gnupg"
|
|
chmod 700 "$HOME/.gnupg"
|
|
backup_and_link "$DOTFILES/config/gnupg/gpg-agent.conf" "$HOME/.gnupg/gpg-agent.conf"
|
|
|
|
# pinentry-smart: TUI-aware wrapper (curses normally, tty inside senpai/mutt/etc.)
|
|
mkdir -p "$HOME/.local/bin"
|
|
backup_and_link "$DOTFILES/scripts/pinentry-smart" "$HOME/.local/bin/pinentry-smart"
|
|
chmod +x "$DOTFILES/scripts/pinentry-smart"
|
|
|
|
# GTK themes
|
|
backup_and_link "$DOTFILES/config/gtk-2.0/gtkrc" "$HOME/.gtkrc-2.0"
|
|
backup_and_link "$DOTFILES/config/gtk-3.0" "$HOME/.config/gtk-3.0"
|
|
backup_and_link "$DOTFILES/config/gtk-4.0" "$HOME/.config/gtk-4.0"
|
|
|
|
# Zed: link individual files to preserve extra live data (themes, backups, etc.)
|
|
mkdir -p "$HOME/.config/zed"
|
|
for src in "$DOTFILES/config/zed/"*; do
|
|
dst="$HOME/.config/zed/$(basename "$src")"
|
|
backup_and_link "$src" "$dst"
|
|
done
|
|
|
|
# System-level links (requires root)
|
|
if [ "$EUID" -eq 0 ]; then
|
|
echo ""
|
|
echo "=== system links ==="
|
|
backup_and_link "$DOTFILES/config/kanata/rc.kanata" "/etc/rc.d/rc.kanata"
|
|
chmod +x /etc/rc.d/rc.kanata
|
|
|
|
# NetworkManager: disable wifi power saving (fixes MT7922 radio drops)
|
|
mkdir -p /etc/NetworkManager/conf.d
|
|
backup_and_link "$DOTFILES/config/NetworkManager/wifi-powersave-off.conf" "/etc/NetworkManager/conf.d/wifi-powersave-off.conf"
|
|
|
|
if ! grep -q "rc.kanata" /etc/rc.d/rc.local; then
|
|
echo "" >> /etc/rc.d/rc.local
|
|
echo "# Start kanata key remapper" >> /etc/rc.d/rc.local
|
|
echo "if [ -x /etc/rc.d/rc.kanata ]; then" >> /etc/rc.d/rc.local
|
|
echo " /etc/rc.d/rc.kanata start" >> /etc/rc.d/rc.local
|
|
echo "fi" >> /etc/rc.d/rc.local
|
|
echo "added kanata to rc.local"
|
|
else
|
|
echo "rc.local already has kanata entry, skipping"
|
|
fi
|
|
else
|
|
echo ""
|
|
echo "skipping system links (run as root to install /etc/rc.d/rc.kanata and hook into rc.local)"
|
|
fi
|