#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../lib/common.sh" source "$SCRIPT_DIR/../lib/package.sh" log_info "Installing packages" # Essential packages PACKAGES=( "git" "curl" "wget" "tmux" "jq" "fzf" "ripgrep" ) # Modern CLI tools MODERN_TOOLS=( "starship" "zoxide" "eza" "fd" "gh" ) # Install essential packages for pkg in "${PACKAGES[@]}"; do if command_exists "$pkg" || command_exists "${pkg}find" 2>/dev/null; then log_success "$pkg already installed" else log_info "Installing $pkg" case "$pkg" in fd) install_package fd fd-find fd ;; *) install_package "$pkg" ;; esac fi done # Install modern tools for tool in "${MODERN_TOOLS[@]}"; do if command_exists "$tool"; then log_success "$tool already installed" continue fi log_info "Installing $tool" case "$tool" in starship) if is_debian; then curl -sS https://starship.rs/install.sh | sh -s -- -y else install_package starship fi ;; zoxide) if is_debian && ! package_installed zoxide; then install_cargo zoxide else install_package zoxide fi ;; eza) if is_debian && ! package_installed eza; then if command_exists exa; then log_success "exa (predecessor) already installed" else install_cargo eza fi else install_package eza fi ;; gh) if is_debian && ! package_installed gh; then maybe_sudo mkdir -p -m 755 /etc/apt/keyrings wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | maybe_sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | maybe_sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null update_package_cache fi install_package gh gh github-cli ;; *) install_package "$tool" ;; esac done # Install TPM (Tmux Plugin Manager) TPM_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/tmux/plugins/tpm" if [ ! -d "$TPM_DIR" ]; then log_info "Installing TPM (Tmux Plugin Manager)" ensure_dir "$(dirname "$TPM_DIR")" git clone https://github.com/tmux-plugins/tpm "$TPM_DIR" log_success "TPM installed" else log_success "TPM already installed" fi log_success "All packages installed"