My dotfiles
at main 55 lines 1.8 kB view raw
1#!/bin/bash 2 3set -e 4 5ensure_link() { 6 if [ -f "$HOME/$2" ] || [ -L "$HOME/$2" ]; then 7 rm "${HOME:?}/$2" 8 elif [ -d "$HOME/$2" ] && [ ! -L "$HOME/$2" ]; then 9 echo "Directory $HOME/$2 already exists; aborting" 10 exit 1 11 fi 12 ln -s "${HOME:?}/$1" "${HOME:?}/$2" 13} 14 15ensure_dir() { 16 test -d "$HOME/$1" || mkdir -p "$HOME/$1" 17} 18 19ensure_git_repo() { 20 test -d "$1" || git clone --recursive "$2" "$1" 21} 22 23ensure_dir ".config/powershell" 24ensure_dir ".local/bin" 25 26if uname -a | grep -q xnu; then 27 ensure_link "src/dotfiles/aerc" "Library/Preferences/aerc" 28 ensure_link "src/dotfiles/hammerspoon" ".hammerspoon" 29else 30 ensure_link "src/dotfiles/aerc" ".config/aerc" 31fi 32 33ensure_link "src/dotfiles/atuin" ".config/atuin" 34ensure_link "src/dotfiles/chawan" ".config/chawan" 35ensure_link "src/dotfiles/default-go-packages" ".default-go-packages" 36ensure_link "src/dotfiles/digrc" ".digrc" 37ensure_link "src/dotfiles/fish" ".config/fish" 38ensure_link "src/dotfiles/ghostty" ".config/ghostty" 39ensure_link "src/dotfiles/gitconfig" ".gitconfig" 40ensure_link "src/dotfiles/gitignore" ".gitignore" 41ensure_link "src/dotfiles/helix" ".config/helix" 42ensure_link "src/dotfiles/jj" ".config/jj" 43ensure_link "src/dotfiles/kitty" ".config/kitty" 44ensure_link "src/dotfiles/mise" ".config/mise" 45ensure_link "src/dotfiles/ripgreprc" ".ripgreprc" 46ensure_link "src/dotfiles/zellij" ".config/zellij" 47ensure_link "src/dotfiles/zsh/zshenv" ".zshenv" 48ensure_link "src/dotfiles/zsh/zshrc" ".zshrc" 49 50if uname -a | grep -q microsoft; then 51 for component in ssh ssh-add scp sftp ssh-keygen; do 52 [ ! -L ~/.local/bin/$component ] && ln -s /mnt/c/Windows/System32/OpenSSH/${component}.exe ~/.local/bin/$component 53 done 54 ensure_link "src/dotfiles/scripts/op" ".local/bin/op" 55fi