56 lines
1.2 KiB
Bash
Executable File
56 lines
1.2 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
|
|
|
|
# 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!"
|