dotfiles/link.sh

102 lines
3.9 KiB
Bash
Raw Normal View History

2026-07-30 04:40:03 -04:00
#!/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"
2026-07-30 05:04:14 -04:00
backup_and_link "$DOTFILES/config/profile" "$HOME/.profile"
backup_and_link "$DOTFILES/config/xinitrc" "$HOME/.xinitrc"
2026-07-30 04:40:03 -04:00
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"
2026-07-30 02:02:09 -04:00
backup_and_link "$DOTFILES/config/nyxt" "$HOME/.config/nyxt"
2026-08-01 12:36:16 -04:00
backup_and_link "$DOTFILES/config/yazi" "$HOME/.config/yazi"
2026-07-30 04:40:03 -04:00
2026-08-01 13:15:36 -04:00
backup_and_link "$DOTFILES/config/rofi" "$HOME/.config/rofi"
2026-08-02 12:41:30 -04:00
backup_and_link "$DOTFILES/config/zathura" "$HOME/.config/zathura"
2026-08-07 00:59:48 -04:00
# StumpWM contrib modules (not stored in dotfiles, cloned on demand)
STUMPWM_MODULES="$HOME/.stumpwm.d/modules"
if [ ! -d "$STUMPWM_MODULES" ]; then
echo "cloning stumpwm-contrib modules..."
git clone https://github.com/stumpwm/stumpwm-contrib "$STUMPWM_MODULES"
else
echo "stumpwm-contrib already present, skipping"
fi
2026-08-06 15:50:20 -04:00
# 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"
2026-08-02 12:41:30 -04:00
# 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"
2026-08-07 00:59:48 -04:00
backup_and_link "$DOTFILES/scripts/mpv-pick.sh" "$HOME/.local/bin/mpv-pick.sh"
backup_and_link "$DOTFILES/scripts/mpv-url.sh" "$HOME/.local/bin/mpv-url.sh"
backup_and_link "$DOTFILES/scripts/yt-download.sh" "$HOME/.local/bin/yt-download.sh"
2026-08-02 12:41:30 -04:00
chmod +x "$DOTFILES/scripts/pinentry-smart"
2026-08-01 13:15:36 -04:00
2026-07-30 23:04:33 -04:00
# 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"
2026-07-30 04:40:03 -04:00
# 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
2026-08-02 12:41:30 -04:00
# 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"
2026-07-30 04:40:03 -04:00
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