#!/bin/sh
#
if [ ! -f /etc/debian_version ]; then 
    echo "Unsupported Linux Distribution. Prepared for Debian"
    exit 1
fi
################################################################################
#
#
#  Install KVM @Linux Mint 22
# 
# 
################################################################################
#
# Preperations:
#   - Warning your GPU has to support UEFI.
#   - Check if your motherboard BIOS version is recent. (this can help you with having better IOMMU groups)
#   - Check if your system is installed in UEFI mode. (CSM disabled in bios for AMD)
#
# AMD:
#   - IOMMU = enabled
#   - NX mode = enabled
#   - SVM mode = enabled
#
################################################################################
#
# wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
#
# https://www.youtube.com/watch?v=_JTEsQufSx4
#
################################################################################
#
# journalctl -xeu libvirtd.service
#
################################################################################
sudo apt install -y \
	qemu-kvm \
	qemu-system \
	libvirt-clients \
	libvirt-daemon-system \
	bridge-utils \
	virt-manager \
	ovmf \
	swtpm \
	virgl-server \
	libvirglrenderer1 \
	libguestfs-tools \
	libosinfo-bin


echo -e '\033[33m------Enable IOMMU------\033[33m'
echo -e "\033[0m"
sleep 2
sudo cp /etc/default/grub /etc/default/grub_kvm 
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"/GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on iommu=pt video=efifb:off quiet splash"/g' /etc/default/grub
sudo update-grub


echo -e '\033[33m------Configuring of Libvirt------\033[33m'
echo -e "\033[0m"
sleep 2
sudo sed -i 's/#unix_sock_group = "libvirt"/unix_sock_group = "libvirt"/g' /etc/libvirt/libvirtd.conf
sudo sed -i 's/#unix_sock_rw_perms = "0770"/unix_sock_rw_perms = "0770"/g' /etc/libvirt/libvirtd.conf

# IMPORTANT: You need this for detailed logs:
echo -e 'log_filters="1:qemu"' | sudo tee -a /etc/libvirt/libvirtd.conf
echo -e 'log_outputs="1:file:/var/log/libvirt/libvirtd.log"' | sudo tee -a /etc/libvirt/libvirtd.conf

sudo usermod -a -G libvirt $(whoami)

sudo sed -i 's/#user = "root"/user = "$USER"/g' /etc/libvirt/qemu.conf

sudo systemctl enable --now libvirtd

# Verify libvirt has been added to your users:
# sudo groups $(whoami)


echo -e '\033[33m------Configuring QEMU------\033[33m'
echo -e "\033[0m"
sleep 2
sudo cp /etc/libvirt/qemu.conf /etc/libvirt/qemu.conf.default
sudo sed -i 's/#user = "libvirt-qemu"/user = "zulumann"/g' /etc/libvirt/qemu.conf
sudo sed -i 's/#group = "kvm"/group = "zulumann"/g' /etc/libvirt/qemu.conf

sudo usermod -a -G kvm,libvirt $(whoami)

# Verify libvirt and kvm has been added to your users groups:
# sudo groups $(whoami)


echo -e '\033[33m------Enabling the virtual machine default network------\033[33m'
echo -e "\033[0m"
sleep 2
sudo virsh net-autostart default && sudo virsh net-start default


echo -e '\033[33m------Enabling copy-and-paste between the guest and the host------\033[33m'
echo -e "\033[0m"
sleep 2
sudo apt install spice-vdagent
sudo systemctl enable --now spice-vdagentd.service


echo -e '\033[33m------Setup Directorys------\033[33m'
echo -e "\033[0m"
sleep 2
#mkdir -p /home/$USER/VM-Images && sudo chown :kvm ~/VM-Images
#mkdir -p /home/$USER/ISOs && sudo chown :kvm ~/ISOs