# ks.cfg — AlmaLinux 9.7 automated install

# Installation source & method
url --url="http://ftp.fau.de/almalinux/9.7/BaseOS/x86_64/os/"
repo --name="AppStream" --baseurl="http://ftp.fau.de/almalinux/9.7/AppStream/x86_64/os/"

# Basic settings
lang en_US.UTF-8
keyboard de
timezone Asia/Shanghai --utc
text          # non-graphical install
reboot        # reboot after install

# Root password (generate hash: python3 -c "import crypt; print(crypt.crypt('yourpassword'))")
rootpw --iscrypted $6$D6Uu2Kf9TnrMT9Kw$013RxkpHNWJdODuLidtTF4e8b3LYYzoUkJprwqOFGm6fMBh2yyfwOvMKgs28FClVJ.kQIoIGXSnH3SNWLTJ7e0

# Create a sudo user
user --name=faultier --groups=wheel --iscrypted --password=$6$D6Uu2Kf9TnrMT9Kw$013RxkpHNWJdODuLidtTF4e8b3LYYzoUkJprwqOFGm6fMBh2yyfwOvMKgs28FClVJ.kQIoIGXSnH3SNWLTJ7e0

# Network
network --bootproto=dhcp --device=link --activate --onboot=yes --noipv6

# === Auto-detect largest non-removable disk and emit partition directives ===
%pre --interpreter=/bin/bash --log=/tmp/pre.log
set -e

DISK=$(lsblk -dn -b -o NAME,SIZE,TYPE,RM,RO \
       | awk '$3=="disk" && $4==0 && $5==0 {print $2, $1}' \
       | sort -rn \
       | head -1 \
       | awk '{print $2}')

if [ -z "$DISK" ]; then
    echo "ERROR: no suitable disk found" >&2
    exit 1
fi

echo "Selected install disk: /dev/$DISK"

# Wipe leftover signatures (LVM, mdraid, old GPT backup) so clearpart succeeds
wipefs -a "/dev/$DISK" || true
dd if=/dev/zero of="/dev/$DISK" bs=1M count=10 conv=fdatasync || true
dd if=/dev/zero of="/dev/$DISK" bs=1M count=10 \
   seek=$(( $(blockdev --getsz "/dev/$DISK") / 2048 - 10 )) conv=fdatasync || true

# Emit kickstart partition snippet
cat > /tmp/disk.ks <<EOF
ignoredisk --only-use=$DISK
zerombr
clearpart --all --initlabel --drives=$DISK
bootloader --boot-drive=$DISK

part /boot/efi --fstype=efi   --size=512  --asprimary --ondrive=$DISK
part /boot     --fstype=xfs   --size=1024 --asprimary --ondrive=$DISK
part pv.01     --fstype=lvmpv --size=1    --grow      --ondrive=$DISK
volgroup vg_system pv.01
logvol /       --vgname=vg_system --name=lv_root --fstype=xfs --size=10240 --grow
EOF
%end

%include /tmp/disk.ks

# Package selection
%packages --ignoremissing
@^minimal-environment
%end

# Post-install: inject SSH public key
%post --erroronfail

echo "faultier ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/faultier
chmod 440 /etc/sudoers.d/faultier

mkdir -p /home/faultier/.ssh
chmod 700 /home/faultier/.ssh
cat >> /home/faultier/.ssh/authorized_keys << 'EOF'
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE0G18yeZX2zqyjtgUAEPhSRd4FQOaBq2TVGXQi8QBoa
EOF
chmod 600 /home/faultier/.ssh/authorized_keys
chown -R faultier:faultier /home/faultier/.ssh

# Enable SSH
systemctl enable sshd

# Disable root SSH login
sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
%end
