#!/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" # 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 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