Instead of downloading at first login, everything is ready at boot:
- iso/build-live-iso.sh:
* apply-live-settings.sh XDG autostart applies theme/wallpaper/terminal
via gsettings at first Cinnamon login (reliable vs dconf binary format)
* /etc/environment: XDG_DATA_DIRS includes nix profile so Cinnamon menu
shows pre-baked nix apps immediately
* /etc/profile.d/nix-prebaked.sh: PATH setup for terminal sessions
* first-login.sh kept at /usr/local/libexec but NOT autostarted (manual
use for Claude/NVM installs)
* NIX_PACKAGES_PREBAKE passed to Docker build
- iso/_inner-build-live.sh:
* Pre-bake nix packages inside Docker before mklive.sh; copy /nix store
into squashfs overlay; set /etc/skel/.nix-profile → store profile path
* Cached at /cache/nix-prebake (keyed by package list md5)
- iso/Dockerfile: add rsync (needed by nix prebake)
- packages.live-desktop.list: add vscode + chromium (XBPS, no download)
20 lines
767 B
Docker
20 lines
767 B
Docker
# Container used to run void-mklive with real root.
|
|
# This avoids the user-namespace CAP_MKNOD wall (dracut needs mknod /dev/null
|
|
# inside the initramfs staging dir) and lets losetup/mount/chroot work
|
|
# unconditionally. Host stays clean — no sudo, no host package installs.
|
|
|
|
FROM debian:stable-slim
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
bash git curl ca-certificates xz-utils tar patch python3 \
|
|
mtools xorriso squashfs-tools dosfstools e2fsprogs \
|
|
kmod dconf-cli rsync \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# xbps-static is downloaded into /cache by the host script and added to PATH
|
|
# at runtime by /work/iso/_inner-build.sh — no Void packages baked here.
|
|
|
|
WORKDIR /work
|