Building a modular Agama product on MicroOS with swappable desktop patterns (KDE/GNOME/other) — best practice for keeping layers decoupled?

I’m building a custom Agama product on top of plain openSUSE MicroOS (not Kalpa or another pre-built flavor), with the explicit goal of keeping every layer independently swappable:

  • Base: MicroOS, immutable, no desktop assumptions baked in
  • Desktop layer: KDE Plasma initially, but designed to be replaceable with GNOME or a custom shell later without touching the base
  • Extras layer: custom tooling/scripts/theming, added on top, independent of which desktop is chosen

The goal is that any layer can be removed or replaced without the others depending on it — nothing tightly integrated.

Question 1: Is there a documented, complete pattern (or small set of patterns) for a full, traditional KDE Plasma desktop on MicroOS — the same completeness as the Tumbleweed KDE spin (Konsole, System Settings, Discover, the usual full application set) — rather than a minimal/Flatpak-first subset? I want the base pattern to be genuinely complete on its own, with my own additions layered separately on top, not filling gaps in an incomplete base.

Question 2: For a fully offline install medium (no network repos at install time), is there a recommended way to build/mirror exactly the package set a given pattern needs, so the offline repo matches what the pattern actually requires? I’ve hand-built an offline repo and hit cases where a pattern’s dependencies weren’t fully present, and I’d rather follow a documented approach than reconstruct package lists by hand.

Context: This is for a personal custom distro project — MicroOS as the immutable base, an Agama product definition selecting the desktop pattern, with the intent of eventually supporting more than one desktop option without the two ever being coupled to each other. Any pointers to existing products that do something similar (even unofficial ones) would help — I haven’t found much prior art combining “fully offline” with “desktop kept swappable” on MicroOS specifically.

Agama ISO is the closest but I do not want to rip it apart and its a online installer only.
I tried Kalpa… but the definitions do not reproduce the same results as what Kalpa uses. Plus I do not want to re-use Kalpa’s image…

I hope this is the correct forum.

Also… should I be using agama… It seemed the best way forward since it seems to be the future. Any feedback is great!

Hi and welcome to the Forum :smile:

For a product list, see https://github.com/agama-project/agama/tree/master/products.d

I just use profiles, so here you can install patterns and packages, for example this is my current software setup for Hyprland;

  "software": {
    "patterns": [ "hyprland", "hyprland_extra", "office", "selinux" ],
    "packages": [ "Mesa-demo-egl", "NetworkManager-connection-editor", "at-spi2-core", "bluez", "bluez-auto-enable-devices",
                  "bluez-firmware", "btop", "chrony-pool-empty", "fastfetch", "flatpak", "google-droid-fonts",
                  "gnome-text-editor", "hplip", "hplip-driver-hpcups", "hyprland-guiutils", "hypridle", "hyprshot",
                  "intel-gpu-tools", "intel-media-driver", "inxi", "libreoffice-gnome", "libreoffice-gtk3", "libcap-progs",
                  "libvulkan_nouveau", "nautilus", "nwg-dock-hyprland", "papirus-folders", "papirus-icon-theme",
                  "power-profiles-daemon", "ptyxis", "sysfsutils", "sysstat", "setroubleshoot-server",
                  "symbols-only-nerd-fonts", "vulkan-tools", "wallpapers-openSUSE-extra", "wireless-tools", "xdg-user-dirs" ],
    "remove": [ "libthunarx-3-0", "thunar", "thunar-volman", "thunar-volman-branding-openSUSE", "yazi", "yazi-bash-completion" ],
  },

For custom images, kiwi is the tool or use the openSUSE Build Service via https://studioexpress.opensuse.org/

I did have plain MicroOS running Hyprland as well on a HP Stream 11, but for me it’s way easier to use Combustion. I do use MicroOS in VM’s for Kubernetes.

1 Like

Thanks this is very helpful. I was thinking about OBS but another thing to learn haha. That is the confusing thing. It seems there is a push to use agama but then with micro os I only see others using combustion and ignition. I will look more into these. Do you think my path is the wrong one or just one that is not documented well?

clarify — i do not see how to build the offline iso like kalpa / aeon

Thanks for the welcome as well. I have used SUSE forever… just now getting into custom builds for specific things.

I assume you have read through here?
https://agama-project.github.io/docs/user
https://agama-project.github.io/docs/user/reference/profile

With MicroOS I put an image onto the storage device, plug in a combution USB, boot, walk away, make a coffee, come back and done…

On my vm’s it’s an automated script using virt-install and a link to the respective combustion script as well as using a MicroOS qcow2 image, boots already to go in less than two minutes…

I suggest if you can work with a vm install and build up your product how your wanting it.

Agama is still being developed and have had to work around a few things, I have users, software, storage sorted, but still need to test configuration scripts. Network again is a workaround by using a USB ethernet adapter for install (I use static ip addresses), so Agama uses that, when it boots the real interface is used.

1 Like

Yes, i just feel i missed the offline piece. I have the online working - you gave me the missing part i needed for the patterns

Agama felt easy to jump in and just do it :slight_smile:

Yes, but have been using combustion for many years, so Agama profiles are a new thing to get my head around…

Edit: I assume also you have seen https://opensuse.github.io/fuel-ignition/

no!!! wow I am so glad I decided to come and post!!! Thanks. This helps get me past the spot I am in. I will read up on these for now and still try to figure out the Agama offline later.

Thanks so much. Let me do some reading and play with this!

Another note for MicroOS, three partitions, /boot/efi, / and /var. If needing swap, I’d suggest zram or configure systemd user oom.

1 Like

@malcolmlewis thanks for your help!

everything you provided got me functional with the base i needed.

I also figured out the mystery of the offline part for Agama

Needed a specific form of this. The one from Kalpa did not work… but some how figured this one got me further:

software:
installation_repositories:
- url: file:///packages/

Plus the proper patterns :slight_smile:

I will update any findings after I build this out. I have successful builds just need to solve signing issue, post boot issue, and theme pack deployment… which is more to just get me through until my other project is done.

1 Like