#version=ROCKY9
lang en_US.UTF-8
keyboard us
timezone America/Los_Angeles --utc
reboot
cdrom

bootloader --append="rhgb quiet inst.graphical crashkernel=auto"

network --hostname=kitpro-os --bootproto=dhcp --device=link --activate
firstboot --enable
selinux --enforcing
firewall --enabled --service=ssh

repo --name=AppStream --baseurl=file:///run/install/repo/AppStream
repo --name=BaseOS --baseurl=file:///run/install/repo/BaseOS

rootpw --lock

%packages
@base-x
@fonts

# ── Core system packages ──
kernel
kernel-core
kernel-modules
zsh
curl
wget
nano
rsync
man-db
openssh-server
NetworkManager
network-manager-applet
gvfs
gvfs-fuse
gsettings-desktop-schemas
glib2
dbus-x11
gnome-keyring
flatpak
gnome-disk-utility
gnome-software
pavucontrol
nm-connection-editor
xdg-user-dirs
xfsprogs
%end

%post
LOGFILE="/var/log/kitpro-post.log"
exec > >(tee -a "$LOGFILE") 2>&1

echo ">>> KITpro OS post install starting..."

hostnamectl set-hostname kitpro-os

# Enable additional repos
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
dnf config-manager --set-enabled crb
dnf update -y

# Brave Browser
cat <<EOF > /etc/yum.repos.d/brave-browser.repo
[brave-browser]
name=Brave Browser
baseurl=https://brave-browser-rpm-release.s3.brave.com/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://brave-browser-rpm-release.s3.brave.com/brave-core.asc
EOF

# Function for grouped installs
install_group() {
  echo ">>> Installing $1..."
  dnf install -y $1
  if [ $? -ne 0 ]; then
    echo "⚠️ Failed to install: $1"
  fi
}

# Install extras
install_group "lightdm lightdm-gtk xfce4-panel xfce4-session xfce4-settings xfce4-terminal xfce4-appfinder xfdesktop xfwm4 xfce4-power-manager xfce4-notifyd xfce4-whiskermenu-plugin xfce4-pulseaudio-plugin xfce4-screenshooter xfce4-taskmanager xfce4-weather-plugin xfce4-clipman-plugin xfce-polkit"
install_group "thunar thunar-volman thunar-archive-plugin hmaccalc lshw pcp-pmda-kvm"
install_group "xorg-x11-drv-libinput xorg-x11-drv-evdev xorg-x11-drv-fbdev xorg-x11-drv-vesa"
install_group "bash-completion dnf-plugins-core python3-pip vim man-pages xdg-utils"
install_group "adwaita-gtk2-theme fontawesome-fonts fonts-dejavu gnome-themes-extra pulseaudio"
install_group "fastfetch thunderbird keepassxc libreoffice btop gparted vlc brave-browser"

# Docker install
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
install_group "docker-ce docker-ce-cli containerd.io"

# KITpro custom repo
cat <<EOF > /etc/yum.repos.d/kitpro.repo
[kitpro]
name=KITpro OS Repository
baseurl=https://repo.kitpro.us/9/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://repo.kitpro.us/RPM-GPG-KEY-KITPRO
EOF

rpm --import https://repo.kitpro.us/RPM-GPG-KEY-KITPRO
install_group "kitpro-branding arc-theme mate-menu"

# Patch LightDM
GREETER_CONF="/etc/lightdm/lightdm-gtk-greeter.conf"
if [ -f "$GREETER_CONF" ]; then
  cp -n "$GREETER_CONF" "$GREETER_CONF.bak"
  sed -i '/^\[greeter\]/a background=/usr/share/backgrounds/kitpro-default.png' "$GREETER_CONF"
  sed -i '/^\[greeter\]/a theme-name=Arc-Dark' "$GREETER_CONF"
  sed -i '/^\[greeter\]/a icon-theme-name=Papirus-Dark' "$GREETER_CONF"
  sed -i '/^\[greeter\]/a font-name=Ubuntu 12' "$GREETER_CONF"
  echo "✅ Patched $GREETER_CONF for KITpro theming"
fi

# Enable services
systemctl enable lightdm
systemctl enable docker || true
systemctl start docker || true
systemctl set-default graphical.target

# Set Zsh for UID 1000 user
USERNAME=$(awk -F: '$3 == 1000 {print $1}' /etc/passwd)
if [ -n "$USERNAME" ]; then
  chsh -s /bin/zsh "$USERNAME" || echo "Failed to set zsh for $USERNAME"
fi
sed -i 's|^SHELL=.*|SHELL=/bin/zsh|' /etc/default/useradd

# GTK schema
if [ -d /usr/share/glib-2.0/schemas ]; then
  glib-compile-schemas /usr/share/glib-2.0/schemas/
fi

echo "KITpro OS customization complete!" > /etc/motd
echo ">>> KITpro OS post install complete."
%end

%post --nochroot
echo ">>> Enabling initial-setup-graphical.service..."
if [ -f /mnt/sysimage/usr/lib/systemd/system/initial-setup-graphical.service ]; then
  chroot /mnt/sysimage systemctl enable initial-setup-graphical.service
fi

# Add temporary user
if ! id "kituser" &>/dev/null; then
  useradd -m -G wheel -s /bin/bash kituser
  echo "kituser:kitpass" | chpasswd
  echo "Temporary user 'kituser' created with password 'kitpass'" >> /var/log/kitpro-post.log
fi

echo ">>> KITpro OS post install complete." >> /var/log/kitpro-post.log
%end
