88 lines
2.0 KiB
Bash
Executable File
88 lines
2.0 KiB
Bash
Executable File
#!/bin/zsh
|
|
# dotfiles installer
|
|
# usage: ./install.zsh [dotfiles_dir]
|
|
|
|
dotdir="${1:-$HOME/dotfiles}"
|
|
|
|
files=(.zshrc .vimrc .tmux.conf .config/karabiner/karabiner.json)
|
|
dirs=(.zsh .vim/plugin .tmux)
|
|
|
|
# backup and symlink files
|
|
for f in "${files[@]}"; do
|
|
src="$dotdir/$f"
|
|
dst="$HOME/$f"
|
|
[ ! -f "$src" ] && continue
|
|
mkdir -p "$(dirname "$dst")"
|
|
if [ -e "$dst" ] && [ ! -L "$dst" ]; then
|
|
mv "$dst" "${dst}.bak"
|
|
echo "backup: $dst -> ${dst}.bak"
|
|
fi
|
|
ln -sf "$src" "$dst"
|
|
echo "link: $dst -> $src"
|
|
done
|
|
|
|
# symlink directories
|
|
for d in "${dirs[@]}"; do
|
|
src="$dotdir/.${d#.}"
|
|
dst="$HOME/.${d#.}"
|
|
# handle nested dirs
|
|
if [[ "$d" == */* ]]; then
|
|
src="$dotdir/$d"
|
|
dst="$HOME/$d"
|
|
mkdir -p "$(dirname "$dst")"
|
|
else
|
|
src="$dotdir/$d"
|
|
dst="$HOME/$d"
|
|
fi
|
|
[ ! -d "$src" ] && continue
|
|
if [ -L "$dst" ]; then
|
|
rm "$dst"
|
|
elif [ -d "$dst" ]; then
|
|
mv "$dst" "${dst}.bak"
|
|
echo "backup: $dst -> ${dst}.bak"
|
|
fi
|
|
ln -s "$src" "$dst"
|
|
echo "link: $dst -> $src"
|
|
done
|
|
|
|
# symlink individual files in .local/bin
|
|
mkdir -p "$HOME/.local/bin"
|
|
for f in "$dotdir/.local/bin/"*; do
|
|
[ ! -f "$f" ] && continue
|
|
ln -sf "$f" "$HOME/.local/bin/$(basename "$f")"
|
|
echo "link: ~/.local/bin/$(basename "$f")"
|
|
done
|
|
|
|
# create vim undo dir
|
|
mkdir -p "$HOME/.vim/undo"
|
|
|
|
# install copilot.vim
|
|
copilot_dir="$HOME/.vim/pack/github/start/copilot.vim"
|
|
if [ ! -d "$copilot_dir" ]; then
|
|
git clone https://github.com/github/copilot.vim.git "$copilot_dir" 2>/dev/null
|
|
echo "copilot.vim: installed"
|
|
fi
|
|
|
|
# install font
|
|
fonturl="https://git.syui.ai/ai/font/raw/branch/main/aifont.ttf"
|
|
case "$(uname)" in
|
|
Darwin)
|
|
fontpath="$HOME/Library/Fonts/aifont.ttf"
|
|
;;
|
|
*)
|
|
fontpath="/usr/share/fonts/TTF/aifont.ttf"
|
|
;;
|
|
esac
|
|
if [ ! -f "$fontpath" ]; then
|
|
mkdir -p "$(dirname "$fontpath")"
|
|
if [ "$(uname)" = "Darwin" ]; then
|
|
curl -sL -o "$fontpath" "$fonturl"
|
|
else
|
|
sudo curl -sL -o "$fontpath" "$fonturl"
|
|
fc-cache -f 2>/dev/null
|
|
fi
|
|
echo "font: $fontpath"
|
|
fi
|
|
|
|
echo "done"
|