#!/bin/bash # Function to install packages install_packages() { echo "Updating package list..." sudo apt update echo "Installing basic packages..." sudo apt install -y tmux vim git pspg bat fzf ripgrep } # Install Tmux Plugin Manager (TPM) if not already installed install_tpm() { if [[ ! -d ~/.tmux/plugins/tpm ]]; then echo "Installing Tmux Plugin Manager..." git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm else echo "Tmux Plugin Manager already installed, skipping..." fi } # Install Vundle (Vim plugin manager) if not already installed install_vundle() { if [[ ! -d ~/.vim/bundle/Vundle.vim ]]; then echo "Installing Vundle for Vim..." git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim else echo "Vundle already installed, skipping..." fi } # Install git-bash-prompt if not already installed install_git_bash_prompt() { if [[ ! -d ~/.bash-git-prompt ]]; then echo "Installing git-bash-prompt..." git clone https://github.com/magicmonty/bash-git-prompt.git ~/.bash-git-prompt --depth=1 else echo "git-bash-prompt already installed, skipping..." fi } # Back up and create symlink create_symlink() { local target=$1 local link_name=$2 if [[ -L $link_name || -f $link_name ]]; then echo "Backing up existing $link_name to ${link_name}.backup" mv "$link_name" "${link_name}.backup" fi echo "Creating symlink: $link_name -> $target" ln -s "$target" "$link_name" } # Deploy configuration files as symlinks deploy_configs() { echo "Deploying configuration files as symlinks..." CONFIG_DIR="$(pwd)/dotfiles" # Use the local 'dotfiles' directory in the repo for config in .bashrc .bashrc_local .vimrc .gitconfig .pspgconf .psqlrc .tmux.conf ; do create_symlink "$CONFIG_DIR/$config" ~/$config done echo "Sourcing .bashrc..." source ~/.bashrc } # Main script main() { install_packages install_tpm install_vundle install_git_bash_prompt deploy_configs echo "Setup complete! Please restart your shell or run 'source ~/.bashrc' for changes to take effect." } main