Files
dotfiles/setup.sh
1jamesthompson1 5d75b26c16 Replace tmux with kitty
- setup.sh: install kitty instead of tmux, fix clone URL
- .bashrc: remove tmux auto-start, add kitty SSH alias
- .tmux.conf: removed
- README.md: update to kitty documentation
2026-03-23 09:37:32 +13:00

71 lines
1.9 KiB
Bash

set -euo pipefail
# CLI: parse flags
PROMPT_DELETE=1
while [[ $# -gt 0 ]]; do
case "$1" in
--no-prompt|-n)
PROMPT_DELETE=0
shift
;;
--prompt|-p)
PROMPT_DELETE=1
shift
;;
*) break
esac
done
echo ">>> Bootstrapping new Debian-like machine..."
# 1. Update package list and install essentials
echo ">>> Installing bash, kitty, and vim..."
sudo apt update
sudo apt install -y bash kitty vim-gtk3 git curl
# 2. Clone your dotfiles (bare repo style)
if [ ! -d "$HOME/.dotfiles" ]; then
echo ">>> Cloning dotfiles repo..."
git clone --bare https://gitea.sjhl.nz/james/dotfiles $HOME/.dotfiles
else
echo ">>> Dotfiles repo already exists."
fi
# 3. Checkout dotfiles
dotfiles() {
/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME" "$@"
}
echo ">>> Checking out dotfiles..."
if ! dotfiles checkout; then
echo ">>> Conflicts detected! Handling conflicting dotfiles..."
mkdir -p "$HOME/.dotfiles-backup"
conflicts=$(dotfiles checkout 2>&1 | grep -E "\s+\." | awk '{print $1}')
if [ -n "$conflicts" ]; then
if [ "$PROMPT_DELETE" = "0" ]; then
while IFS= read -r f; do
[ -z "$f" ] && continue
mv "$f" "$HOME/.dotfiles-backup/$f"
done <<< "$conflicts"
else
while IFS= read -r f; do
[ -z "$f" ] && continue
if [ -t 1 ]; then
read -r -p "Move '$f' to backup? (y/N): " resp
case "$resp" in
[Yy]* ) mv "$f" "$HOME/.dotfiles-backup/$f" ;;
* ) echo "Skipping '$f'." ;;
esac
else
echo "Non-interactive environment detected; skipping '$f'."
fi
done <<< "$conflicts"
fi
fi
dotfiles checkout
fi
dotfiles config --local status.showUntrackedFiles no
echo ">>> Done! Bash, kitty, vim, and dotfiles are ready."