#!/bin/sh
set -Ceux
wget https://salsa.debian.org/pham/partman-base/-/jobs/9958958/artifacts/file/debian/output/debian-202607XX+salsaci+20260715+39-amd64-gtkmini.iso
# Extract initrd.gz for modification
osirrox -indev debian-202607XX+salsaci+20260715+39-amd64-gtkmini.iso -extract initrd.gz initrd.gz -extract isolinux.cfg isolinux.cfg
# Boot installer by default
sed -i 's/^default [[:graph:]]*/default install/' isolinux.cfg
# Preseed the installer
gunzip initrd.gz
chmod u+w initrd
cat >preseed.cfg <<PRESEED
# preseed.cfg extracted from openmediavault_8.3.1-amd64.iso via
# osirrox -indev openmediavault_8.3.1-amd64.iso -concat append - install/preseed.cfg |
#     grep -Ev -e '^[[:space:]]*(#|$)' -e anna-install
d-i any ethdetect/prompt_missing_firmware boolean false
d-i hw-detect/load_firmware boolean true
d-i netcfg/get_hostname string openmediavault
d-i netcfg/get_hostname seen false
d-i netcfg/get_domain string internal
d-i netcfg/get_domain seen false
d-i passwd/make-user boolean false
d-i partman-auto/method string regular
d-i partman-auto/init_automatically_partition select some_device
d-i partman-auto/choose_recipe select atomic
d-i partman/default_filesystem string ext4
d-i partman/choose_partition select finish
d-i partman/confirm_write_new_label boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/confirm boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman-md/device_remove_md boolean true
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean false
d-i apt-setup/cdrom/set-first boolean false
d-i apt-setup/non-free-firmware boolean true
d-i apt-setup/non-free boolean true
d-i apt-setup/contrib boolean true
d-i apt-setup/use_mirror boolean true
d-i apt-setup/disable-cdrom-entries boolean true
d-i pkgsel/run_tasksel boolean false
d-i cdrom-detect/eject boolean true
popularity-contest popularity-contest/participate boolean false

# My preseed.cfg options to avoid any user prompts in reproduction
d-i debian-installer/locale string en_US.UTF-8
d-i finish-install/reboot_in_progress note
d-i keyboard-configuration/xkb-keymap select us
d-i mirror/country string manual
d-i mirror/http/hostname string deb.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string
d-i netcfg/get_hostname seen true
d-i netcfg/get_domain seen true
d-i passwd/root-password password r00tme
d-i passwd/root-password-again password r00tme
d-i passwd/make-user boolean false
d-i time/zone string US/Mountain
PRESEED
echo preseed.cfg | cpio -H newc -o -A -F initrd
gzip initrd
# Add the modified files to a modified ISO image
xorriso -indev debian-202607XX+salsaci+20260715+39-amd64-gtkmini.iso -outdev debian-202607XX+salsaci+20260715+39-amd64-gtkmini-custom.iso \
	-map initrd.gz initrd.gz \
	-map isolinux.cfg isolinux.cfg \
	-boot_image any replay
truncate --size=3GiB debian-202607XX+salsaci+20260715+39-amd64-gtkmini-custom.iso
cp debian-202607XX+salsaci+20260715+39-amd64-gtkmini-custom.iso debian-202607XX+salsaci+20260715+39-amd64-gtkmini-custom-orig.iso
qemu-system-x86_64 \
    -enable-kvm \
    -no-reboot \
    -m 1G \
    -drive if=none,id=diiso,format=raw,file=debian-202607XX+salsaci+20260715+39-amd64-gtkmini-custom.iso \
    -device qemu-xhci,id=xhci \
    -device usb-storage,bus=xhci.0,drive=diiso,removable=true
# Choose whether or not to install the boot loader, overwriting isolinux
diff -qs debian-202607XX+salsaci+20260715+39-amd64-gtkmini-custom.iso debian-202607XX+salsaci+20260715+39-amd64-gtkmini-custom-orig.iso
