#!/bin/bash packages="sshpass tmux python3-pip cargo vim-nox build-essential \ python3-dev gcc-9 g++-9 python2 python2-dev guestfish \ libncurses-dev python3.10-venv sqlite3 build-essential \ mono-complete libboost-dev, libfreeimage-dev bison flex \ ca-certificates curl apt-transport-https lsb-release gnupg\ qemu-system-arm autoconf libtool libtool-bin pkg-config \ libarchive-dev libcurl4-openssl-dev libssl-dev libgpgme-dev" pip="awscli cmake" read -p "Are you sure? (Y/N) " if [[ "$REPLY" != "Y" ]] then echo "OK, Bye!" exit 0 fi echo "Creating necessary directories ..." mkdir -p ~/.config release=$(lsb_release -d | grep -i ubuntu > /dev/null && echo ubuntu || echo unknown) echo "Release is $release" install_packages() { if [[ "$release" == "ubuntu" ]] then echo "Installing packages ..." sudo apt install -y $packages echo "Updating alternatives ..." sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 9 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 9 curl -sL https://packages.microsoft.com/keys/microsoft.asc | \ gpg --dearmor | \ sudo tee /etc/apt/trusted.gpg.d/microsoft.gpg > /dev/null AZ_REPO=$(lsb_release -cs) echo "deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ $AZ_REPO main" | \ sudo tee /etc/apt/sources.list.d/azure-cli.list sudo apt update sudo apt install azure-cli sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update sudo apt-get install -y kubectl sudo apt-get upgrade sudo apt-get autoremove fi } install_pip() { if [[ -f /usr/bin/pip3 ]] then echo "Pip 3 detected, installing packages ..." pip install --user -U $pip fi } setup_inputrc() { if [[ -f ~/.dotfiles/inputrc ]] then echo "Installing inputrc ..." rm -rf ~/.inputrc ln -sf ~/.dotfiles/inputrc ~/.inputrc fi } setup_bash() { if [[ -f ~/.dotfiles/bash/bashrc ]] then echo "Dotfiles bashrc found, linking it ..." rm -rf ~/.bashrc ln -sf ~/.dotfiles/bash/bashrc ~/.bashrc fi } setup_tmux() { if [[ -f ~/.dotfiles/tmux/tmux.conf ]] then echo "Dotfiles tmux.conf found, linking it ..." rm -rf ~/.tmux.conf ln -sf ~/.dotfiles/tmux/tmux.conf ~/.tmux.conf rm -rf ~/.tmux ln -sf ~/.dotfiles/tmux ~/.tmux fi } install_starship() { # I hate this but no other option worked ... if [[ ! -f /usr/local/bin/starship ]] then echo "Installing starship ..." curl -sS https://starship.rs/install.sh | sh fi } setup_starship() { if [[ -f ~/.dotfiles/starship/starship.toml ]] then echo "Installing starship configuration ..." rm -rf ~/.config/starship.toml ln -sf ~/.dotfiles/starship/starship.toml ~/.config/starship.toml fi } setup_git() { if [[ -f ~/.dotfiles/git/gitconfig ]] then echo "Installing git configuration ..." rm -rf ~/.gitconfig ln -sf ~/.dotfiles/git/gitconfig ~/.gitconfig fi } setup_ssh() { if [[ -d ~/.dotfiles/ssh ]] then echo "Installing ssh configuration ..." rm -rf ~/.ssh ln -sf ~/.dotfiles/ssh ~/.ssh fi } setup_vim() { if [[ -d ~/.dotfiles/vim ]] then echo "Installing vim configuration ..." rm -rf ~/.vimrc mkdir -p ~/.vim/bundle mkdir -p ~/.vimundo if [[ ! -d ~/.vim/bundle/Vundle.vim ]] then git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim fi ln -sf ~/.dotfiles/vim/vimrc ~/.vimrc echo "Installing vim plugins ..." vim +'PlugInstall --sync' +qa fi } install_ycm() { if [[ -d ~/.vim/bundle/YouCompleteMe ]] then echo "Installing ycm dependencies" python3 ~/.vim/bundle/YouCompleteMe/install.py fi } install_projects() { if [[ -d ~/.dotfiles/projects ]] then for f in ~/.dotfiles/projects/* do if [[ -f $f/basegit ]] then basegit=$(<$f/basegit) echo "Base git $basegit sourced ..." fi if [[ -f $f/projects ]] then while read -r project do dir=$(basename $f) mkdir -p ~/dev/${dir} echo "Cloning ${basegit}${project} in ~/dev/${dir}/${project}" git clone ${basegit}${project} ~/dev/${dir}/${project} done < $f/projects fi done fi } if [[ $1 != "" ]] then $1 else install_packages install_pip setup_inputrc setup_bash setup_tmux install_starship setup_starship setup_ssh setup_git setup_vim install_ycm install_projects fi . ~/.bashrc