basementhud/mkrootfs.sh

89 lines
2.1 KiB
Bash

#!/bin/sh
set -e
srcdir="$(dirname "$0")"
destdir="$(mkdir -p "$1" && readlink -e "$1")"
dest=basementhud.squashfs
releasever=35
mkdir -p "${destdir}"
dnf --installroot "${destdir}" install -y \
--releasever ${releasever} \
fedora-release
cp /etc/dnf/dnf.conf "${destdir}/etc/dnf/"
echo install_weak_deps=False >> "${destdir}"/etc/dnf/dnf.conf
dnf --installroot "${destdir}" install -y \
bcm2711-firmware \
dracut-network \
hostname \
kmod \
mesa-dri-drivers \
nbd \
openbox \
openssh-server \
rsyslog \
systemd \
systemd-resolved \
xinit \
xorg-x11-server-Xorg \
xset \
--
dnf --installroot "${destdir}" install -y \
--setopt tsflags=noscripts \
kernel \
--
cp -p \
"${srcdir}"/cmdline.txt \
"${srcdir}"/config.txt \
"${destdir}"/boot/efi
for x in ed25519 rsa ecdsa; do
chroot "${destdir}" /usr/libexec/openssh/sshd-keygen $x
done
tar --owner root:0 -C "${srcdir}/overlay" -c . \
| tar -C "${destdir}" -x
chown -R 1000:1000 "${destdir}"/home/user
if ! grep -q ^user: "${destdir}"/etc/group; then
chroot "${destdir}" groupadd -g 1000 user
fi
if ! grep -q ^user: "${destdir}"/etc/passwd; then
chroot "${destdir}" useradd -u 1000 -g 1000 user
fi
if ! grep -qE '^video:.*:.+:.*,?user' "${destdir}"/etc/group; then
chroot "${destdir}" gpasswd -a user video
fi
chroot "${destdir}" systemctl enable \
systemd-time-wait-sync \
systemd-timesyncd \
xinit@user
if ! [ -f "${destdir}"/usr/local/bin/playwright ]; then
python3 -m pip \
install \
--prefix "${destdir}"/usr/local \
playwright
fi
if ! [ -d "${destdir}"/usr/local/ms-playwright ]; then
py_site_dir=$(
"${destdir}"/usr/bin/python3 -c 'import site;print(site.getsitepackages()[0])'
)
PLAYWRIGHT_BROWSERS_PATH="${destdir}"/usr/local/ms-playwright \
PYTHONPATH="${destdir}${py_site_dir}" \
python3 -m playwright install firefox
fi
umask 0022
mksquashfs "${destdir}" "${destdir}/boot/${dest}" \
-comp lz4 \
-noappend \
-ef "${srcdir}"/squashfs-exclude.txt \
-no-exports \
-wildcards