Architecture
How the Larch repo is put together
Repo layout
archiso/releng/ archiso profile for the ISO, forked from the official releng profile
scripts/ pre-ISO prep tooling (AUR local repo, wallpaper fetch, submodules)
Makefile prepare/iso/clean targets wrapping scripts/ and mkarchiso
assets/ brand assets (logo, splash source)
docs/ design notesThe whole distro is a fork of archiso's official releng profile. Customization happens through the ISO build config, the installer (larch-calamares), and post-install provisioning, not through a custom package repo.
How the installed user gets Larch's config
/etc/skel is plain Arch default, just whatever the bash/screen packages put there. Larch's niri/noctalia/zsh setup is scoped to the live larch user and the one user Calamares creates at install time, not every future useradd.
The installer-created user gets that config through larch-calamares's larch-postinstall module: it copies /home/larch's dotfiles onto the new user directly (skipping the bash files, which the user's own real skel already provided), then layers this repo's install-overrides/ (shipped in the squashfs at /usr/share/larch/install-overrides/) on top for anything that has to differ once Calamares itself is gone from the installed system, for example the noctalia bar losing its install button, or niri no longer trying to auto-launch an installer that isn't there anymore.
The live session's config is still the one source of truth: author it once in /home/larch, and both the live ISO and the installed system get it, with overrides only where they genuinely need to diverge.
Key decisions worth knowing
- oh-my-zsh is a git submodule, not vendored files (see Shell and terminal). Clone with
--recurse-submodulesor the build fails loudly rather than silently shipping an empty.oh-my-zshdirectory. - Wallpapers are fetched, not committed.
scripts/prepare-iso.shpulls a numbered set (larch-0.png,larch-1.png, ...) from a fixed URL at build time, probing upward until one 404s. Binary image assets don't belong in git history. - Never rename a built ISO file. If a VM needs to point at a new build, repoint the VM's disk XML at the real dated filename (
out/larch-<date>-x86_64.iso) instead.