#!/bin/bash
PATH="/sbin:/usr/sbin:/usr/local/sbin:$PATH"

# Set the working folder variable
uchinanchu="$(pwd)"
[ "$TODAY" ] || TODAY=$(date -u +"%Y-%m-%d")


# Create the build folder, move into it removing stale mountpoints and files there.
[ -e fusato ] && [ ! -d fusato ] && rm -f fusato || [ ! -e fusato ] && mkdir fusato
cd fusato
umount $(mount | grep "${PWD}/chroot" | tac | cut -f3 -d" ") 2>/dev/null
for i in ./* ./.build ; do [ $i = ./cache ] && continue || rm -rf $i ; done


# Set of the structure to be used for the ISO and Live system.
# See /usr/lib/live/build/config for a full list of examples.
# Up above is the manual description of what options I used so far.
lb config \
	--mode debian \
	--distribution bookworm \
	--archive-areas "main contrib non-free non-free-firmware" \
	--architectures amd64 \
	--linux-flavours amd64 \
	--apt-recommends true \
	--binary-images iso-hybrid \
	--firmware-binary false \
	--firmware-chroot false \
	--security true \
	--updates true 
	--backports true \
	--image-name "PepOS" \
	--iso-application "PeppermintOS" \
	--iso-preparer "PeppermintOS-https://peppermintos.com/" \
	--iso-publisher "Peppermint OS Team" \
	--image-name "PepOS" \
	--iso-volume "${TODAY} 1" \
	--win32-loader false \
	--checksums sha512 \
	--cache true \
	--clean \
	--color \
	--quiet \
	--zsync false \
     "${@}"


# Install the XFCE Desktop
mkdir -p     $uchinanchu/fusato/config/package-lists/
echo xfce4 > $uchinanchu/fusato/config/package-lists/desktop.list.chroot

echo "# Install extra Desktop packages.
mousepad
xfce4-battery-plugin
xfce4-clipman-plugin
xfce4-power-manager
xfce4-taskmanager
xfce4-terminal
xfce4-screenshooter
xfce4-whiskermenu-plugin
xfce4-docklike-plugin
xfce4-notes-plugin
xfce4-panel-profiles
xfce4-time-out-plugin
orage
thunar-archive-plugin
thunar-volman
xarchiver
lightdm
lightdm-gtk-greeter
lightdm-gtk-greeter-settings

" > $uchinanchu/fusato/config/package-lists/extra-desktop.list.chroot

# Install software
echo "# Install software to the squashfs for calamares to unpack to the OS.
dconf-editor
arandr
#gparted
gnome-disk-utility
menulibre
synaptic
system-config-printer
gnome-system-tools
screenfetch
simple-scan

" > $uchinanchu/fusato/config/package-lists/packages.list.chroot

echo "#Install system packages.
cups
curl
dkms
dbus-x11
nala
efibootmgr
fonts-cantarell
fonts-liberation
gdebi
gir1.2-webkit2-4.0
git
grub-pc
gvfs-backends
inputattach
inxi
locales
neofetch
network-manager-gnome
ntp
nvidia-detect
os-prober
pulseaudio-module-bluetooth
smartmontools
smbclient
sqlite3
wireless-tools
wget
alsa-utils
bluez

" > $uchinanchu/fusato/config/package-lists/system.list.chroot

echo "# install the Peppermint artwork.
marwaita-gtk-theme
tela-icon-theme
marwaita-for-xfwm
marwaita-peppermint-gtk-theme
pepermint-wallpapers

" > $uchinanchu/fusato/config/package-lists/artwork.list.chroot

echo "# Install Python3 packages.
python3-pip
python3-tk
python3-bs4
python3-requests
python3-ttkthemes
python3-pyqt5
python3-pyqt5.qtsvg
python3-pyqt5.qtwebkit
python3-pyqt5.qtwebengine
python3-pil.imagetk
python3-apt

" > $uchinanchu/fusato/config/package-lists/python.list.chroot

echo "# install the calamares installer to install the system to the hd.
calamares
calamares-settings-debian
f2fs-tools
xfsprogs

" > $uchinanchu/fusato/config/package-lists/installer.list.chroot

echo "# install firmware for squasfs to improve hardware compatibility.
atmel-firmware
bluez-firmware
firmware-linux-free
midisport-firmware
firmware-misc-nonfree
firmware-amd-graphics
#firmware-ath9k-htc
firmware-bnx2
firmware-bnx2x
firmware-brcm80211
firmware-cavium
firmware-intel-sound
firmware-intelwimax
firmware-iwlwifi
firmware-libertas
firmware-linux
firmware-linux-nonfree
firmware-misc-nonfree
firmware-myricom
firmware-netronome
firmware-netxen
firmware-qcom-media
firmware-qcom-soc
firmware-qlogic
firmware-realtek
firmware-samsung
firmware-siano
firmware-ti-connectivity
firmware-sof-signed
firmware-zd1211

" > $uchinanchu/fusato/config/package-lists/firmware.list.chroot

# Packages to be stored in /pool but not installed in the OS .
echo "# These packages are available to the installer, for offline use.
efibootmgr
grub-common
grub2-common
grub-efi
grub-efi-amd64
grub-efi-amd64-bin
grub-efi-amd64-signed
grub-efi-ia32-bin
libefiboot1
libefivar1
mokutil
os-prober
shim-helpers-amd64-signed
shim-signed
shim-signed-common
shim-unsigned

" > $uchinanchu/fusato/config/package-lists/installer.list.binary


# Setup the chroot structure
mkdir -p $uchinanchu/fusato/config/includes.binary
mkdir -p $uchinanchu/fusato/config/includes.bootstrap/etc/apt
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/local/bin
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/applications
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/icons/default
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/pixmaps
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/xfce4/helpers
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/polkit-1/actions
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/fonts/pepconf
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/bin
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/local/bin
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/sbin
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/lib/live/config
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/apt
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/calamares
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/default
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/lightdm
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/live/config.conf.d
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/skel/.config/xfce4
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/xdg/autostart
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4/whiskermenu
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4/xfconf/xfce-perchannel-xml
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/skel/.local/share
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/skel/Desktop
mkdir -p $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt/pypep
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt/pypep/dbpep
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt/startpep
mkdir -p $uchinanchu/fusato/config/includes.chroot/opt/pepconf
mkdir -p $uchinanchu/fusato/config/includes.chroot/boot/grub
mkdir -p $uchinanchu/fusato/config/archives
mkdir -p $uchinanchu/fusato/config/hooks/live
mkdir -p $uchinanchu/fusato/config/hooks/normal
mkdir -p $uchinanchu/fusato/config/packages.chroot


# Copy single files to the chroot
cp $uchinanchu/pepaliases/bash_aliases  $uchinanchu/fusato/config/includes.chroot/etc/skel/.bash_aliases
cp $uchinanchu/pepcal/adddesktopicon/add-calamares-desktop-icon $uchinanchu/fusato/config/includes.chroot/usr/bin
cp $uchinanchu/pepcal/calamares/settings.conf $uchinanchu/fusato/config/includes.chroot/etc/calamares
cp $uchinanchu/peplightdm/lightdm.conf $uchinanchu/fusato/config/includes.chroot/etc/lightdm
cp $uchinanchu/peplightdm/lightdm-gtk-greeter.conf $uchinanchu/fusato/config/includes.chroot/etc/lightdm
cp $uchinanchu/pepsources/sources.list $uchinanchu/fusato/config/includes.chroot/opt/pepconf
cp $uchinanchu/PepProTools/xDaily $uchinanchu/fusato/config/includes.chroot/usr/local/bin
cp $uchinanchu/PepProTools/Welcome_auto.desktop $uchinanchu/fusato/config/includes.chroot/etc/xdg/autostart

# Copy directory contents to the chroot
cp $uchinanchu/pepapplication/*  $uchinanchu/fusato/config/includes.chroot/usr/share/applications
cp $uchinanchu/pepgrub/grub $uchinanchu/fusato/config/includes.chroot/etc/default
cp $uchinanchu/pephooks/live/* $uchinanchu/fusato/config/includes.chroot/usr/lib/live/config
cp $uchinanchu/pephooks/normal/* $uchinanchu/fusato/config/hooks/normal
cp $uchinanchu/pepissue/* $uchinanchu/fusato/config/includes.bootstrap/etc
cp $uchinanchu/pepissue/* $uchinanchu/fusato/config/includes.chroot/etc
cp $uchinanchu/pepissue/* $uchinanchu/fusato/config/includes.chroot/opt/pepconf
cp $uchinanchu/peposrelease/* $uchinanchu/fusato/config/includes.chroot/opt/pepconf
cp $uchinanchu/peposrelease/* $uchinanchu/fusato/config/includes.chroot/usr/lib
cp $uchinanchu/peppolkit/* $uchinanchu/fusato/config/includes.chroot/usr/share/polkit-1/actions
cp $uchinanchu/pepdb/* $uchinanchu/fusato/config/includes.chroot/opt/pypep/dbpep
cp $uchinanchu/pepuserconfig/* $uchinanchu/fusato/config/includes.chroot/etc/live/config.conf.d
cp $uchinanchu/PepProPixMaps/* $uchinanchu/fusato/config/includes.chroot/usr/share/pixmaps

# Copy recursive files and sub-directories, containing symlinks.
cp -r $uchinanchu/PepProTools/* $uchinanchu/fusato/config/includes.chroot/opt/pypep
cp -r $uchinanchu/pepcal/calamares/branding $uchinanchu/fusato/config/includes.chroot/etc/calamares
cp -r $uchinanchu/pepcal/calamares/modules $uchinanchu/fusato/config/includes.chroot/etc/calamares
cp -r $uchinanchu/pepxfce/xfce4/panel $uchinanchu/fusato/config/includes.chroot/etc/skel/.config/xfce4
cp -r $uchinanchu/pepxfce/xfce4/xfconf/xfce-perchannel-xml/* $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4/xfconf/xfce-perchannel-xml
cp -r $uchinanchu/pepxfce/xfce4/defaults.rc $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4/whiskermenu
cp -r $uchinanchu/pepxfce/Thunar $uchinanchu/fusato/config/includes.chroot/etc/xdg/
cp -r $uchinanchu/pepgrub/themes $uchinanchu/fusato/config/includes.chroot/boot/grub

# Resolves Synaptics issue. Might be better in a conf hook.
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/distro-info
mkdir -p $uchinanchu/fusato/config/includes.chroot/usr/share/python-apt/templates
ln -s Debian.info $uchinanchu/fusato/config/includes.chroot/usr/share/python-apt/templates/Peppermint.info
ln -s Debian.mirrors $uchinanchu/fusato/config/includes.chroot/usr/share/python-apt/templates/Peppermint.mirrors
ln -s debian.csv $uchinanchu/fusato/config/includes.chroot/usr/share/distro-info/peppermint.csv

# Place files unique to Nightly builds here.
cp    $uchinanchu/pepnightly/pepaliases/bash_aliases $uchinanchu/fusato/config/includes.chroot/etc/skel/.bash_aliases
cp    $uchinanchu/pepnightly/pepapplication/* $uchinanchu/fusato/config/includes.chroot/usr/share/applications
cp    $uchinanchu/pepnightly/pepcal/install-peppermint $uchinanchu/fusato/config/includes.chroot/usr/bin
cp    $uchinanchu/pepnightly/pepcal/sources-final $uchinanchu/fusato/config/includes.chroot/usr/sbin
cp    $uchinanchu/pepnightly/pepmultimedia/* $uchinanchu/fusato/config/archives
cp -r $uchinanchu/pepnightly/peploadersplash/boot  $uchinanchu/fusato/config/includes.binary
cp -r $uchinanchu/pepnightly/peploadersplash/isolinux  $uchinanchu/fusato/config/includes.binary

# Build the ISO #
lb build  #--debug --verbose
