Resources
Every DeskOS kind, how layers compose, and the software and GNOME model behind them.
Envelope
DeskOS configuration uses versioned, Kubernetes-inspired envelopes: it borrows the API ideas (Group, Version, Kind, schemas, composition) without Kubernetes.
apiVersion: core.deskos.org/v1alpha1
kind: Workstation
metadata:
name: example-developer-centos-stream-10
spec:
platformRef: centos-stream-10
profiles:
- deskos-core
- deskos-gnome
- example-organization
- example-developer
| Group | Kinds |
|---|---|
core.deskos.org | Platform, Profile, Workstation |
software.deskos.org | PackageSet, RpmRepository, AptRepository, BinaryArtifact, FlatpakRemote, FlatpakSet |
desktop.deskos.org | GnomeProfile, Theme |
system.deskos.org | BootProfile, UpdatePolicy, TrustAnchor, NetworkProfile |
All kinds are v1alpha1, with JSON Schemas in schemas/.
Resource roots
Resources live in YAML files under one or more resource roots. DeskOS Core is
embedded in deskosctl and loaded by default; an organization keeps its own root
and references Core by kind and name without copying it. --no-core drops the Core
to compile against a tree you pass, and deskosctl core export DIR writes it out.
- File and directory names have no meaning; asset paths resolve against the YAML file.
- Examples come from
resources/andexamples/; one not in this repository is labelled illustrative.
Resource kinds
| Area | Kinds | File |
|---|---|---|
| Core | Workstation, Profile, Platform | core.md |
| Software | PackageSet, RpmRepository, AptRepository, BinaryArtifact, FlatpakRemote, FlatpakSet | software.md |
| Desktop | GnomeProfile, Theme | desktop.md |
| System | BootProfile, UpdatePolicy, TrustAnchor, NetworkProfile | system.md |
Composition
A workstation composes from explicit semantic layers: foundation <
organization < role < workstation. The rules for set, keyed and scalar
classes and for provenance are in architecture.md.
DeskOS Core
DeskOS Core is the reusable workstation foundation maintained by the project. The public reference workstation uses CentOS Stream 10.
- RHEL: the same Core on the official RHEL 10 bootc base, never derived from the CentOS image.
- AlmaLinux 10 and Fedora 45: the same Core in example roots, built and booted by the weekly check but never published (example-platforms.md).
- Ubuntu 26.04: the same Core in its own repository, on a base owned by the Project DeskOS and without the RHEL family's software (ADR 0014, ADR 0020).
Software model
DeskOS avoids becoming a universal package manager. The baseline prefers, in order: a distribution RPM; an official vendor RPM, from its repository or as a signed file; a verified upstream binary; a system Flatpak; a future managed web application. Mise, SDKMAN, Homebrew, version managers, dotfiles and personal Toolboxes are outside the baseline (runtime.md).
GNOME
DeskOS exposes administrator intent, not dconf keys. A profile sets window controls, wallpapers and branding, fonts, icon and cursor themes, the color scheme and accent, ordered favorites, dock behavior, idle timeout, lock behavior, whether GNOME Software applies updates, hot corners, workspaces, app folders, the clock, Num Lock at login and the terminal shortcut, without naming a schema or a key.
Window controls write exactly the buttons and side a profile declares; the plan adds no app menu token (ADR 0016).
A base that ships a desktop of its own declares gnome.keepsVendorDefaults: true
instead of gnome.dconfDatabase; the rules are in
core.md.