Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/skills/index.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"generated_at": "2026-09-20",
"generated_at": "2026-09-22",
"schema_version": "1.0",
"skills": [
{
Expand Down Expand Up @@ -467,8 +467,8 @@
"akmods"
],
"description": "NVIDIA GPU support architecture and update procedures. Use when editing nvidia files in system_files/nvidia/, bluefin scripts, or dakota elements.",
"version": "1.1",
"last_updated": "2026-08-08",
"version": "1.2",
"last_updated": "2026-09-15",
"doc_type": "reference"
},
{
Expand Down
2 changes: 1 addition & 1 deletion docs/skills/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
This file is a human-readable mirror of `index.json`. Both are generated by
`scripts/generate_skill_index.py` — do not hand-edit either file.

Generated: 2026-09-20 · schema 1.0 · 40 skills
Generated: 2026-09-22 · schema 1.0 · 40 skills

| id | category | status | one-line purpose |
|---|---|---|---|
Expand Down
27 changes: 22 additions & 5 deletions docs/skills/nvidia/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: nvidia
version: "1.1"
last_updated: "2026-08-08"
version: "1.2"
last_updated: "2026-09-15"
id: nvidia
one_line_purpose: Maintain NVIDIA GPU support architecture and update procedures.
entry_point: docs/skills/nvidia/SKILL.md
Expand Down Expand Up @@ -39,14 +39,31 @@ metadata:

| Repo | Base OS | Driver source | NCT installed | CDI preset |
|---|---|---|---|---|
| `projectbluefin/common` | shared overlay | — | — | ✅ `system_files/nvidia/…/80-nvidia-container-toolkit.preset` |
| `projectbluefin/bluefin` | Fedora | `ublue-os/akmods-nvidia-open` OCI | ✅ (build script) | inherits from common |
| `projectbluefin/bluefin-lts` | CentOS Stream 10 | `ublue-os/akmods-nvidia-open` OCI | ✅ (nvidia build overlay) | ✅ `system_files_overrides/gdx/…/80-nvidia-container-toolkit.preset` |
| `projectbluefin/common` | shared overlay | — | — | ❌ none — see "`system_files/nvidia/` ships to nobody" below |
| `projectbluefin/bluefin` | Fedora | `ublue-os/akmods-nvidia-open` OCI | ✅ (build script) | ❌ none in either repo |
| `projectbluefin/bluefin-lts` | CentOS Stream 10 | `ublue-os/akmods-nvidia-open` OCI | ✅ (nvidia build overlay) | ✅ `system_files_overrides/nvidia/…/80-nvidia-container-toolkit.preset` |
| `projectbluefin/dakota` | GNOME OS (BST) | `.run` installer, open kmod | ✅ (built from source) | ✅ `elements/bluefin-nvidia/nvidia-container-toolkit-preset.bst` |

**dakota is the reference implementation.** When in doubt about the correct approach for
nvidia-related changes, read `elements/bluefin-nvidia/` in dakota first.

### `system_files/nvidia/` ships to nobody

The ctx stage of this repo's `Containerfile` publishes `/system_files/nvidia`, but **no
consumer copies it**: in `projectbluefin/bluefin`, `projectbluefin/bluefin-lts` and
`projectbluefin/utah`, every `COPY --from=common /system_files/...` line in the
`Containerfile` names `/system_files/shared` or `/system_files/bluefin` — none names
`/system_files/nvidia`. Verify with
`grep -n 'COPY --from=common /system_files' Containerfile` in each repo rather than by line
number; those line numbers drift.
Nothing in the org enables `ublue-nvidia-flatpak-runtime-sync.service`, and this repo ships
no preset for it. Editing `system_files/nvidia/` therefore changes no image today.

`80-nvidia-container-toolkit.preset` has **never existed** in this repo
(`git log --all -- system_files/nvidia/usr/lib/systemd/system-preset` is empty), so bluefin
does not inherit a CDI preset from here either. Tracked in common#1124 — do not treat
`system_files/nvidia/` as a live delivery path until that issue is resolved.

---

## CDI is the architecture — not OCI hooks
Expand Down
32 changes: 23 additions & 9 deletions docs/skills/nvidia/references/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,21 @@ containers fail to access GPUs because bootc does not use cgroup device delegati
so all system Flatpaks are current after rebooting into a new NVIDIA image (not just the GL
extension). Needed for Flatpak apps to use the GPU. Triggered by
`ublue-nvidia-flatpak-runtime-sync.service` (TimeoutStartSec=900).
- `system_files/nvidia/usr/lib/systemd/system-preset/80-nvidia-container-toolkit.preset` —
enables `nvidia-cdi-refresh.{path,service}` for CDI spec auto-generation.

Changes here flow into **all** nvidia-variant images at next build. Be surgical.
**Not currently delivered.** The ctx stage publishes `/system_files/nvidia`, but every
consumer copies `/system_files/shared` and `/system_files/bluefin` only — in bluefin,
bluefin-lts and utah, `grep -n 'COPY --from=common /system_files' Containerfile` returns
only `shared` and `bluefin` lines, never `nvidia` (cited by content because the line
numbers in those repos drift). No
preset here and no `systemctl enable` anywhere in the org references
`ublue-nvidia-flatpak-runtime-sync.service`, so neither the unit nor the helper is present in
a built image. `tests/test_nvidia_flatpak_sync.bats` asserts against the files on disk and
passes regardless. Changes here reach **no** image until common#1124 is resolved.

There is no `system_files/nvidia/usr/lib/systemd/system-preset/80-nvidia-container-toolkit.preset`
in this repo and there never has been; CDI auto-generation is enabled per-consumer
(bluefin-lts `system_files_overrides/nvidia/…`, dakota `elements/bluefin-nvidia/…`) and the
Fedora bluefin variant has no such preset in either repo.

### `projectbluefin/bluefin`

Expand All @@ -78,14 +89,17 @@ exclusion even after adding the official toolkit.

### `projectbluefin/bluefin-lts` (nvidia build overlay)

`gdx/` is the internal build override directory name for the nvidia stack in LTS — it is not a user-facing variant or image name.
`nvidia/` is the internal build override directory name for the nvidia stack in LTS — it is
the override directory name, not a user-facing image name. Arch-specific companions
(`x86_64-nvidia/`, `aarch64-nvidia/`) exist alongside it.

- `build_scripts/overrides/gdx/20-nvidia.sh` — nvidia install script
- `system_files_overrides/gdx/usr/lib/systemd/system-preset/80-nvidia-container-toolkit.preset`
- `build_scripts/overrides/nvidia/20-nvidia.sh` — nvidia install script
- `system_files_overrides/nvidia/usr/lib/systemd/system-preset/80-nvidia-container-toolkit.preset`

The LTS build uses an override directory system. `build.sh` calls `run_buildscripts_for gdx`
(runs `build_scripts/overrides/gdx/*.sh`) and `copy_systemfiles_for gdx` (copies
`system_files_overrides/gdx/` to `/`). Nvidia changes for LTS go in those two locations.
The LTS build uses an override directory system. `build_scripts/build.sh` calls
`run_buildscripts_for nvidia` (runs `build_scripts/overrides/nvidia/*.sh`) and
`copy_systemfiles_for nvidia` (copies `system_files_overrides/nvidia/` to `/`), plus the
arch-specific variants. Nvidia changes for LTS go in those two locations.

The LTS build installs the *full* `nvidia-container-toolkit` package (not `-base`) from the
`fedora-nvidia` repo that the akmods bundle enables. This is pre-existing behavior; don't
Expand Down
12 changes: 11 additions & 1 deletion system_files/nvidia/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,16 @@
# system_files/nvidia/ — NVIDIA Overlay

This layer is applied on top of `shared/` and `bluefin/` only for the NVIDIA GPU image variant.
This layer is intended to be applied on top of `shared/` and `bluefin/` for the NVIDIA GPU
image variant.

> **Status: not consumed.** The `Containerfile` ctx stage publishes `/system_files/nvidia`,
> but no downstream image copies it — in `projectbluefin/bluefin`,
> `projectbluefin/bluefin-lts` and `projectbluefin/utah`, every
> `COPY --from=common /system_files/...` line copies `/system_files/shared` or
> `/system_files/bluefin`, never `/system_files/nvidia` (check with
> `grep -n 'COPY --from=common /system_files' Containerfile`; line numbers drift), and
> nothing in the org enables `ublue-nvidia-flatpak-runtime-sync.service`. Files added here
> reach no image. See common#1124 before relying on this path.

## Current contents

Expand Down
Loading