Bash:
#!/bin/bash
set -euo pipefail
DISK=/dev/nvme0n1
SLACK_ISO="$(dirname "$0")/slackware.iso"
# wifi
nmcli device wifi connect "YourSSID" password "YourPass"
timeout 15 bash -c 'until ip -br link show wlan0 | grep -q LOWER_UP; do sleep 1; done'
# wipe and partition
sgdisk --zap-all "$DISK"
sgdisk --new=1:1MiB:+512MiB --typecode=1:EF00 "$DISK"
sgdisk --new=2:0:0 --typecode=2:8300 "$DISK"
mkfs.fat -F 32 "${DISK}p1"
mkfs.ext4 "${DISK}p2"
mkdir -p /mnt/boot
mount "${DISK}p1" /mnt/boot
mount "${DISK}p2" /mnt
# pick a distro
echo " 1. Arch"
echo " 2. Fedora"
echo " 3. Debian"
echo " 4. Slackware"
echo " 5. Ubuntu"
read -rp "Pick (1-5): " pick
case "$pick" in
1) pacstrap -c -m -G /mnt base linux linux-firmware ;;
2) dnf --installroot=/mnt -y install @core ;;
3) debootstrap --variant=minbase bookworm /mnt ;;
# no debootstrap for slackware, just installpkg from the iso
4) mount -o loop "$SLACK_ISO" /mnt/cdrom
cd /mnt/cdrom/slackware64
installpkg --root /mnt a/*.t?z l/*.t?z n/*.t?z
cd /; umount /mnt/cdrom ;;
5) debootstrap --variant=minbase noble /mnt ;;
esac
# x11
case "$pick" in
1) chroot /mnt pacman -S --noconfirm xorg-server i3-wm xterm ;;
2) chroot /mnt dnf install -y xorg-x11-server-Xorg i3 xterm ;;
3) chroot /mnt apt-get update && chroot /mnt apt-get install -y xorg i3 xterm ;;
4) mount -o loop "$SLACK_ISO" /mnt/cdrom
cd /mnt/cdrom/slackware64
installpkg --root /mnt x/*.t?z
cd /; umount /mnt/cdrom ;;
5) chroot /mnt apt-get update && chroot /mnt apt-get install -y xorg i3 xterm ;;
esac
# grub
chroot /mnt grub-install --target=x86_64-efi --efi-directory=/boot
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
umount -R /mnt
echo "Done."