7187fabcf8
- 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
63 lines
1.3 KiB
Bash
Executable File
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!"
|