- Package Calamares 3.4.3 (Qt6, widgets UI) with xbps-src. - das-installer: Calamares setup for Void/runit with Das OS branding and slides. It copies the clean live image (live-base), builds locales and the host-only initramfs, rewrites kernels without sparse tails (GRUB 2.12 cannot read Btrfs holes at the end of a file), then removes itself. - das-snapshots: flat Btrfs layout (@, @home, @snapshots, @var_log, @var_cache_xbps), snapper with hourly snapshots via cronie, grub-btrfs menu, snapper-rollback, and a dracut module that boots read-only snapshots with a RAM overlay. - das-settings 0.2.0: start LightDM with the system locale. - Live image: GRUB, efibootmgr and the new packages; Das OS /etc/issue. - Build: wipe stale destdirs before building packages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
66 lines
2.6 KiB
Bash
Executable File
66 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Builds the Das OS live ISO with void-mklive from the profile in live/.
|
|
# Runs inside the builder container, see scripts/builder.sh.
|
|
set -euo pipefail
|
|
|
|
repo=/work/out/hostdir/binpkgs
|
|
version=$(< /work/VERSION)
|
|
iso=/work/out/iso/dasos-${version}-x86_64.iso
|
|
|
|
if ! compgen -G "$repo/*-repodata" >/dev/null; then
|
|
echo "build-iso: the local package repository is missing, run 'make packages' first" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Reads a list file: one item per line, '#' starts a comment
|
|
read_list() {
|
|
sed -e 's/#.*//' -e '/^[[:space:]]*$/d' "$1" | xargs
|
|
}
|
|
|
|
work=$(mktemp -d)
|
|
mkdir -p /work/out/iso
|
|
trap 'rm -rf "$work"; chown -R "$HOST_UID:$HOST_GID" /work/out/iso' EXIT
|
|
|
|
# Root file system overlay: static files from live/include plus generated links
|
|
include=$work/include
|
|
cp -a /work/live/include "$include"
|
|
ln -sf /usr/share/zoneinfo/Europe/Kyiv "$include/etc/localtime"
|
|
# PipeWire as the sound server, wired up the same way as Void's own live images
|
|
mkdir -p "$include"/etc/xdg/autostart "$include"/etc/pipewire/pipewire.conf.d "$include"/etc/alsa/conf.d
|
|
ln -sf /usr/share/applications/pipewire.desktop "$include"/etc/xdg/autostart/
|
|
ln -sf /usr/share/examples/wireplumber/10-wireplumber.conf "$include"/etc/pipewire/pipewire.conf.d/
|
|
ln -sf /usr/share/examples/pipewire/20-pipewire-pulse.conf "$include"/etc/pipewire/pipewire.conf.d/
|
|
ln -sf /usr/share/alsa/alsa.conf.d/50-pipewire.conf "$include"/etc/alsa/conf.d/
|
|
ln -sf /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf "$include"/etc/alsa/conf.d/
|
|
|
|
# mklive's dracut module creates the live user, hostname and passwords at boot.
|
|
# Rebrand its defaults in this container's copy (the image itself stays untouched).
|
|
adduser=/opt/void-mklive/dracut/vmklive/adduser.sh
|
|
for pattern in 'echo void-live >' 'voidlinux'; do
|
|
if ! grep -q "$pattern" "$adduser"; then
|
|
echo "build-iso: '$pattern' not found in $adduser, mklive changed; update this script" >&2
|
|
exit 1
|
|
fi
|
|
done
|
|
sed -i -e 's/echo void-live >/echo dasos >/' -e 's/voidlinux/live/g' "$adduser"
|
|
# mklive copies its /etc/issue (Void live logins) into the image, and the
|
|
# installer copies the image to disk, so use a neutral Das OS one.
|
|
cp /work/live/branding/issue /opt/void-mklive/data/issue
|
|
|
|
rsvg-convert /work/live/branding/splash.svg --output "$work/splash.png"
|
|
rm -f "$iso"
|
|
|
|
cd /opt/void-mklive
|
|
SPLASH_IMAGE=$work/splash.png ./mklive.sh \
|
|
-a x86_64 \
|
|
-r "$repo" \
|
|
-c /var/cache/xbps \
|
|
-p "$(read_list /work/live/packages.x86_64)" \
|
|
-S "$(read_list /work/live/services)" \
|
|
-I "$include" \
|
|
-l uk_UA.UTF-8 \
|
|
-k us \
|
|
-T "Das OS" \
|
|
-C "live.user=live quiet loglevel=3" \
|
|
-o "$iso"
|