Files
dotfiles/setup.sh
T
poprhythm 7187fabcf8 Add claude config and rework bash dotfile management
- Add claude stow package (settings.json, statusline-command.sh)
- Replace .bashrc stow with source-injection approach to avoid conflicts
  with tools like oh-my-bash that want to own ~/.bashrc
- Move all bash customizations into .bashrc.omb, sourced conditionally
- setup.sh now checks for existing source lines before appending
2026-02-24 02:52:20 +00:00

63 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
DOTFILES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "Setting up dotfiles from $DOTFILES_DIR"
stow_pkg() {
local pkg="$1"
stow -v -d "$DOTFILES_DIR" -t "$HOME" "$pkg"
}
ensure_sourced() {
local file="$1"
local bashrc="$HOME/.bashrc"
local source_line="[ -f \"$file\" ] && source \"$file\""
if [ ! -f "$bashrc" ]; then
echo "WARNING: ~/.bashrc not found, skipping source injection for $file"
return
fi
if grep -qF "$file" "$bashrc"; then
echo "OK: $file already sourced in ~/.bashrc"
else
echo "" >> "$bashrc"
echo "# Added by dotfiles setup" >> "$bashrc"
echo "$source_line" >> "$bashrc"
echo "ADDED: source $file to ~/.bashrc"
fi
}
# ssh — always available
stow_pkg ssh
# claude
if [ -d "$HOME/.claude" ]; then
stow_pkg claude
else
echo "SKIP: claude (~/.claude not found)"
fi
# bash — stow dotfiles, then ensure ~/.bashrc sources them
stow_pkg bash
ensure_sourced "$HOME/.bashrc.omb"
# kitty
if command -v kitty &>/dev/null; then
stow_pkg kitty
else
echo "SKIP: kitty (not installed)"
fi
# fastfetch
if command -v fastfetch &>/dev/null; then
stow_pkg fastfetch
else
echo "SKIP: fastfetch (not installed)"
fi
echo "Done!"