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