projectbluefin/common/nvidia
Claude Code and agent skill by projectbluefin/common
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Checking that the SKILL.md file is still in the repository.
NVIDIA GPU support architecture and update procedures. Use when editing bluefin scripts, or dakota elements.
Install
npx vskill@latest install projectbluefin/common/nvidiaSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
NVIDIA GPU Support — Agent Skill
When to Use
- Modifying nvidia build scripts in
bluefin,bluefin-lts, ordakota - Updating NVIDIA driver or container toolkit versions
- Debugging flatpak GPU access or CDI spec generation failures
- Adding new nvidia-related services or presets
When NOT to Use
- Filing issues or making changes in
ublue-os/*— tell the human to report upstream manually - Modifying the closed-source driver path — factory only ships open kernel modules (Turing+)
The three repos and their nvidia stacks
| Repo | Base OS | Driver source | NCT installed | CDI preset | |
|---|---|---|---|---|---|
projectbluefin/common | shared overlay | — | — | ❌ none | |
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.
The suspend quirk lives in shared/
system_files/shared/usr/lib/modprobe.d/zz-nvidia-suspend.conf pins
NVreg_UseKernelSuspendNotifiers=1— without notifiers (or the
nvidia-suspend.service procfs handshake), the driver vetoes system PM (nv_pmops_suspend → NV_ERR_NOT_SUPPORTED), systemd-suspend aborts, and the machine wakes seconds after sleep starts (common#803, same failure class as dakota#1118).
NVreg_TemporaryFilePath=/var/lib/systemd/sleep— the default/tmpis
tmpfs; a failed VRAM save there aborts suspend through the notifier path too. It must not be /var/tmp: with notifiers the save file is opened from systemd-sleep (systemd_sleep_t), which Fedora's SELinux policy denies on tmp_t, so VRAM is lost and the GPU crashes on resume (utah#492/#533, fedora-selinux/selinux-policy#3087). /var/lib/systemd/sleep is systemd_sleep_var_lib_t, which the policy already lets that domain manage. usr/lib/tmpfiles.d/nvidia-suspend.conf creates the directory (systemd does not ship it); tests/test_nvidia_suspend.bats keeps the two in step.
Both options are inert on systems without the nvidia module and ignored as unknown parameters by drivers that predate them. The zz- prefix keeps the file sorted after the driver packages' nvidia.conf so these assignments win duplicates. This repo ships no nvidia-only overlay (common#1124), so this quirk must stay in shared/.
CDI is the architecture — not OCI hooks
Container GPU access uses CDI (Container Device Interface), not the legacy nvidia OCI hook.
How CDI works on bluefin
nvidia-container-toolkit-baseships two binaries:nvidia-ctkandnvidia-cdi-hooknvidia-cdi-refresh.servicerunsnvidia-ctk cdi generateat boot → writes/var/run/cdi/nvidia.yamlnvidia-cdi-refresh.pathwatches/lib/modules/*/modules.depand/usr/bin/nvidia-ctk- The systemd preset (
80-nvidia-container-toolkit.preset) enables both units at first boot - Podman v4.1.0+:
podman run --device nvidia.com/gpu=all --security-opt=label=disable ...
The CDI spec lives at /var/run/cdi/nvidia.yaml — ephemeral tmpfs, regenerated on every boot. Do not bake it into the image.
What NOT to install
Do not install nvidia-container-runtime, libnvidia-container1, libnvidia-container-tools, or nvidia-container-toolkit (full). Use the -base variant only. See `references/architecture.md` for full detail.
Constraints
- Turing+ only (GTX 16xx, RTX 20xx+) for open kernel modules.
- CDI spec is runtime-only — lives on tmpfs, regenerated on every boot.
- No cross-repo writes to `ublue-os/*` — report to a human who will file upstream manually.
- `golang-github-nvidia-container-toolkit` exclusion in bluefin is intentional — do not remove it.
Red Flags
- Pointing
NVreg_TemporaryFilePathat/var/tmp,/tmpor any other pathsystemd_sleep_tcannot write — the VRAM save is denied under enforcing SELinux and resume crashes the GPU (utah#533) - Removing
system_files/shared/usr/lib/modprobe.d/zz-nvidia-suspend.confor either of its options — sleep regresses to the common#803 "wakes seconds after suspend" veto on images whose driver package does not pin them - Removing the
80-nvidia-container-toolkit.presetCDI preset - Removing the
golang-github-nvidia-container-toolkitexclusion from the bluefin build script - Installing
nvidia-container-runtimeor the fullnvidia-container-toolkitpackage
Verification
Before closing any nvidia-related PR:
- [ ]
zz-nvidia-suspend.confstill carriesNVreg_UseKernelSuspendNotifiers=1andNVreg_TemporaryFilePath=/var/lib/systemd/sleep(common#803, utah#533), andtmpfiles.d/nvidia-suspend.confstill creates that directory - [ ] No
ublue-os/*repos were written to - [ ] CDI preset not accidentally removed —
80-nvidia-container-toolkit.presetstill enablesnvidia-cdi-refresh.{path,service} - [ ]
golang-github-nvidia-container-toolkitexclusion in bluefin build script is still present - [ ]
just checkandpre-commit run --all-filespass clean
References
| Reference | Description | |
|---|---|---|
| `references/architecture.md` | CDI architecture detail; what not to install; rootless config; SELinux notes; per-repo code locations (common, bluefin, bluefin-lts, dakota) | |
| `references/ngc-containers.md` | NGC container ecosystem; key containers table; distrobox path; updating driver or toolkit versions |
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdocs/skills/nvidia/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Extension points
hookPre/post lifecycle hooks
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/projectbluefin/common/nvidia)