#!/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 true \ --firmware-chroot true \ --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. firmware-linux-free midisport-firmware firmware-misc-nonfree firmware-amd-graphics firmware-atheros 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/peplightdm/slick-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/pepdeffileman/xfce4/helpers.rc $uchinanchu/fusato/config/includes.chroot/etc/xdg/xfce4 cp $uchinanchu/pepdeffileman/xfce4/helpers.rc $uchinanchu/fusato/config/includes.chroot/usr/share/xfce4/helpers 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/pepstartpage/* $uchinanchu/fusato/config/includes.chroot/opt/startpep 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 cp $uchinanchu/PepProTools/* $uchinanchu/fusato/config/includes.chroot/opt/pypep # Copy recursive files and sub-directories, containing symlinks. 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 testing builds here. cp $uchinanchu/peptesting/pepaliases/bash_aliases $uchinanchu/fusato/config/includes.chroot/etc/skel/.bash_aliases cp $uchinanchu/peptesting/pepapplication/* $uchinanchu/fusato/config/includes.chroot/usr/share/applications cp $uchinanchu/peptesting/pepcal/install-peppermint $uchinanchu/fusato/config/includes.chroot/usr/bin cp $uchinanchu/peptesting/pepcal/sources-final $uchinanchu/fusato/config/includes.chroot/usr/sbin cp $uchinanchu/peptesting/pepmultimedia/* $uchinanchu/fusato/config/archives cp -r $uchinanchu/peptesting/peploadersplash/boot $uchinanchu/fusato/config/includes.binary cp -r $uchinanchu/testing/peploadersplash/isolinux $uchinanchu/fusato/config/includes.binary # Build the ISO # lb build #--debug --verbose