🏡 index : quine-global-labs/aurora.git

#!/usr/bin/bash

echo "::group:: ===$(basename "$0")==="

set -eoux pipefail

KERNEL_PKGS_ORIG=(kernel kernel-{core,modules,modules-core,modules-extra,tools-libs,tools})

# removing them all at once is slower
for pkg in "${KERNEL_PKGS_ORIG[@]}"; do
  rpm --erase "${pkg}" --nodeps
done

# cleanup leftovers that are not covered by kernel-* packages for some reason
rm -rf /usr/lib/modules

KERNEL_PKGS=(
  /tmp/kernel-rpms/kernel-[0-9]*.rpm
  /tmp/kernel-rpms/kernel-core-*.rpm
  /tmp/kernel-rpms/kernel-modules-*.rpm
)

# Quine: arm64's stand-in akmods image (.forgejo/akmods-arm64.sh) has no
# kmods; without nullglob an unmatched pattern stays literal and fails dnf.
shopt -s nullglob
KMODS=(
  /tmp/rpms/{common,kmods}/*xone*.rpm
  /tmp/rpms/{common,kmods}/*v4l2loopback*.rpm
)

if [[ "${IMAGE_FLAVOR}" == "dx" ]]; then
  KERNEL_PKGS+=(/tmp/kernel-rpms/kernel-devel-*.rpm)
fi

KERNEL_PKGS_ALL=( "${KERNEL_PKGS[@]}" "${KMODS[@]}" )

# shims to bypass kernel install triggering dracut/rpm-ostree
# this is really ugly, skipping scriplets might be not a good idea
cd /usr/lib/kernel/install.d \
&& mv 05-rpmostree.install 05-rpmostree.install.bak \
&& mv 50-dracut.install 50-dracut.install.bak \
&& printf '%s\n' '#!/bin/sh' 'exit 0' > 05-rpmostree.install \
&& printf '%s\n' '#!/bin/sh' 'exit 0' > 50-dracut.install \
&& chmod +x  05-rpmostree.install 50-dracut.install

dnf -y install "${KERNEL_PKGS_ALL[@]}"

# restore original kernel install
mv -f 05-rpmostree.install.bak 05-rpmostree.install \
&& mv -f 50-dracut.install.bak 50-dracut.install
cd -

KERNEL_VERSIONLOCK=( "${KERNEL_PKGS_ORIG[@]}" kernel-devel{-matched,} )

dnf versionlock add "${KERNEL_VERSIONLOCK[@]}"

mkdir -p /etc/pki/akmods/certs
ghcurl "https://github.com/ublue-os/akmods/raw/refs/heads/main/certs/public_key.der" --retry 3 -Lo /etc/pki/akmods/certs/akmods-ublue.der

echo "::endgroup::"