bootstrap (1677B)
1 #!/usr/bin/env bash 2 set -euo pipefail 3 4 ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" 5 DOT="$HOME/.dotfiles" 6 7 mkdir -p "$HOME/.config/direnv" 8 mkdir -p "$HOME/.config/nvim" 9 mkdir -p "$HOME/.config/redbrick" 10 mkdir -p "$HOME/.config/git" 11 mkdir -p "$HOME/.config/yazi" 12 13 # Install Homebrew if missing 14 if ! command -v brew >/dev/null 2>&1; then 15 echo "Installing Homebrew..." 16 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 17 18 # Make brew available in this script run 19 if [[ -x /opt/homebrew/bin/brew ]]; then 20 eval "$(/opt/homebrew/bin/brew shellenv)" 21 elif [[ -x /usr/local/bin/brew ]]; then 22 eval "$(/usr/local/bin/brew shellenv)" 23 elif [[ -x /home/linuxbrew/.linuxbrew/bin/brew ]]; then 24 eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" 25 fi 26 fi 27 28 # Install packages 29 if [[ -f "$ROOT/Brewfile" ]]; then 30 echo "Installing Brewfile packages..." 31 brew bundle install --file "$ROOT/Brewfile" 32 else 33 echo "No Brewfile found; skipping brew bundle install" >&2 34 fi 35 36 # Symlink configs 37 echo "Linking configs..." 38 ln -snf "$ROOT/zsh/zshrc" "$HOME/.zshrc" 39 ln -snf "$ROOT/zsh/secret.zsh" "$DOT/zsh/secret.zsh" 2>/dev/null || true 40 ln -snf "$ROOT/config/direnv/direnvrc" "$HOME/.config/direnv/direnvrc" 41 ln -snf "$ROOT/config/git/config" "$HOME/.gitconfig" 42 ls -snf "$ROOT/config/git/config" "$HOME/.config/git/config" 2>/dev/null || true 43 ln -snf "$ROOT/config/nvim/init.lua" "$HOME/.config/nvim/init.lua" 44 ln -snf "$ROOT/config/redbrick" "$HOME/.config/redbrick" 2>/dev/null || true 45 ln -snf "$ROOT/config/yazi/yazi.toml" "$HOME/.config/yazi/yazi.toml" 2>/dev/null || true 46 47 echo "Bootstrap complete. Restart your shell." 48