#!/usr/bin/env bash
# A script for setting up post install
# Relies on Flatpak to be installed
# Created by Blake Ridgway

# Enable RPM Fusion

sudo dnf install \
  https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

sudo dnf install \
  https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

# Update system after confirming RPM Fusion is enabled
sudo dnf update; sudo dnf upgrade

# Verify flatpak is engaged properly
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

PACKAGE_LIST=(
  bpytop
  cargo
  discord
  gcc-c++
  git
  golang
  fd-find
  java-openjdk
  neofetch
  neovim
  python3
  python3-pip
  ripgrep
  rust
  solaar
  tilix
  virt-manager
  zsh
)

FLATPAK_LIST=(
  com.bitwarden.desktop
  com.slack.Slack
  md.obsidian.Obsidian
  net.veloren.airshipper
  xyz.diamondb.gtkcord4
)

echo #######################
echo # Installing Packages #
echo #######################

# iterate through package and installs them
for package_name in ${PACKAGE_LIST[@]}; do
  if ! sudo dnf list --installed | grep -q "^\<$package_name\>"; then
    echo "Installing $package_name..."
    sleep .5
    sudo dnf install "$package_name" -y
    echo "$package_name has been installed"
  else
    echo "$package_name already installed"
  fi
done

for flatpak_name in ${FLATPAK_LIST[@]}; do
	if ! flatpak list | grep -q $flatpak_name; then
		flatpak install "$flatpak_name" -y
	else
		echo "$package_name already installed"
	fi
done


echo #######
echo # NVM #
echo #######
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

echo ########
echo # Node #
echo ########

nvm install node

echo ##########
echo # pynvim #
echo ##########

/usr/bin/python3 -m pip install pynvim

echo #######
echo # SSH #
echo #######

ssh-keygen -t ed25519 -C ${USER}@$(hostname --fqdn)

echo #####################
echo # Install Nerd Font #
echo #####################

# Nerd Font install
wget https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/Hack/Regular/complete/Hack%20Regular%20Nerd%20Font%20Complete.ttf
mkdir -p ~/.local/share/fonts 
cp Hack\ Regular\ Nerd\ Font\ Complete.ttf ~/.local/share/fonts/
fc-cache -f -v

echo ######################
echo # Installing OhMyZSH #
echo ######################

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

echo ##################
echo # Setup Starship #
echo ##################

curl -sS https://starship.rs/install.sh | sh

echo ########################
echo # Creating Config File #
echo ########################

mkdir -p ~/.config && touch ~/.config/starship.toml

echo ###################
echo # Enabling Config #
echo ###################

starship preset nerd-font-symbols > ~/.config/starship.toml

echo ###################
echo # Setting up nvim #
echo ###################

cp -r nvim/ ~/.config/nvim/

echo #######################
echo # Cleanup and Updates #
echo #######################

sudo dnf upgrade --refresh
flatpak update

echo ################
echo # File Cleanup #
echo ################

rm -r *.ttf *.tar.gz *.rpm

# Symlink files

FILES=( 'vimrc' 'vim' 'zshrc' 'zsh' 'agignore' 'gitconfig' 'gitignore' 'gitmessage' 'aliases' )
for file in ${FILES[@]}; do
  echo ""
  echo "Simlinking $file to $HOME"
  ln -sf "$PWD/$file" "$HOME/.$file"
  if [ $? -eq 0 ]
  then
    echo "$PWD/$file ~> $HOME/.$file"
  else
    echo 'Install failed to symlink.'
    exit 1
  fi
done
