Skip to content
Open
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
8 changes: 2 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
steps:
- name: Verify Base Image Integrity
run:
gh attestation verify oci://ghcr.io/vanilla-os/desktop:main --owner Vanilla-OS
gh attestation verify oci://ghcr.io/vanilla-os/gnome:latest --owner Vanilla-OS
env:
GH_TOKEN: ${{ github.token }}

Expand All @@ -28,17 +28,13 @@ jobs:
contents: write # Allow actions to create release
attestations: write # To create and write attestations
id-token: write # Additional permissions for the persistence of the attestations

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Change tag in recipe
run: |
sed 's/ghcr.io\/vanilla-os\/desktop:dev/ghcr.io\/vanilla-os\/desktop:main/' -i recipe.yml

- uses: vanilla-os/vib-gh-action@v1.1.0
with:
recipe: 'recipe.yml'
Expand Down
20 changes: 14 additions & 6 deletions .github/workflows/vib-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ on:
push:
branches:
- 'dev'
- 'vision'
tags:
- '*'
workflow_dispatch:
Expand All @@ -20,7 +21,7 @@ jobs:
- name: Verify Base Image Integrity
if: ${{ github.ref_type == 'tag' }}
run:
gh attestation verify oci://ghcr.io/vanilla-os/desktop:main --owner Vanilla-OS
gh attestation verify oci://ghcr.io/vanilla-os/gnome:latest --owner Vanilla-OS
env:
GH_TOKEN: ${{ github.token }}

Expand All @@ -44,9 +45,14 @@ jobs:
- uses: actions/checkout@v4

- name: Change tag in recipe
if: ${{ github.ref_type == 'tag' }}
if: ${{ github.ref_type != 'tag' }}
run: |
sed 's/ghcr.io\/vanilla-os\/desktop:dev/ghcr.io\/vanilla-os\/desktop:main/' -i recipe.yml
if [ -n "${{ github.base_ref }}" ]; then
TAG="${{ github.base_ref }}"
else
TAG="${{ github.ref_name }}"
fi
sed "s/ghcr.io\/vanilla-os\/gnome:latest/ghcr.io\/vanilla-os\/gnome:$TAG/" -i recipe.yml

- uses: vanilla-os/vib-gh-action@v1.1.0
with:
Expand All @@ -62,7 +68,7 @@ jobs:
run: |
REPO_OWNER_LOWERCASE="$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')"
echo "REPO_OWNER_LOWERCASE=$REPO_OWNER_LOWERCASE" >> "$GITHUB_ENV"
echo "IMAGE_URL=ghcr.io/$REPO_OWNER_LOWERCASE/nvidia-exp" >> "$GITHUB_ENV"
echo "IMAGE_URL=ghcr.io/$REPO_OWNER_LOWERCASE/gnome-nvidia-modern" >> "$GITHUB_ENV"

- name: Docker meta
id: meta
Expand Down Expand Up @@ -139,7 +145,7 @@ jobs:
run: |
REPO_OWNER_LOWERCASE="$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')"
echo "REPO_OWNER_LOWERCASE=$REPO_OWNER_LOWERCASE" >> "$GITHUB_ENV"
echo "IMAGE_URL=ghcr.io/$REPO_OWNER_LOWERCASE/nvidia-exp" >> "$GITHUB_ENV"
echo "IMAGE_URL=ghcr.io/$REPO_OWNER_LOWERCASE/gnome-nvidia-modern" >> "$GITHUB_ENV"

- name: Download digests
uses: actions/download-artifact@v4
Expand All @@ -156,7 +162,8 @@ jobs:
- name: Extra image tag release
if: ${{ github.ref_type == 'tag' }}
run: |
echo "EXTRA_TAG=raw,main" >> "$GITHUB_ENV"
echo "EXTRA_TAG=raw,latest" >> "$GITHUB_ENV"
echo "IMAGE_TAG_LEGACY=${IMAGE_URL/gnome-nvidia-modern/nvidia-exp}:main" >> "$GITHUB_ENV"

- name: Docker meta
id: meta
Expand Down Expand Up @@ -184,4 +191,5 @@ jobs:
working-directory: ${{ runner.temp }}/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
${IMAGE_TAG_LEGACY:+-t $IMAGE_TAG_LEGACY} \
$(printf '${{ env.IMAGE_URL }}@sha256:%s ' *)
13 changes: 5 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
# Vanilla OS Nvidia Experimental Image
# Vanilla OS GNOME NVIDIA Modern Image

Containerfile for building a Vanilla OS Desktop + Nvidia image.
Containerfile for building a Vanilla OS GNOME + NVIDIA image.

This image is based on top of [`vanillaos/desktop`](https://github.com/Vanilla-OS/desktop-image/pkgs/container/desktop) and offers the default Vanilla OS Desktop experience with GNOME and Nvidia drivers.
This image is based on top of [`vanillaos/gnome`](https://github.com/Vanilla-OS/desktop-image/pkgs/container/gnome) and offers the default Vanilla OS Desktop experience with GNOME and modern NVIDIA drivers.

## Build

> [!NOTE]
> The fsguard compiled plugin `.so` file should be downloaded from the [latest release](https://github.com/Vanilla-OS/vib-fsguard/releases/latest) and be placed under a `plugins` directory beside the `recipe.yml` file.

```bash
vib build recipe.yml
podman image build -t vanillaos/nvidia-exp .
podman image build -t vanillaos/gnome-nvidia-modern .
```

## Verify Image Build Provenance Attestation

All the image builds/pushes are attested for build provenance and integrity using the [attest-build-provenance](https://github.com/actions/attest-build-provenance) action. The attestations can be verified [here](https://github.com/Vanilla-OS/nvidia-image/attestations) or by having the latest version of [GitHub CLI](https://github.com/cli/cli/releases/latest) installed in your system. Then, execute the following command:

```sh
gh attestation verify oci://ghcr.io/vanilla-os/nvidia-exp:main --owner Vanilla-OS
gh attestation verify oci://ghcr.io/vanilla-os/gnome-nvidia-modern:latest --owner Vanilla-OS
```
6 changes: 6 additions & 0 deletions includes.container/usr/libexec/abroot-image-migration
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash

url=$(jq -r '.registry + "/" + .name + ":" + .tag' /etc/abroot/abroot.json)
if [ $url = "ghcr.io/vanilla-os/nvidia-exp:main" ]; then
abroot rebase ghcr.io/vanilla-os/gnome-nvidia-modern:latest --rebase-only
fi
4 changes: 2 additions & 2 deletions includes.container/usr/share/abroot/abroot.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
"registry": "ghcr.io",
"registryService": "registry.ghcr.io",
"registryAPIVersion": "v2",
"name": "vanilla-os/nvidia-exp",
"tag": "main",
"name": "vanilla-os/gnome-nvidia-modern",
"tag": "latest",

"iPkgMngPre": "lpkg --unlock",
"iPkgMngPost": "lpkg --lock",
Expand Down
6 changes: 3 additions & 3 deletions recipe.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: Vanilla Desktop Nvidia Experimental
id: nvidia-exp
name: Vanilla GNOME NVIDIA Modern
id: gnome-nvidia-modern
vibversion: 1.1.0

stages:
- id: build
base: ghcr.io/vanilla-os/desktop:dev
base: ghcr.io/vanilla-os/gnome:latest
addincludes: true
singlelayer: false
labels:
Expand Down
Loading