set -ex -uo pipefail _pick() { local p="$1" f d; shift for f; do d="$out/$p/${f#$out/}" mkdir -p "$(dirname "$d")" mv $out/"$f" "$d" rm -rf $out/"$f" done } _package() { local p="$1" mkdir -p $out/$p/usr/lib/extension-release.d cat << EOF > $out/$p/usr/lib/extension-release.d/extension-release.$p ID=patos IMAGE_ID=$p IMAGE_VERSION=$version VERSION_ID=patos EOF mkfs.erofs --all-root -Efragments,dedupe,ztailpacking $out/$p.raw $out/$p veritysetup format --root-hash-file $out/$p.roothash $out/$p.raw $out/$p.verity } # remove arm64 firmware https://bugs.archlinux.org/task/76583 rm $out/usr/lib/firmware/mrvl/prestera/mvsw_prestera_fw_arm64-v4.1.img.zst _pick amd-ucode usr/lib/firmware/amd-ucode _package amd-ucode _pick linux-firmware-nfp usr/lib/firmware/netronome _package linux-firmware-nfp _pick linux-firmware-mellanox usr/lib/firmware/mellanox _package linux-firmware-mellanox _pick linux-firmware-marvell usr/lib/firmware/{libertas,mwl8k,mwlwifi,mrvl} _package linux-firmware-marvell _pick linux-firmware-qcom usr/lib/firmware/qcom _package linux-firmware-qcom _pick linux-firmware-liquidio usr/lib/firmware/liquidio _package linux-firmware-liquidio # _pick linux-firmware-qlogic usr/lib/firmware/{qlogic,qed,ql2???_*,c{b,t,t2}fw-*} # _package linux-firmware-qlogic # _pick linux-firmware-bnx2x usr/lib/firmware/bnx2x* # _package linux-firmware-bnx2x # and the rest is base firmware _pick linux-firmware usr/lib/firmware _package linux-firmware # clean up # rm -rf $out/usr