80 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 | |
| 
 |