Files
dotfiles/install.zsh
2026-04-03 18:00:41 +09:00

90 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 vim-plug
if [ ! -f "$HOME/.vim/autoload/plug.vim" ]; then
curl -fLo "$HOME/.vim/autoload/plug.vim" --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
echo "vim-plug: installed"
vim +PlugInstall +qall 2>/dev/null
echo "vim plugins: 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"