feat(niri): niri live config
This commit is contained in:
@@ -27,14 +27,35 @@ command -v xbps-install.static >/dev/null \
|
||||
|
||||
mkdir -p "$(dirname "$OUT_ISO")"
|
||||
|
||||
# Compile dconf system-db inside the include dir so it ships compiled.
|
||||
# Debian's dconf-cli provides 'dconf compile <output_db> <keyfile_dir>'.
|
||||
if command -v dconf >/dev/null 2>&1 && [[ -d "$INCLUDE_DIR/etc/dconf/db/local.d" ]]; then
|
||||
dconf compile "$INCLUDE_DIR/etc/dconf/db/local" \
|
||||
"$INCLUDE_DIR/etc/dconf/db/local.d" 2>/dev/null \
|
||||
&& echo "dconf: compiled system-db/local" \
|
||||
|| echo "dconf: compile failed (non-fatal)"
|
||||
# Compile dconf system-db using Void's own dconf binary (inside the Void
|
||||
# rootfs chroot via mklive's -x postsetup hook). This guarantees the GVDB
|
||||
# binary is produced by the exact same dconf/glib version that runs on the
|
||||
# live system — no cross-distro format mismatch possible.
|
||||
# (We do NOT pre-compile with Debian's dconf here; that caused silent failures
|
||||
# when the GVDB format differed between the host and Void's glib.)
|
||||
_DCONF_POSTSETUP="$(mktemp -p "$MKLIVE_DIR" postsetup-dconf.XXXXX.sh)"
|
||||
cat > "$_DCONF_POSTSETUP" <<'PSEOF'
|
||||
#!/bin/bash
|
||||
# Postsetup script: compile dconf system-db AND user skel db with Void's own binary.
|
||||
ROOTFS="$1"
|
||||
if [[ -x "$ROOTFS/usr/bin/dconf" ]] && [[ -d "$ROOTFS/etc/dconf/db/local.d" ]]; then
|
||||
# 1. Compile system-db (read by all users via /etc/dconf/profile/user)
|
||||
chroot "$ROOTFS" dconf compile /etc/dconf/db/local /etc/dconf/db/local.d \
|
||||
&& echo "postsetup: system-db compiled ($(chroot "$ROOTFS" dconf --version 2>/dev/null))" \
|
||||
|| echo "postsetup: system-db compile failed (non-fatal)"
|
||||
# 2. Compile a USER dconf db directly into /etc/skel/.config/dconf/user.
|
||||
# dracut's adduser.sh copies skel → /home/live on first boot, so the live
|
||||
# user starts with the keyboard in their OWN user db — no dependency on
|
||||
# dconf profile/system-db loading order.
|
||||
mkdir -p "$ROOTFS/etc/skel/.config/dconf"
|
||||
chroot "$ROOTFS" dconf compile /etc/skel/.config/dconf/user /etc/dconf/db/local.d \
|
||||
&& echo "postsetup: skel user dconf db compiled" \
|
||||
|| echo "postsetup: skel user dconf db compile failed (non-fatal)"
|
||||
else
|
||||
echo "postsetup: dconf or keyfile dir not found in rootfs — skipping dconf compile"
|
||||
fi
|
||||
PSEOF
|
||||
chmod +x "$_DCONF_POSTSETUP"
|
||||
|
||||
cd "$MKLIVE_DIR"
|
||||
|
||||
@@ -132,6 +153,13 @@ trap _cleanup_mklive_builds EXIT
|
||||
-p "$ISO_PKGS" \
|
||||
-I "$INCLUDE_DIR" \
|
||||
-C "${BOOT_CMDLINE:-}" \
|
||||
-x "$_DCONF_POSTSETUP" \
|
||||
-o "$OUT_ISO"
|
||||
|
||||
chown "$(stat -c '%u:%g' "$PROJECT_DIR")" "$OUT_ISO" "${OUT_ISO}".* 2>/dev/null || true
|
||||
# ownership of OUT_ISO is fixed unconditionally below with the include dir
|
||||
|
||||
# Fix ownership of include dir so the host user can clean up without sudo.
|
||||
# u+rwX: sets read+write on all, execute only on directories (capital X).
|
||||
chmod -R u+rwX "$INCLUDE_DIR" 2>/dev/null || true
|
||||
chown -R "${HOST_UID:-1000}:${HOST_GID:-1000}" "$INCLUDE_DIR" 2>/dev/null || true
|
||||
chown -R "${HOST_UID:-1000}:${HOST_GID:-1000}" "$OUT_ISO" "${OUT_ISO}".* 2>/dev/null || true
|
||||
|
||||
Reference in New Issue
Block a user