#!/bin/bash
#-------------------------------------------------------------------------------
# 
#-------------------------------------------------------------------------------



# Config
DISTRIB=9

RX3_INT_MIRROR_URL="http://mirror.xor.rx3"
RX3_EXT_MIRROR_URL="http://mirror.rx3.net"

URPMI_SCRIPT_PATH="rx3/sbin/urpmi-setup.sh"
      CONFIG_PATH="rx3/config"

      CONFIG_LIST="base dvp"

      
# Rx3 Int or Ext?
RX3="INT"
#RX3="EXT"


# Rx3 Mageia Mirror or Free?
MAGEIA="RX3"
#MAGEIA="FREE"





while [[ $# -gt 0 ]]
do
    case $1 in
	"-d" | "--distrib")
            shift
	    DISTRIB="$1"
	;;

	"-r" | "--rx3")
	    MAGEIA="RX3"
	;;

	"-f" | "--free")
	    MAGEIA="FREE"
	;;
	
	"-i" | "--int")
	    RX3="INT"
	;;

	"-e" | "--ext")
	    RX3="EXT"
	    ;;
        
	"-d" | "--dvp")
	    DVP="TRUE"
	;;
	
	"-h" | "--help")
	    echo "usage: [-h | --help] [ [-d | --distrib <Version>] | [-r | --rx3] | [-f | --free] ] [ [-i | --int] | [-e | --ext] | [-d | --dvp] ]"
	    echo "default options: --distrib 9 --rx3 --int"
	    exit
	;;

	*)
	    echo "unknown args: [$1]"
	    exit -1
	;;
    esac

    shift
done


# urpmi_setup default options
MIRROR_OPT="--distrib ${DISTRIB}"

if [[ "${MAGEIA}" == "RX3" ]]
then
        MIRROR_OPT="${MIRROR_OPT} --rx3"
else
        MIRROR_OPT="${MIRROR_OPT} --free"
fi

if [[ "${RX3}" == "INT" ]]
then
        MIRROR_OPT="${MIRROR_OPT} --int"
    RX3_MIRROR_URL="${RX3_INT_MIRROR_URL}"
else
        MIRROR_OPT="${MIRROR_OPT} --ext"
    RX3_MIRROR_URL="${RX3_EXT_MIRROR_URL}"
fi



# Main Processing
echo "Start Setup: Distrib: [Mageia ${DISTRIB}]   Mageia Mirror: [${MAGEIA}]   Rx3 Mirror: [${RX3}]   DVP: [${DVP}]"


# URPMI Mirror setup
echo "Mirror Setup..."

curl -L "${RX3_MIRROR_URL}/${URPMI_SCRIPT_PATH}" | bash -s -- ${MIRROR_OPT}


# Package Upgrade
echo "Package Update & Orphans..."

urpmi --force --auto-update
urpme --force --auto-orphans


# Package install
echo "Package Install..."

   pkg_base="rsyslog fbset"
    pkg_sys="emacs gparted htop btop"
    pkg_net="net-tools lib64verto-libevent1 nfs-utils netkit-telnet myip tcpdump lftp sshd"
     pkg_vm="spice-vdagent virtualbox-guest-additions"
pkg_desktop="rx3-wallpapers-base"

if [[ ${DVP} != "" ]]
then
    pkg_dvp="task-c-devel task-c++-devel clang urpmi-debuginfo-install valgrind git code notepadqq postgresql15 postgresql15-contrib postgresql15-devel postgresql15-docs postgresql15-pl postgresql15-plperl postgresql15-plpgsql postgresql15-plpython3 postgresql15-server unixODBC lib64unixODBC2 lib64unixODBC-devel lib64psqlodbc docker docker-containerd docker-buildx docker-compose docker-registry minikube kubernetes-client protobuf protobuf-java protobuf-compiler lib64protobuf-c-devel apache-mod_php php-cli php-pdo_pgsql phppgadmin"
fi

urpmi --force ${pkg_base} ${pkg_sys} ${pkg_vm} ${pkg_net} ${pkg_desktop} ${pkg_dvp}


# Network manager setup
#echo "Network Manager Setup..."
#
#urpmi --force networkmanager networkmanager-applet plasma-applet-nm plasma-applet-nm-openvpn
#
#systemctl enable --now NetworkManager.service
#systemctl mask network.service; systemctl mask network-up

#echo "AUTOSTART=FALSE" > ~sysadmin/.net_applet


# IPV6 disabling
echo "IPV6 Disabling..."

sed -i -e '/options ipv6 disable=/d'   /etc/modprobe.d/01_mga-config.conf
echo "options ipv6 disable=1"        >>/etc/modprobe.d/01_mga-config.conf


# Use Good Old Network Device Names
echo "Use Good Old Network Device Names..."

sed -i -e 's/\(^GRUB_CMDLINE_LINUX_DEFAULT="[^"]*\)"/\1 net.ifnames=0 biosdevname=0"/' /etc/default/grub


# Dir simulation
echo "Dir Simulation..."

if [[ ! -e /usr/global ]]
then
    ln -s /usr/local /usr/global
fi

if [[ ! -e /home/admin ]]
then
    ln -s /home      /home/admin
fi


# Config Install
#cd /
#for config in ${CONFIG_LIST}
#do
#    echo "Config [${config}] Install..."
#
#    curl -L "${RX3_MIRROR_URL}/${CONFIG_PATH}/${config}-config.tar.bz2" | tar xjvf - --keep-directory-symlink
#done


# Fix Owners
echo "Fix Owners..."

chown -R sysadmin:sysadmin /home/admin/sysadmin


# Fix grub & console video mode
echo "Fix Grub & Console Video Mode..."

sed -i -e 's/\(^GRUB_CMDLINE_LINUX_DEFAULT="[^"]*\)"/\1 video=1920x1080"/' -e 's/GRUB_GFXMODE=.*/GRUB_GFXMODE=1920x1080/' /etc/default/grub


# Add Rx3 and Other CA certificates
echo "Add Rx3 & Other CA certificates..."

update-ca-trust extract


# Fix time server
if [[ -f /etc/chrony.conf ]]
then
    echo "Fix Time server..."
    
    sed -i -e 's/pool .* iburst$/pool time.rx3.net iburst/' /etc/chrony.conf
fi


# VirtualBox Setup
echo "VirtualBox Setup..."

groupmod -U sysadmin vboxsf


# SDDM Autologin
#if [[ ${DVP} != "" ]]
#then
#    echo "SDDM AutoLogin..."
#    
#    sed -i -e 's/Session=.desktop/Session=01plasma.desktop/' -e 's/User=/User=sysadmin/' /etc/sddm.conf
#fi


# Disable Unneeded Services
for service in lm_sensors sensord mdmonitor lvm2-monitor ModemManager upower
do
    echo "Disabling [${service}] service..."
    systemctl disable ${service}
done


# Rebuild InitRd & Grub
echo "Rebuid InitRd & Grub..."

dracut -f --kver $(ls -l /boot/initrd.img | sed -e 's/.* initrd-//' -e 's/.img$//')
update-grub


echo "Setup Completed!"
