RaveOS-Gnome/arch-iso-builder.sh
2025-03-15 15:27:53 +01:00

67 lines
2 KiB
Bash
Executable file

#!/bin/bash
# Exit on error
set -e
##################################################################################################################
# Custom Arch ISO Builder Script
##################################################################################################################
# Get absolute path of script directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Check if running on btrfs
if lsblk -f | grep btrfs > /dev/null 2>&1; then
echo "Warning: Building on BTRFS filesystem. Make backups before continuing."
read -p "Press Enter to continue... CTRL + C to stop"
fi
# Setting general parameters
buildFolder="$SCRIPT_DIR/build"
outFolder="$SCRIPT_DIR/out"
echo "################################################################"
echo "Build folder: $buildFolder"
echo "Out folder : $outFolder"
echo "################################################################"
# Check if archiso is installed
if ! pacman -Qi archiso &> /dev/null; then
echo "Installing archiso..."
sudo pacman -S --noconfirm archiso
fi
# Make mkarchiso verbose
sudo sed -i 's/quiet="y"/quiet="n"/g' /usr/bin/mkarchiso
echo "Cleaning build environment..."
[ -d "$buildFolder" ] && sudo rm -rf "$buildFolder"
mkdir -p "$buildFolder"
echo "Copying releng folder to build directory..."
cp -r "$SCRIPT_DIR/releng" "$buildFolder/"
#echo "Cleaning pacman cache..."
#yes | sudo pacman -Scc
echo "Creating output directory..."
mkdir -p "$outFolder"
echo "Building ISO..."
cd "$buildFolder/releng"
sudo mkarchiso -v -w "$buildFolder" -o "$outFolder" "$PWD"
# Save package list
echo "Saving package list..."
rename=$(date +%Y-%m-%d)
cp "$buildFolder/iso/arch/pkglist.x86_64.txt" "$outFolder/archlinux-$rename-pkglist.txt"
echo "Cleaning build environment..."
[ -d "$buildFolder" ] && sudo rm -rf "$buildFolder"
sudo chown -R $USER:$GROUP "$outFolder"
echo "################################################################"
echo "DONE"
echo "Check your out folder: $outFolder"
echo "################################################################"