#!/usr/bin/env bash
echo "Adding Flathub repository"
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo > /dev/null
echo "Adding RPMFusion repository"
sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm > /dev/null
echo "Installing development dependencies"
sudo dnf install -y go python3-devel > /dev/null
echo "Install and configuring Neovim"
sudo dnf install -y neovim python3-neovim > /dev/null
ln -s $(pwd)/Neovim ~/.config/nvim > /dev/null
echo "Installing Python Language Server"
pip install --user 'python-lsp-server[all]'
pip install --user mypy-ls python-lsp-black pyls-isort
echo "Installing terminal tools"
sudo dnf install -y git tmux fzf the_silver_searcher jq fd-find ripgrep direnv > /dev/null
ln -s $(pwd)/Git/.gitconfig ~/.gitconfig > /dev/null
mkdir -p ~/.config/tmux
ln -s $(pwd)/Tmux/.tmux.conf ~/.config/tmux/tmux.conf > /dev/null
ln -s $(pwd)/Sqlite/.sqliterc ~/.sqliterc > /dev/null
echo "Configuring GTK"
ln -s $(pwd)/GTK3/gtk.css ~/.config/gtk-3.0/gtk.css > /dev/null
echo "Installing and configuring Fish"
ln -s $(pwd)/Fish ~/.config/fish > /dev/null
sudo dnf install -y fish util-linux-user > /dev/null
chsh -s $(which fish) > /dev/null
echo "Installing multimedia packages"
sudo dnf groupinstall -y multimedia > /dev/null
echo "Installing and removing desktop applications"
sudo dnf remove -y gnome-photos rhythmbox gnome-clocks libreoffice-core > /dev/null
sudo dnf install -y lollypop transmission youtube-dl ffmpeg gnome-tweaks gnome-passwordsafe polari celluloid > /dev/null
echo "Installing GSConnect"
sudo dnf install -y gnome-shell-extension-gsconnect nautilus-gsconnect
echo "Installing and enabling Syncthing"
sudo dnf install -y syncthing
systemctl enable --user --now syncthing
echo "Downloading Vim Plug"
git clone https://github.com/wbthomason/packer.nvim ~/.local/share/nvim/site/pack/packer/start/packer.nvim
echo "Configuring GNOME Settings"
gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true > /dev/null
echo "Configuring keyboard shortcuts"
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/']"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding "<Primary><Alt>t"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ command "gnome-terminal"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name "Launch Terminal"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ binding "<Primary><Shift>Escape"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ command "gnome-system-monitor"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ name "Launch System Monitor"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ binding "<Super>e"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ command "nautilus"
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/ name "Launch File Explorer"
echo "Configuring DNF to be faster"
sudo bash -c 'echo "max_parallel_downloads=10" >> /etc/dnf/dnf.conf'
sudo bash -c 'echo "metadata_expire=86400" >> /etc/dnf/dnf.conf'
sudo ln -s $(pwd)/DNF/dnf-check-update.service /etc/systemd/system/dnf-check-update.service > /dev/null
sudo ln -s $(pwd)/DNF/dnf-check-update.timer /etc/systemd/system/dnf-check-update.timer > /dev/null
sudo systemctl enable dnf-check-update.timer
sudo systemctl start dnf-check-update.timer
echo "Installing fonts"
sudo dnf install -y jetbrains-mono-fonts
echo "Configuring GNOME Terminal colorscheme"
default_profile_id=$(dconf read /org/gnome/terminal/legacy/profiles:/default | sed "s/^'//" | sed "s/'\$//")
dconf write "/org/gnome/terminal/legacy/profiles:/:$default_profile_id/palette" "['rgb(255,255,255)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(255,255,255)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)', 'rgb(0,0,0)']"
dconf write "/org/gnome/terminal/legacy/profiles:/:$default_profile_id/background-color" "'rgb(245,245,245)'"
dconf write "/org/gnome/terminal/legacy/profiles:/:$default_profile_id/foreground-color" "'rgb(34,34,34)'"
dconf write "/org/gnome/terminal/legacy/profiles:/:$default_profile_id/font" "'JetBrains Mono 11'"
dconf write "/org/gnome/terminal/legacy/profiles:/:$default_profile_id/visible-name" "'Monochrome'"
dconf write "/org/gnome/terminal/legacy/profiles:/:$default_profile_id/use-system-font" false
dconf write "/org/gnome/terminal/legacy/profiles:/:$default_profile_id/use-theme-colors" false