#!/bin/bash # # https://wiki.archlinux.org/index.php/Archiso#Prepare_a_custom_profile # # TODO: set custom welcome message in /etc/motd # BUILD_DIR=./archlive PKGS=() PKGS+=('de-p1st-keyboard') # german keyboard PKGS+=('de-p1st-nano') # syntax hilighting in nano PKGS+=('de-p1st-screen') # longer scrollback history in screen PKGS+=('de-p1st-pacman') # [de-p1st] mirror enabled PKGS+=('de-p1st-installer') # de-p1st-installer script ################################ function isEmptyDir() { if [ -n "$(find "$DIR_TO_CHECK" -maxdepth 0 -type d -empty 2>/dev/null)" ]; then # "Empty directory" return 0 else # echo "Not empty or NOT a directory" return 1 fi } if [ -d "${BUILD_DIR}" ]; then if ! isEmptyDir "${BUILD_DIR}"; then if [ "$1" = "clean" ]; then sudo rm -r "${BUILD_DIR}" || exit $? mkdir -p "${BUILD_DIR}" || exit $? else echo "BUILD_DIR not empty"; echo "Run '$0 clean' to start a clean ISO build." exit 1; fi fi # else: BUILD_DIR exists and is empty :) elif ! mkdir -p "${BUILD_DIR}"; then echo "Could not create BUILD_DIR"; exit 1; fi # The releng profile is used to create the official monthly installation ISO PROFILE=/usr/share/archiso/configs/releng/ if [ ! -d "${PROFILE}" ]; then echo "Installing dependency 'archiso' with sudo ..." sudo pacman -S --needed archiso || exit $? fi cp -r "$PROFILE" "$BUILD_DIR"/profile || exit $? # extend the builder's pacman.conf (add de-p1st mirrors) # https://wiki.archlinux.org/index.php/Archiso#Custom_local_repository cat "pkg/de-p1st-pacman/pacman.d/de-p1st" >>"$BUILD_DIR"/profile/pacman.conf || exit $? for PKG in "${PKGS[@]}"; do echo "${PKG}" >>"${BUILD_DIR}"/profile/packages.x86_64 done ### mkdir "${BUILD_DIR}/work_dir" && mkdir "${BUILD_DIR}/out_dir" || exit $? echo "running 'sudo mkarchiso' ..." sudo mkarchiso -v -w "${BUILD_DIR}/work_dir" -o "${BUILD_DIR}/out_dir" "${BUILD_DIR}/profile" || exit $?