Skip to content

Commit ed30173

Browse files
authored
feat: swap to negativo17 as nvidia driver source (#231)
This reworks all the bits in akmods for nvidia: - removes nvidia driver version as only latest is supported - uses negativo17 nvidia driver and packages
1 parent b3635f5 commit ed30173

File tree

3 files changed

+37
-41
lines changed

3 files changed

+37
-41
lines changed

.github/workflows/reusable-build.yml

+13-29
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ jobs:
4040
- lazurite
4141
- mate
4242
- vauxite
43-
nvidia_version:
44-
- 0 # No Nvidia drivers (this indicates to only build "main" image target
45-
- 550 # Latest Nvidia driver (update IS_LATEST_DRIVER below if version changes)
43+
image_target:
44+
- main
45+
- nvidia
4646
exclude:
4747
# There is no Fedora 38 version of onyx or lazurite
4848
- image_name: onyx
@@ -58,8 +58,8 @@ jobs:
5858
- image_name: mate
5959
fedora_version: 40
6060
# Don't build/push "main" since it would be a duplicate of the "base" `*-main` images
61-
- nvidia_version: 0
62-
hwe_flavor: main
61+
- hwe_flavor: main
62+
image_target: main
6363
# Only build latest Fedora versions for "asus" and "surface" HWE flavors
6464
- fedora_version: 38
6565
hwe_flavor: asus
@@ -79,13 +79,13 @@ jobs:
7979
shell: bash
8080
run: |
8181
if [[ "${{ matrix.hwe_flavor }}" == "main" ]]; then
82-
if [[ "${{ matrix.nvidia_version }}" == "0" ]]; then
82+
if [[ "${{ matrix.image_target }}" == "main" ]]; then
8383
echo "this workflow does not build main image without Nvidia drivers"
8484
exit 1
8585
fi
8686
echo "IMAGE_NAME=${{ matrix.image_name }}-nvidia" >> $GITHUB_ENV
8787
else
88-
if [[ "${{ matrix.nvidia_version }}" == "0" ]]; then
88+
if [[ "${{ matrix.image_target }}" == "main" ]]; then
8989
echo "IMAGE_NAME=${{ matrix.image_name }}-${{ matrix.hwe_flavor }}" >> $GITHUB_ENV
9090
else
9191
echo "IMAGE_NAME=${{ matrix.image_name }}-${{ matrix.hwe_flavor }}-nvidia" >> $GITHUB_ENV
@@ -99,11 +99,7 @@ jobs:
9999
run: |
100100
# Generate a timestamp for creating an image version history
101101
TIMESTAMP="$(date +%Y%m%d)"
102-
if [[ "${{ matrix.nvidia_version }}" == "0" ]]; then
103-
VARIANT="${{ matrix.fedora_version }}"
104-
else
105-
VARIANT="${{ matrix.fedora_version }}-${{ matrix.nvidia_version }}"
106-
fi
102+
VARIANT="${{ matrix.fedora_version }}"
107103
108104
if [[ "${{ matrix.fedora_version }}" -eq "38" ]]; then
109105
IS_LATEST_VERSION=false
@@ -119,10 +115,6 @@ jobs:
119115
IS_GTS_VERSION=false
120116
fi
121117
122-
if [[ "${{ matrix.nvidia_version }}" -eq "550" ]]; then
123-
IS_LATEST_DRIVER=true
124-
fi
125-
126118
COMMIT_TAGS=()
127119
BUILD_TAGS=()
128120
@@ -132,33 +124,26 @@ jobs:
132124
COMMIT_TAGS+=("${SHA_SHORT}-${VARIANT}")
133125
134126
if [[ "${IS_LATEST_VERSION}" == "true" ]] && \
135-
[[ "${IS_STABLE_VERSION}" == "true" ]] && \
136-
[[ "${IS_LATEST_DRIVER}" == "true" ]]; then
127+
[[ "${IS_STABLE_VERSION}" == "true" ]]; then
137128
COMMIT_TAGS+=("pr-${{ github.event.number }}")
138129
COMMIT_TAGS+=("${SHA_SHORT}")
139130
fi
140131
141132
BUILD_TAGS=("${VARIANT}")
142133
143-
if [[ "${IS_LATEST_DRIVER}" == "true" ]]; then
144-
BUILD_TAGS+=("${{ matrix.fedora_version }}-current")
145-
BUILD_TAGS+=("${{ matrix.fedora_version }}")
146-
fi
147-
148134
# Append matching timestamp tags to keep a version history
149135
for TAG in "${BUILD_TAGS[@]}"; do
150136
BUILD_TAGS+=("${TAG}-${TIMESTAMP}")
151137
done
152138
153139
if [[ "${IS_LATEST_VERSION}" == "true" ]] && \
154-
[[ "${IS_STABLE_VERSION}" == "true" ]] && \
155-
[[ "${IS_LATEST_DRIVER}" == "true" ]]; then
140+
[[ "${IS_STABLE_VERSION}" == "true" ]]; then
156141
BUILD_TAGS+=("${TIMESTAMP}")
157142
BUILD_TAGS+=("latest")
158143
fi
159144
160145
if [[ "${IS_GTS_VERSION}" == "true" ]] && \
161-
[[ "${IS_LATEST_DRIVER}" == "true" ]]; then
146+
[[ "${IS_STABLE_VERSION}" == "true" ]]; then
162147
BUILD_TAGS+=("gts-${TIMESTAMP}")
163148
BUILD_TAGS+=("gts")
164149
fi
@@ -205,7 +190,7 @@ jobs:
205190
${{ env.IMAGE_NAME }}
206191
labels: |
207192
org.opencontainers.image.title=${{ env.IMAGE_NAME }}
208-
org.opencontainers.image.description=ublue-os ${{ matrix.image_name }}${{ matrix.hwe_flavor == 'asus' && ' for ASUS devices' || '' }}${{ matrix.hwe_flavor == 'surface' && ' for Surface laptops' || ''}}${{ matrix.nvidia_version != '0' && ' with Nvidia drivers' || ''}}
193+
org.opencontainers.image.description=ublue-os ${{ matrix.image_name }}${{ matrix.hwe_flavor == 'asus' && ' for ASUS devices' || '' }}${{ matrix.hwe_flavor == 'surface' && ' for Surface laptops' || ''}}${{ matrix.image_target == 'nvidia' && ' with Nvidia drivers' || ''}}
209194
org.opencontainers.image.version=${{ env.SOURCE_IMAGE_VERSION }}
210195
io.artifacthub.package.readme-url=https://raw.githubusercontent.com/${{ github.repository }}/main/README.md
211196
io.artifacthub.package.logo-url=https://avatars.githubusercontent.com/u/1728152?s=200&v=4
@@ -234,13 +219,12 @@ jobs:
234219
IMAGE_NAME=${{ matrix.image_name }}
235220
SOURCE_IMAGE=${{ env.SOURCE_IMAGE }}
236221
FEDORA_MAJOR_VERSION=${{ matrix.fedora_version }}
237-
NVIDIA_MAJOR_VERSION=${{ matrix.nvidia_version }}
238222
HWE_FLAVOR=${{ matrix.hwe_flavor }}
239223
RPMFUSION_MIRROR=${{ vars.RPMFUSION_MIRROR }}
240224
labels: ${{ steps.meta.outputs.labels }}
241225
oci: false
242226
extra-args: |
243-
--target=${{ matrix.nvidia_version == '0' && 'main' || 'nvidia' }}
227+
--target=${{ matrix.image_target }}
244228
245229
# Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR.
246230
# https://github.com/macbre/push-to-ghcr/issues/12

Containerfile

+1-2
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,9 @@ ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}"
3131
ARG HWE_FLAVOR="{HWE_FLAVOR:-main}"
3232
ARG IMAGE_NAME="${IMAGE_NAME:-silverblue}"
3333
ARG IMAGE_VENDOR="${IMAGE_VENDOR:-ublue-os}"
34-
ARG NVIDIA_MAJOR_VERSION="${NVIDIA_MAJOR_VERSION:-550}"
3534
ARG RPMFUSION_MIRROR=""
3635

37-
COPY --from=ghcr.io/ublue-os/akmods-nvidia:${HWE_FLAVOR}-${FEDORA_MAJOR_VERSION}-${NVIDIA_MAJOR_VERSION} /rpms /tmp/akmods-rpms
36+
COPY --from=ghcr.io/ublue-os/akmods-nvidia:${HWE_FLAVOR}-${FEDORA_MAJOR_VERSION} /rpms /tmp/akmods-rpms
3837

3938
COPY *.sh /tmp/
4039

nvidia-install.sh

+23-10
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,15 @@ if [ -n "${RPMFUSION_MIRROR}" ]; then
2525
fi
2626

2727

28-
# nvidia install steps
28+
## nvidia install steps
2929
rpm-ostree install /tmp/akmods-rpms/ublue-os/ublue-os-nvidia-addons-*.rpm
3030

31-
source /tmp/akmods-rpms/kmods/nvidia-vars.${NVIDIA_MAJOR_VERSION}
31+
# enables nvidia repos provided by ublue-os-nvidia-addons
32+
sed -i '0,/enabled=0/{s/enabled=0/enabled=1/}' /etc/yum.repos.d/eyecantcu-supergfxctl.repo
33+
sed -i '0,/enabled=0/{s/enabled=0/enabled=1/}' /etc/yum.repos.d/negativo17-fedora-nvidia.repo
34+
sed -i '0,/enabled=0/{s/enabled=0/enabled=1/}' /etc/yum.repos.d/nvidia-container-toolkit.repo
35+
36+
source /tmp/akmods-rpms/kmods/nvidia-vars
3237

3338
if [[ "${IMAGE_NAME}" == "kinoite" ]]; then
3439
VARIANT_PKGS="supergfxctl-plasmoid supergfxctl"
@@ -39,14 +44,22 @@ else
3944
fi
4045

4146
rpm-ostree install \
42-
xorg-x11-drv-${NVIDIA_PACKAGE_NAME}-{,cuda-,devel-,kmodsrc-,power-}${NVIDIA_FULL_VERSION} \
43-
xorg-x11-drv-${NVIDIA_PACKAGE_NAME}-libs.i686 \
44-
nvidia-container-toolkit nvidia-vaapi-driver ${VARIANT_PKGS} \
45-
/tmp/akmods-rpms/kmods/kmod-${NVIDIA_PACKAGE_NAME}-${KERNEL_VERSION}-${NVIDIA_AKMOD_VERSION}.fc${RELEASE}.rpm
46-
47-
48-
# nvidia post-install steps
49-
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/{eyecantcu-supergfxctl,nvidia-container-toolkit}.repo
47+
nvidia-driver \
48+
nvidia-driver-cuda \
49+
nvidia-driver-cuda-libs.i686 \
50+
nvidia-driver-libs.i686 \
51+
nvidia-driver-NVML.i686 \
52+
nvidia-driver-NvFBCOpenGL \
53+
nvidia-modprobe \
54+
nvidia-persistenced \
55+
nvidia-settings \
56+
nvidia-container-toolkit ${VARIANT_PKGS} \
57+
/tmp/akmods-rpms/kmods/kmod-nvidia-${KERNEL_VERSION}-${NVIDIA_AKMOD_VERSION}.fc${RELEASE}.rpm
58+
59+
60+
## nvidia post-install steps
61+
# disables nvidia repos provided by ublue-os-nvidia-addons
62+
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/{eyecantcu-supergfxctl,negativo17-fedora-nvidia,nvidia-container-toolkit}.repo
5063

5164
systemctl enable ublue-nvctk-cdi.service
5265
semodule --verbose --install /usr/share/selinux/packages/nvidia-container.pp

0 commit comments

Comments
 (0)