No description
  • Just 52.2%
  • Python 38.2%
  • Shell 9.6%
Find a file
2026-04-14 00:23:38 +02:00
ci ci: Minor Python lints fixes 2025-10-14 11:52:25 +02:00
LICENSES REUSE: Misc changes to be REUSE compliant 2025-10-12 14:22:41 +02:00
packages Add ksshaskpass to the packages list in Kinoite 2026-03-31 18:40:20 +00:00
.gitignore gitignore: Add more paths to ignore 2024-02-11 12:50:08 +01:00
.zuul.yaml ci: Use Rawhide cloud image again 2024-08-29 19:27:10 +02:00
base-atomic.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
bootupd.yaml bootupd: Remove preset for bootloader-update 2025-10-13 21:52:35 +02:00
budgie-atomic-common.yaml budgie: Make sure plasma-discover-rpm-ostree is installed 2026-03-14 15:52:14 +01:00
budgie-atomic-ostree.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
budgie-atomic.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
common.yaml common: Workaround broken mandb cache update 2026-03-16 11:52:47 +01:00
composefs.yaml composefs: Update link to Fedora Change Request 2025-01-09 15:56:03 +01:00
comps-sync-exclude-list.yml Add ksshaskpass to the packages list in Kinoite 2026-03-31 18:40:20 +00:00
comps-sync.py Rawhide is now F45 2026-01-29 21:49:04 +01:00
cosmic-atomic-common.yaml manifests: Move exclude to specific variants 2025-10-17 16:31:37 +02:00
cosmic-atomic-ostree.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
cosmic-atomic.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
dnf5.yaml Use conditional includes to separate bootable containers 2024-07-26 17:06:23 +02:00
dynamic-ugid-ownership-fixes.yaml Make uid/gid fix for gnome-remote-desktop Silverblue only 2025-12-22 14:31:00 +01:00
fedora.repo More simpler 2026-04-06 20:27:43 +00:00
fedora.yaml common: Exclude fuse (version 2) 2026-02-06 17:16:46 +01:00
generate-gitlab-ci.sh generate-gitlab-ci: Update rawhide detection logic 2026-04-14 00:23:38 +02:00
group group: Fix tape & input GIDs 2022-11-10 17:01:09 +00:00
initramfs.yaml Drop support for PPC64LE architecture 2025-02-05 22:55:09 +01:00
justfile justfile: Inline the --force-nocache option 2026-04-14 00:23:38 +02:00
kernel-install.yaml common: Add kernel-install integration config 2025-01-24 12:48:08 +01:00
kinoite-common.yaml kinoite: Re-split shared manifest to not depend on variant 2025-10-17 12:16:29 +02:00
kinoite-mobile-common.yaml kinoite: Re-split shared manifest to not depend on variant 2025-10-17 12:16:29 +02:00
kinoite-mobile.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
kinoite-ostree.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
kinoite-shared.yaml Kinoite: Workaround missing (g)shadow entries for plasmalogin 2026-03-03 00:42:12 +01:00
kinoite.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
ostree-classic.yaml common: Remove ostree-grub2 2025-02-09 21:32:01 +01:00
passwd passwd: Fix (no)login shell paths 2022-11-10 17:01:09 +00:00
qemu-user-static-non-x86_64.yaml Drop support for PPC64LE architecture 2025-02-05 22:55:09 +01:00
qemu-user-static-x86_64.yaml common: Exclude less common architectures for QEMU user static 2024-12-04 17:39:08 +01:00
README.md More simpler 2026-04-06 20:27:43 +00:00
REUSE.toml packages: Move comps sync'ed package lists to a sub dir 2025-10-14 00:59:27 +02:00
silverblue-common.yaml Only explicitely include Qt6 on Silverblue 2026-02-15 22:30:11 +01:00
silverblue-ostree.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
silverblue.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
sway-atomic-common.yaml manifests: Move Firefox inclusion to Fedora's manifest 2025-10-19 14:21:00 +02:00
sway-atomic-ostree.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
sway-atomic.yaml Simplify the new release branching process 2026-04-06 20:27:43 +00:00
sysroot-ro.yaml common: Setup read only sysroot via ostree config 2024-06-11 10:36:44 +02:00

Manifests for Fedora Atomic Desktops variants

This is the configuration needed to create rpm-ostree based, desktop variants of Fedora, also known as Fedora Atomic Desktops. See the Atomic Desktops project for more information about all of the variants.

This repo is managed by the Fedora Atomic Desktops SIG.

Reach out to the SIG if you are interested in creating and maintaining a new Atomic variant.

Repository content

Each variant is described in a YAML treefile which is then used by rpm-ostree to compose an ostree commit or OCI image with the package requested.

In the Fedora infrastructure, composes are made via pungi with the configuration from:

Installer ISOs are built using Lorax and additional templates: pagure.io/fedora-lorax-templates.

Getting started

If you'd like to build an Atomic system image, you'll need to clone this repo and check out the release branch you want to work with, then build, publish, and install the image.

Currently, the default image type in Fedora is "ostree", while container images are still in development. You can build either type.

All commonly used commands are listed as recipes in the justfile (see Just).

Clone this repo

# Clone the config
git clone https://pagure.io/workstation-ostree-config && cd workstation-ostree-config

# Check out a release branch (unless you want a rawhide image)
git checkout f45

ostree image

Build an ostree image

# Build the classic ostree commits (currently the default in Fedora)
just compose-legacy silverblue

Publish an ostree image

Serve the ostree repo using an HTTP server. You can use any static file server. For example using https://github.com/TheWaWaR/simple-http-server:

simple-http-server --index --ip 192.168.122.1 --port 8000

Install the ostree image

On an already installed Silverblue system:

# Pin the currently deployed (and probably working) version
sudo ostree admin pin 0

# Add an ostree remote
sudo ostree remote add testremote http://192.168.122.1:8000/repo --no-gpg-verify

# List refs from variant remote
sudo ostree remote refs testremote

# Switch to your variant
sudo rpm-ostree rebase testremote:fedora/rawhide/x86_64/silverblue

# Reboot and test!

Container image

Build a container image

# Build the new ostree native container (not default yet, still in development)
just compose-image silverblue

Publish the container image

Serve the container image using a local insecure container image registry.

# Run a local container image registry
podman run -d -p 5000:5000 --name local-registry registry:2

# Push the ociarchive to the image registry
REGISTRY=192.168.122.1:5000 RELEASE_REPO=fedora \
  just upload-container-local

# Examine the output for the OCI image location, e.g.:
# 192.168.122.2:5000/fedora/silverblue:rawhide.20260324.0

Install the container image

On an already installed Silverblue system:

# Pin the currently deployed (and probably working) version
sudo ostree admin pin 0

sudo tee -a /etc/containers/registries.conf.d/localdev.conf <<EOF
[[registry]]
location="192.168.122.1:5000"
insecure=true
EOF

# Switch to your variant
sudo rpm-ostree rebase ostree-unverified-image:registry:192.168.122.1:5000/fedora/silverblue:rawhide.20260324.0

# Reboot and test!

See URL format for ostree native containers for details.

Compose Methods and Outputs

There are a few different ways Fedora Atomic Desktop images are currently produced within Fedora's infrastructure.

1. Official Pungi Compose (OSTree Commit)

This is the traditional method for creating the official Fedora Atomic Desktops.

  • Source Repository: workstation-ostree-config (this repository)
  • Compose Tool: Fedora's official Pungi composer.
  • Output Type: A classic OSTree commit.
  • Details: This is the standard, officially supported output that is used to deliver updates to users.

2. Official Pungi Compose (OCI Image)

Fedora infrastructure also produces OCI (bootable container) images from the manifests in this repository.

  • Source Repository: workstation-ostree-config (this repository)
  • Compose Tool: Fedora's official Pungi composer.
  • Output Type: An OCI container image.
  • Output Location: quay.io/fedora/fedora-<variant_name> (e.g., quay.io/fedora/fedora-silverblue)
  • Details: These official images are unsigned and do not have historical tags (e.g., 40.20240422.0).

3. Unofficial CI-Test Builds (OCI Image)

For testing and development purposes, an unofficial set of OCI images are built using a separate repository that mirrors the manifests from this one but adds a GitLab CI pipeline.

  • Source Repository: gitlab.com/fedora/ostree/ci-test
  • Compose Tool: GitLab CI.
  • Output Type: An OCI container image.
  • Output Location: quay.io/fedora-ostree-desktops/<variant_name> (e.g., quay.io/fedora-ostree-desktops/silverblue)
  • Details: These images are unofficial and intended for testing. Unlike the official OCI images, they are cosign signed, retain historical tags, and are subject to a 4-week expiry policy on the container registry.

The goal is to eventually use a similar CI pipeline-centric flow, with signing and historical tags, for the official releases.

Syncing with Fedora Comps

Fedora Comps are "XML files used by various Fedora tools to perform grouping of packages into functional groups."

Changes to the comps files need to be regularly propagated to this repo so that the Fedora Atomic variants are kept updated with the other desktop variants.

Using just

If you have the just command installed, you can run just comps-sync from a git checkout of this repo to update the packages included in the Fedora Atomic variants. Examine the changes and cross-reference them with PRs made to the fedora-comps repo. Create a pull request with the changes and note any PRs from fedora-comps in the commit message that are relevant to the changes you have generated.

Using comps-sync.py directly

If you don't have just installed or want to run the comps-sync.py script directly, you need to have an up-to-date git checkout of https://pagure.io/fedora-comps and a git checkout of this repository.

Using the comps-sync.py script, provide the updated input XML file to examine the changes as a dry-run:

./comps-sync.py /path/to/fedora-comps/comps-f45.xml.in

Examine the changes and cross-reference them with PRs made to the fedora-comps repo. When you are satisfied that the changes are accurate and appear safe, re-run the script with the --save option:

./comps-sync.py --save /path/to/fedora-comps/comps-f45.xml.in

Create a pull request with the changes and note any PRs from fedora-comps in the commit message that are relevant to the changes you have generated.

Branching instructions for new Fedora releases

Follow those steps during the Fedora branch process in Fedora:

Fedora Ansible

Make a PR similar to ansible#1318 in fedora-infra/ansible.

This repo

Use the branch recipe to create the new release branch and update the main branch:

just branch

Push the new changes in both branches.

Historical references

Building and testing instructions:

For some background, see:

Note also this repo obsoletes https://pagure.io/atomic-ws