1
0

setup.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/bin/bash
  2. # symlink dotfiles
  3. dir="$HOME/dotfiles"
  4. olddir="$HOME/dotfiles/bak" # backup directory
  5. files=".zshrc .zshrc.d .rc.d .bashrc .vimrc .bash_logout .gitconfig .gitignore_global .gemrc .vim .tmux.conf" # list of files/folders to symlink in homedir
  6. ## create dotfiles_old in homedir
  7. mkdir -p $olddir
  8. ## move any existing dotfiles in homedir to dotfiles_old directory, then create symlinks
  9. for file in $files; do
  10. [ -e "$HOME/$file" ] && mv -f "$HOME/$file" $olddir
  11. echo "Creating symlink to $file in ~"
  12. ln -sfn "$dir/$file" "$HOME/$file"
  13. done
  14. # ── App settings ─────────────────────────────────────────────────────────────
  15. # Symlink vetted, public-safe app configs from config/ into their real homes.
  16. # (See .gitignore — config/ is ignored by default, these files are opted in.)
  17. link_config() { # link_config <repo-path> <abs-dest>
  18. local src="$dir/$1" dest="$2"
  19. [ -e "$src" ] || return 0
  20. mkdir -p "$(dirname "$dest")"
  21. if [ -e "$dest" ] && [ ! -L "$dest" ]; then
  22. mkdir -p "$olddir/$(dirname "$1")"
  23. mv -f "$dest" "$olddir/$1"
  24. fi
  25. ln -sfn "$src" "$dest"
  26. echo "Linked $1 -> $dest"
  27. }
  28. link_config config/ghostty/config "$HOME/.config/ghostty/config"
  29. link_config config/zed/settings.json "$HOME/.config/zed/settings.json"
  30. link_config config/zed/keymap.json "$HOME/.config/zed/keymap.json"
  31. link_config config/zed/tasks.json "$HOME/.config/zed/tasks.json"
  32. # Rectangle: prefs domain can't be symlinked — import the cleaned export instead.
  33. if command -v defaults >/dev/null 2>&1 && [ -f "$dir/config/rectangle/import.sh" ]; then
  34. bash "$dir/config/rectangle/import.sh" || true
  35. fi