Package lists and overlay files that describe a BigCommunity ISO. This
repository does not build ISOs — buildiso (manjaro-tools) reads
bigcommunity/<edition>/ from it.
shared/ <- what applies to every edition
bigcommunity/ <- one directory per edition; the rest is symlinks into shared/
No CI generates bigcommunity/: everything here is edited by hand. What keeps
it from being duplicated is symlinks — 140 of them today. Each edition's
Packages-Root, Packages-Live, Packages-Mhwd and user-repos.conf point at
../../shared/, and the overlays link directory by directory
(live-overlay/usr, desktop-overlay/etc, …). Editing shared/Packages-Root
changes every edition at once, which is what you usually want.
shared/
├── Packages-Root installed-system packages (common base)
├── Packages-Live live session only
├── Packages-Mhwd driver packages
├── profile.conf template: services, live user, label
├── pacman.conf shipped as /etc/pacman.conf by the overlays
├── user-repos.conf BigCommunity pacman repositories
├── root-overlay/ files for the installed system
├── desktop-overlay/ files for the desktop image
├── live-overlay/ live session only (GRUB, calamares, memtest)
├── grub-assets/icons/ live GRUB menu icons
└── grub-i18n/ po/ + LINGUAS + update-translations.sh
bigcommunity/
└── kde/ gnome/ xfce/ cinnamon/ cosmic/ deepin/ hyprland/ core/
├── Packages-Desktop the ONLY package file the edition owns
├── profile.conf hostname, live user, custom_boot_args
├── Desktop-remove (optional) removals from the desktop list
├── Root-remove (optional) removals from the root list
├── *-overlay/ links into shared/ plus its own files
└── Packages-{Root,Live,Mhwd}, user-repos.conf -> ../../shared/
| Goal | Edit |
|---|---|
| Add a package to every edition | shared/Packages-Root |
| Change a live-session-only package | shared/Packages-Live |
| Change a driver package | shared/Packages-Mhwd |
| Change an edition's desktop | bigcommunity/<edition>/Packages-Desktop |
| Drop a package in one edition only | bigcommunity/<edition>/Desktop-remove or Root-remove |
| Ship a file in the installed system | shared/root-overlay/ |
| Ship a file only in the live session | shared/live-overlay/ |
| Change the live user, password or hostname | bigcommunity/<edition>/profile.conf |
| Change the live GRUB menu | shared/live-overlay/usr/share/grub/cfg/ |
Push and build an ISO — there is no bot and no intermediate step.
Editing inside one edition may edit them all. bigcommunity/kde/Packages-Root
is a symlink to shared/Packages-Root. An editor that follows the link writes to
the shared file; one that replaces the file breaks the link and that edition
starts drifting from the others silently. Check with ls -l first.
Every edition's profile.conf is a real file. shared/profile.conf is the
reference template, not the source: editions override hostname, username,
password and custom_boot_args (KDE, for instance, boots with wayland).
Editing only shared/profile.conf changes no ISO.
core swaps the files around. Its Packages-Desktop holds a single line
(btop); the entire desktop — Cinnamon, themes, input drivers, udev rules —
lives in its own Packages-Live, which is not a link into shared/. Looking for
a core package in Packages-Desktop finds nothing.
The live menu lives in shared/live-overlay/usr/share/grub/ (cfg/, themes/
and locales/) and is translated from shared/grub-i18n/ — 28 languages listed
in LINGUAS, regenerated by update-translations.sh.
That menu's contracts (boot arguments, module blacklist, expected entries, themes present) are covered by tests:
pytest tests/ # 22 tests, ~0.3 sRun them after touching anything under live-overlay/.
repo_info in the root is not documentation: manjaro-tools finds a profile
repository by searching for exactly that file.
root-overlay/ lands in the installed system, desktop-overlay/ in the desktop
image, live-overlay/ only in the live session — the names are fixed, they are
what manjaro-tools expects to find.
Repositories come from user-repos.conf. A profile-level pacman-default.conf
is never read, which is why this repository does not ship one.
In Packages-*, >extra, >multilib and >i686 are manjaro-tools target
markers, and KERNEL is a placeholder, not a package: buildiso -k linux612
expands KERNEL-broadcom-wl into linux612-broadcom-wl. Leave it as KERNEL.
