-
Notifications
You must be signed in to change notification settings - Fork 17
Architecture
cosmic-overlay/
├── cosmic-base/ # Primary category: COSMIC DE apps + Pop!_OS components
├── cosmic-extra/ # Community add-ons layered on top of COSMIC (e.g. cutecosmic)
├── cosmic-utils/ # Packages from the community github.com/cosmic-utils org
├── acct-group/ # System groups needed by daemons (e.g. cosmic-greeter)
├── acct-user/ # System users needed by daemons (e.g. cosmic-greeter)
├── virtual/ # Virtual packages
├── x11-themes/ # Theming packages (e.g. adw-gtk3)
├── dev-lang/, dev-util/ # Toolchain packages COSMIC/tooling needs (dart, buf, dart-sass...)
├── eclass/ # Shared build logic (see below)
├── scripts/ # Maintainer automation (see [[Bumping Ebuilds]], [[QA and Testing]])
├── profiles/ # Gentoo repo profile data
└── metadata/layout.conf # masters = gentoo, thin-manifests = true
cosmic-base used to be cosmic-de; packages were migrated in 05.2025 via pkgmove. Users on the old category need to sync once to get the automatic move.
All COSMIC packages inherit shared logic from eclass/:
-
cosmic-common.eclass— common helpers shared by both live and tagged ebuilds (install helpers likecosmic-common_install_metainfo, target dir handling, etc). -
cosmic-de-r2.eclass— the main eclass tagged/versioned COSMIC ebuilds inherit: Rust build profile handling (RUST_MIN_VER), USE flags, cargo invocation. -
cosmic-live.eclass— equivalent logic specialized for-9999live ebuilds tracking upstreammaster.
Because nearly every package in cosmic-base inherits one of these, an eclass change has repo-wide blast radius — see the eclass note in Maintainer Guide.
-
debug—cargo build --profile debug -
debug-line-tables-only— addsprofile.$profile_name.debug="line-tables-only", useful for stack traces regardless of profile -
max-opt— injectedrelease-maximum-optimizationprofile (1 codegen unit, opt-level=3); mutually exclusive withdebug
-
Tagged/stable ebuilds track upstream release tags from
pop-os/cosmic-epoch, e.g.epoch-1.4.0. The overlay version drops theepoch-prefix (cosmic-comp-1.4.0.ebuild). -
Live ebuilds (
-9999) track upstreammasterdirectly and are keyword-masked by default (masked via missing keywords, not~arch). -
Revisions (
-r1,-r2, ...) are reserved for overlay-side patch bumps (backports, ebuild fixes) — not for upstream source changes.PVRwas deliberately dropped fromSRC_URIfor this reason (an upstream re-tag should mean a newPV, not a revision bump).
Non-live ebuilds don't build against the live network — dependency crates are pre-vendored:
-
cargo vendor --lockedis run against the upstream tag to produce a vendored dependency set. - That's compressed with
zstdand uploaded as a GitHub release asset in this repo (not upstream), tagged to match the ebuild version. - The ebuild's
ManifestrecordsDISTentries withBLAKE2B/SHA512hashes for both the upstream source tarball and the vendor tarball.
iced/libcosmic system libraries were tried at one point and dropped (see commit fec5043) — Rust's static linking model makes unbundling not worth the effort here.
Two workflows in .github/workflows/:
-
qa-check.yml— runspkgcheck scan+pkgdev manifestinside a Gentoo Docker container, on push/PR tomainand weekly (Sundays 06:00 UTC). Comments QA summaries on PRs, uploads HTML/Markdown/JSON reports as artifacts. -
deploy-pages.yml— publishes the QA reports frommainto GitHub Pages athttps://fsvm88.github.io/cosmic-overlay/qa-reports/.
pkgcheck config lives in scripts/pkgcheck.conf (amd64/arm64 only, RequiredUseDefaults/RedundantVersion warnings disabled as not relevant to an overlay).