#!/usr/bin/env bash
USER=$(whoami)
export DEBIAN_FRONTEND=noninteractive
export PATH="$HOME/.local/bin:$PATH"
sudo rm -rf /var/lib/dpkg/lock
sudo rm -rf /var/cache/debconf/*.*

# colors
NORMAL=`tput sgr0`
RED=`tput setaf 1`
GREEN=`tput setaf 2`
Done="${GREEN}Done ✓${NORMAL}"

clear
echo "${RED}Disclaimer:${NORMAL} This script is bloated"
sleep 5

echo "${RED}Do you want to change server password?${NORMAL}"
read -p "y/n:
" prompt
if [[ $prompt == "y" || $prompt == "Y" || $prompt == "yes" || $prompt == "Yes" ]]
then
  sudo passwd $USER
else
  echo "${GREEN}Password wasn't Changed.${NORMAL}"
fi


echo "${RED}Enabling Universe, Multiverse and Restricted repositories${NORMAL}"
sleep 1
sudo add-apt-repository universe > /dev/null
sudo add-apt-repository multiverse > /dev/null
sudo add-apt-repository restricted > /dev/null
echo $Done

echo "${RED}Checking for updates.${NORMAL}"
sleep 1
sudo apt-get -y update > /dev/null
sudo apt-get -y upgrade > /dev/null 2>&1
sudo apt-get -y autoremove  > /dev/null
echo $Done

echo "${RED}Setting UTF8${NORMAL}"
sleep 1
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
sudo apt-get install -qq language-pack-en-base > /dev/null
sudo apt-get install -qq software-properties-common > /dev/null
echo $Done

echo "${RED}Adding a auto updater to crontab${NORMAL}"
sleep 1
sudo crontab -l > updater
sudo echo "0 0 * * *    sudo apt-get update && sudo apt-get upgrade -y && sudo apt autoremove && echo updated@SUCCESS >> ~/.update.log" >> updater
sudo crontab updater
sudo rm updater
echo $Done

echo "${RED}Installing Apt-fast${NORMAL}"
sudo add-apt-repository -y ppa:apt-fast/stable > /dev/null
sudo apt-get -qq update > /dev/null && sudo DEBIAN_FRONTEND=noninteractive apt-get -y install apt-fast > /dev/null 
echo $Done

echo "${RED}Installing day2day packages${NORMAL}"
sudo apt-get install -qq ncdu tmux irssi tree rar unrar zip unzip htop atop p7zip-full neovim vnstati bat > /dev/null 2>&1
mkdir -p ~/.local/bin
ln -s /usr/bin/batcat ~/.local/bin/bat > /dev/null 2>&1

echo $Done

echo "${RED}Now installing some python essential packages${NORMAL}"
sudo apt-get install -qq python3-pip python3-dev python3-utmp python3-virtualenv  > /dev/null 2>&1
pip install bs4 youtube-dl gallery-dl python-dateutil requests setuptools botocore oauthlib  docutils requests-oauthlib tqdm pytest wheel urllib3 > /dev/null 2>&1
echo $Done

echo "${RED}Installing rclone${NORMAL}"
sleep 1
curl -s https://rclone.org/install.sh | sudo bash > /dev/null 2>&1
echo $Done

echo "${RED}Installing a good vimrc${NORMAL}"

git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime > /dev/null 2>&1
sh ~/.vim_runtime/install_awesome_vimrc.sh > /dev/null 2>&1
echo $Done

echo "${RED}Installing vsftpd${NORMAL}"
sudo apt-get install -qq vsftpd  > /dev/null
sudo systemctl start vsftpd  > /dev/null 2>&1
sudo systemctl enable vsftpd > /dev/null 2>&1
sudo sed -i 's|"write_enable=NO"|"write_enable=YES"|g' /etc/vsftpd.conf
sudo tee -a /etc/vsftpduserlist.conf >> /dev/null <<'user'
ubuntu
root
user
sudo systemctl restart vsftpd  > /dev/null 2>&1
echo $Done

echo "${RED}Installing some compiling packages${NORMAL}"
sudo apt-get install -qq build-essential libssl-dev autoconf automake cmake ccache libicu-dev git-core libass-dev zlib1g-dev yasm texinfo pkg-config libtool > /dev/null 2>&1
echo $Done

echo "${RED}Installing ffmpeg, please refer to https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu for extra codecs${NORMAL}"
sleep 5
sudo apt-get install -qq ffmpeg > /dev/null 2>&1
echo $Done

echo "${RED}Installing Language packages${NORMAL}"
sudo add-apt-repository -y ppa:openjdk-r/ppa > /dev/null
sudo add-apt-repository -y ppa:linuxuprising/libpng12 > /dev/null # I am skipping php due to reasons and only adding its repo in case there is a need to install it.
sudo apt-get install -qq nginx golang perl openjdk-15-jre > /dev/null 2>&1 
curl -sL https://deb.nodesource.com/setup_current.x | sudo -E bash - > /dev/null && sudo apt-get -y install nodejs > /dev/null
echo $Done # sudo apt-get install -qq curl debconf-utils php-pear php7.4-curl php7.4-dev php7.4-gd php7.4-mbstring php7.4-zip php7.4-mysql php7.4-xml php7.4-fpm php7.4-intl php7.4-bcmath > /dev/null 
 
#echo "${RED}Installing aria2 & transmission${NORMAL}"
sudo apt-get install -qq aria2 > /dev/null
#sudo apt-get install -qq transmission-cli transmission-daemon > /dev/null && sudo /etc/init.d/transmission-daemon stop > /dev/null && mkdir ~/downloads && sudo chown ubuntu:debian-transmission ~/downloads && sudo chmod g+w ~/downloads && clear && sudo sed -i 's|"/var/lib/transmission-daemon/downloads"|"~/downloads"|g' /etc/transmission-daemon/settings.json && sudo sed -i 's|"rpc-whitelist-enabled": true|"rpc-whitelist-enabled": false|g' /etc/transmission-daemon/settings.json && sudo sed -i 's|"rpc-authentication-required": true|"rpc-authentication-required": false|g' /etc/transmission-daemon/settings.json > /dev/null
#echo $Done
# not installing but kept in the code for future purposes

echo "${RED}changing MOTD${NORMAL}" # "touch .hushlogin" to "remove" the motd instead of deleting it.
sudo apt-get install -qq update-motd > /dev/null
sudo rm -rf /etc/update-motd.d/*
sudo apt-get install -qq inxi screenfetch > /dev/null
sudo touch /etc/update-motd.d/01-custom 
sudo chmod +x /etc/update-motd.d/01-custom

sudo tee /etc/update-motd.d/01-custom > /dev/null <<'MOTD'
#!/bin/bash
echo GENERAL SYSTEM INFORMATION
/usr/bin/screenfetch
echo
echo SYSTEM DISK USAGE
export TERM=xterm; inxi -D
echo
MOTD
echo $Done

echo "${RED}Now installing oh-my-tmux${NORMAL}"
cd && git clone --quiet https://github.com/gpakosz/.tmux.git > /dev/null && ln -s -f .tmux/.tmux.conf > /dev/null && cp .tmux/.tmux.conf.local . 
echo $Done

echo "${RED}Now installing ZSH${NORMAL}"
sleep 1
sudo apt-get update -qq && sudo apt-get install -qq zsh > /dev/null 2>&1 && \
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
echo -e "${GREEN}Making Oh My Zsh hawt...${NORMAL}"
git clone --quiet https://github.com/zsh-users/zsh-syntax-highlighting $HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting > /dev/null 
git clone --quiet https://github.com/zsh-users/zsh-autosuggestions $HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions > /dev/null 
git clone --quiet https://github.com/zsh-users/zsh-completions $HOME/.oh-my-zsh/custom/plugins/zsh-completions > /dev/null 
wget https://raw.githubusercontent.com/rupa/z/master/z.sh -q -O ~/.z > /dev/null 2>&1
git clone --quiet --depth=1 https://github.com/romkatv/powerlevel10k.git $HOME/.oh-my-zsh/custom/themes/powerlevel10k > /dev/null
[[ -z $(grep "autoload -U compinit && compinit" $HOME/.zshrc) ]] && echo "autoload -U compinit && compinit" >> $HOME/.zshrc
	
sed -i '/^ZSH_THEME=/c\ZSH_THEME="random"' $HOME/.zshrc
sed -i '/^plugins=*=/c\plugins=(command-not-found tmux tmuxinator jump z zsh-syntax-highlighting zsh-autosuggestions zsh-completions)' $HOME/.zshrc
echo "export PATH=\"/home/$USER/.local/bin:\$PATH\"" >> ~/.zshrc 
sudo tee -a $HOME/.zshrc >> /dev/null <<'ALIAS'
##############
#  A L I A S #
##############
alias py="python3"
alias n="nano"
alias nv="nvim"
alias nnao="nano"
alias pip="pip3"
alias s="sudo"
alias update="sudo apt-get update"
alias upgrade="sudo apt-get -y upgrade"
alias install="sudo apt-get -y install"
alias reboot="sudo reboot"
alias cls="clear"
alias lsd="ls"
alias mount="rclone mount"
alias rm="sudo rm -rf"
alias mkd="mkdir"
alias ytdl="youtube-dl"
alias gdl="gallery-dl"
alias git-push-all="git add * -f && git commit -m \"pushed\""
alias aria2="aria2c"
alias refresh="source ~/.zshrc"
ALIAS


#sudo chsh -s /bin/zsh $USER
sudo echo "bash -c zsh" >> .bashrc # This is used since for some cloud service changing the shell isn't permitted so a work around for it.
echo $Done

echo "${GREEN}ALL DONE!${NORMAL}"
echo "${GREEN}It is recommended to ${RED}reboot${NORMAL}${GREEN} your server now!${NORMAL}"