Refactor ISO build for the package-backed install flow
The ISO no longer carries a cp -r'd copy of the omarchy git checkout
into /root/omarchy and the target /home/$user/.local/share/omarchy.
Instead it builds omarchy-installer + omarchy-settings + omarchy +
omarchy-limine from mounted source trees (${OMARCHY_INSTALLER_PATH:-
../omarchy-installer} and ${OMARCHY_PKGS_PATH:-../omarchy-pkgs}),
drops them in the offline mirror, and pacstraps omarchy-installer
during the target install — which deps-in the other three.
- builder/build-omarchy-packages.sh: new. Builds the four packages
inside the ISO build container using each PKGBUILD's OMARCHY_SRC
override (introduced in Chunk 2). Creates a 'builder' user because
makepkg refuses to run as root. Drops the resulting .pkg.tar.zst
files into the offline-mirror directory.
- builder/build-iso.sh: drop the git clone / -v omarchy mount path;
call build-omarchy-packages.sh first; filter out the locally-built
package names from the rest-of-mirror download so we don't try to
fetch them from the network mirror.
- configs/airootfs/root/.automated_script.sh: replace the install_omarchy
cp-and-source dance with 'arch-chroot pacman -S omarchy-installer'
followed by 'OMARCHY_INSTALL_MODE=offline omarchy-install'. Drop the
big chown/chmod block that was setting up the cloned tree.
use_omarchy_helpers extracts the installer's helpers/ tree directly
from the offline-mirror's omarchy-installer-*.pkg.tar.zst so the live
ISO has access to gum-styled logging before pacstrap.
- bin/omarchy-iso-make: always mount omarchy-installer and omarchy-pkgs
(paths configurable via OMARCHY_INSTALLER_PATH / OMARCHY_PKGS_PATH;
default to ../omarchy-installer and ../omarchy-pkgs). --local-source
is now a back-compat no-op.
This commit is contained in:
4 files changed
+190
-166
No files matched your search
Executable
+72
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
# Build omarchy + omarchy-settings + omarchy-installer + omarchy-limine from
|
||||
# mounted source (/omarchy-installer + /omarchy-pkgs) and drop the .pkg.tar.zst
|
||||
# files into the offline-mirror directory passed as $1.
|
||||
#
|
||||
# Run inside the ISO build container (build-iso.sh sources this).
|
||||
|
||||
set -e
|
||||
|
||||
offline_mirror_dir="$1"
|
||||
if [[ -z $offline_mirror_dir ]]; then
|
||||
echo "Usage: build-omarchy-packages.sh <offline-mirror-dir>" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -d /omarchy-installer ]]; then
|
||||
echo "ERROR: /omarchy-installer not mounted (pass --local-source or set OMARCHY_INSTALLER_PATH)" >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d /omarchy-pkgs ]]; then
|
||||
echo "ERROR: /omarchy-pkgs not mounted (set OMARCHY_PKGS_PATH or place ../omarchy-pkgs)" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
work_dir=/tmp/omarchy-pkg-build
|
||||
rm -rf "$work_dir"
|
||||
mkdir -p "$work_dir"
|
||||
|
||||
# makepkg refuses to run as root; create a builder user with passwordless
|
||||
# sudo for pacman dep installation during the build.
|
||||
if ! id builder &>/dev/null; then
|
||||
useradd -m -s /bin/bash builder
|
||||
fi
|
||||
echo 'builder ALL=(ALL) NOPASSWD: /usr/bin/pacman' > /etc/sudoers.d/99-omarchy-pkg-builder
|
||||
chmod 440 /etc/sudoers.d/99-omarchy-pkg-builder
|
||||
|
||||
pacman -Sy --noconfirm
|
||||
|
||||
# Order matters: omarchy depends on omarchy-settings/-installer which depend on
|
||||
# the base packages; omarchy-installer depends on the others. Build leaves
|
||||
# first so dependents can pacman -S them from /tmp once needed. We don't
|
||||
# actually install during the build, so the order is mostly cosmetic — but
|
||||
# keeping it stable helps logs.
|
||||
packages=(
|
||||
omarchy-limine
|
||||
omarchy-settings
|
||||
omarchy
|
||||
omarchy-installer
|
||||
)
|
||||
|
||||
for pkg in "${packages[@]}"; do
|
||||
echo "----------------------------------------"
|
||||
echo "Building $pkg"
|
||||
echo "----------------------------------------"
|
||||
pkg_work="$work_dir/$pkg"
|
||||
cp -a "/omarchy-pkgs/pkgbuilds/$pkg" "$pkg_work"
|
||||
chown -R builder:builder "$pkg_work"
|
||||
|
||||
su builder -c "
|
||||
cd '$pkg_work' &&
|
||||
PKGDEST='$work_dir' \
|
||||
OMARCHY_SRC=/omarchy-installer \
|
||||
makepkg --noconfirm --skippgpcheck --skipchecksums -s -f
|
||||
"
|
||||
done
|
||||
|
||||
mkdir -p "$offline_mirror_dir"
|
||||
mv "$work_dir"/*.pkg.tar.zst "$offline_mirror_dir/"
|
||||
|
||||
echo
|
||||
echo "Built omarchy packages, placed in $offline_mirror_dir:"
|
||||
ls "$offline_mirror_dir"/omarchy*.pkg.tar.zst | sed 's|^| |'
|
||||
Reference in new issue
Block a user