From 79b182e0420f1e1b57a2906396064e3ed3940d52 Mon Sep 17 00:00:00 2001 From: Anders Rytter Hansen Date: Tue, 24 Sep 2024 22:08:31 +0200 Subject: [PATCH] migrate to a single docker file. --- .github/workflows/base.yml | 133 ---------------------------- .github/workflows/kernel-akmods.yml | 132 --------------------------- .github/workflows/os.yml | 2 +- Dockerfile | 118 +++++++++++++++++++++++- base.Dockerfile | 39 -------- kernel-akmods.Dockerfile | 86 ------------------ 6 files changed, 118 insertions(+), 392 deletions(-) delete mode 100644 .github/workflows/base.yml delete mode 100644 .github/workflows/kernel-akmods.yml delete mode 100644 base.Dockerfile delete mode 100644 kernel-akmods.Dockerfile diff --git a/.github/workflows/base.yml b/.github/workflows/base.yml deleted file mode 100644 index a8fc1f5..0000000 --- a/.github/workflows/base.yml +++ /dev/null @@ -1,133 +0,0 @@ -name: base - -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -on: - schedule: - - cron: '0 5 * * *' # 5 am every day - push: - paths: - - 'base.Dockerfile' - - 'repo/**' - -env: - # Use docker.io for Docker Hub if empty - REGISTRY: ghcr.io - # github.repository as / - IMAGE_NAME: ${{ github.repository_owner }}/my-ostree-os-base2 - IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} - - -jobs: - build: - - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - # This is used to complete the identity challenge - # with sigstore/fulcio when running outside of PRs. - id-token: write - - steps: - - name: Maximize build space - uses: AdityaGarg8/remove-unwanted-software@v1 - with: - remove-dotnet: 'true' - remove-android: 'true' - remove-haskell: 'true' - - - name: Get current date - id: date - run: echo "::set-output name=date::$(date +'%Y%m%d')" - - - name: Test with environment variables - run: echo $DATE - env: - DATE: ${{ steps.date.outputs.date }} - - - name: Checkout repository - uses: actions/checkout@v3 - - # Install the cosign tool except on PR - # https://github.com/sigstore/cosign-installer - - name: Install cosign - if: github.event_name != 'pull_request' - uses: sigstore/cosign-installer@6e04d228eb30da1757ee4e1dd75a0ec73a653e06 #v3.1.1 - with: - cosign-release: 'v2.1.1' - - # Login against a Docker registry except on PR - # https://github.com/docker/login-action - - name: Log into registry ${{ env.REGISTRY }} - if: github.event_name != 'pull_request' - uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Extract metadata (tags, labels) for Docker - # https://github.com/docker/metadata-action - - name: Extract Docker metadata - id: meta - uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - - # Build image using Buildah action - - name: Build Image - id: build_image - uses: redhat-actions/buildah-build@v2 - with: - containerfiles: | - ./base.Dockerfile - image: ${{ env.IMAGE_NAME }} - tags: ${{ steps.meta.outputs.tags }} ${{ steps.meta.outputs.tags }}-39 ${{ steps.meta.outputs.tags }}-39.${{ steps.date.outputs.date }} - oci: false - - # Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR. - # https://github.com/macbre/push-to-ghcr/issues/12 - - name: Lowercase Registry - id: registry_case - uses: ASzc/change-string-case-action@v5 - with: - string: ${{ env.IMAGE_REGISTRY }} - - # Push the image to GHCR (Image Registry) - - name: Push To GHCR - uses: redhat-actions/push-to-registry@v2 - id: push - if: github.event_name != 'pull_request' - env: - REGISTRY_USER: ${{ github.actor }} - REGISTRY_PASSWORD: ${{ github.token }} - with: - image: ${{ steps.build_image.outputs.image }} - tags: ${{ steps.build_image.outputs.tags }} - registry: ${{ steps.registry_case.outputs.lowercase }} - username: ${{ env.REGISTRY_USER }} - password: ${{ env.REGISTRY_PASSWORD }} - extra-args: | - --disable-content-trust - - - - # Sign the resulting Docker image digest except on PRs. - # This will only write to the public Rekor transparency log when the Docker - # repository is public to avoid leaking data. If you would like to publish - # transparency data even for private images, pass --force to cosign below. - # https://github.com/sigstore/cosign - - name: Sign the published Docker image - if: ${{ github.event_name != 'pull_request' }} - env: - # https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable - TAGS: ${{ steps.meta.outputs.tags }} - DIGEST: ${{ steps.push.outputs.digest }} - # This step uses the identity token to provision an ephemeral certificate - # against the sigstore community Fulcio instance. - run: echo "${TAGS}" | xargs -I {} cosign sign --yes {}@${DIGEST} diff --git a/.github/workflows/kernel-akmods.yml b/.github/workflows/kernel-akmods.yml deleted file mode 100644 index c8ca941..0000000 --- a/.github/workflows/kernel-akmods.yml +++ /dev/null @@ -1,132 +0,0 @@ -name: kernel-akmods - -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. - -on: - schedule: - - cron: '0 6 */3 * *' # 6 am every 3rd day - push: - paths: - - 'kernel-akmods.Dockerfile' - -env: - # Use docker.io for Docker Hub if empty - REGISTRY: ghcr.io - # github.repository as / - IMAGE_NAME: ${{ github.repository_owner }}/my-ostree-os-kernel-akmods - IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} - - -jobs: - build: - - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - # This is used to complete the identity challenge - # with sigstore/fulcio when running outside of PRs. - id-token: write - - steps: - - name: Maximize build space - uses: AdityaGarg8/remove-unwanted-software@v1 - with: - remove-dotnet: 'true' - remove-android: 'true' - remove-haskell: 'true' - - - name: Get current date - id: date - run: echo "::set-output name=date::$(date +'%Y%m%d')" - - - name: Test with environment variables - run: echo $DATE - env: - DATE: ${{ steps.date.outputs.date }} - - - name: Checkout repository - uses: actions/checkout@v3 - - # Install the cosign tool except on PR - # https://github.com/sigstore/cosign-installer - - name: Install cosign - if: github.event_name != 'pull_request' - uses: sigstore/cosign-installer@6e04d228eb30da1757ee4e1dd75a0ec73a653e06 #v3.1.1 - with: - cosign-release: 'v2.1.1' - - # Login against a Docker registry except on PR - # https://github.com/docker/login-action - - name: Log into registry ${{ env.REGISTRY }} - if: github.event_name != 'pull_request' - uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Extract metadata (tags, labels) for Docker - # https://github.com/docker/metadata-action - - name: Extract Docker metadata - id: meta - uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - - # Build image using Buildah action - - name: Build Image - id: build_image - uses: redhat-actions/buildah-build@v2 - with: - containerfiles: | - ./kernel-akmods.Dockerfile - image: ${{ env.IMAGE_NAME }} - tags: ${{ steps.meta.outputs.tags }} ${{ steps.meta.outputs.tags }}-39 ${{ steps.meta.outputs.tags }}-39.${{ steps.date.outputs.date }} - oci: false - - # Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR. - # https://github.com/macbre/push-to-ghcr/issues/12 - - name: Lowercase Registry - id: registry_case - uses: ASzc/change-string-case-action@v5 - with: - string: ${{ env.IMAGE_REGISTRY }} - - # Push the image to GHCR (Image Registry) - - name: Push To GHCR - uses: redhat-actions/push-to-registry@v2 - id: push - if: github.event_name != 'pull_request' - env: - REGISTRY_USER: ${{ github.actor }} - REGISTRY_PASSWORD: ${{ github.token }} - with: - image: ${{ steps.build_image.outputs.image }} - tags: ${{ steps.build_image.outputs.tags }} - registry: ${{ steps.registry_case.outputs.lowercase }} - username: ${{ env.REGISTRY_USER }} - password: ${{ env.REGISTRY_PASSWORD }} - extra-args: | - --disable-content-trust - - - - # Sign the resulting Docker image digest except on PRs. - # This will only write to the public Rekor transparency log when the Docker - # repository is public to avoid leaking data. If you would like to publish - # transparency data even for private images, pass --force to cosign below. - # https://github.com/sigstore/cosign - - name: Sign the published Docker image - if: ${{ github.event_name != 'pull_request' }} - env: - # https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable - TAGS: ${{ steps.meta.outputs.tags }} - DIGEST: ${{ steps.push.outputs.digest }} - # This step uses the identity token to provision an ephemeral certificate - # against the sigstore community Fulcio instance. - run: echo "${TAGS}" | xargs -I {} cosign sign --yes {}@${DIGEST} diff --git a/.github/workflows/os.yml b/.github/workflows/os.yml index 2b1a789..581ead3 100644 --- a/.github/workflows/os.yml +++ b/.github/workflows/os.yml @@ -7,7 +7,7 @@ name: os on: schedule: - - cron: '0 7 */3 * *' # 7 am every 3rd day + - cron: '0 5 */3 * *' # 5 am every 3rd day push: paths: - 'Dockerfile' diff --git a/Dockerfile b/Dockerfile index b8789dc..efbf49e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,8 +3,124 @@ ARG SOURCE_IMAGE="${SOURCE_IMAGE:-kinoite}" ARG BASE_IMAGE="quay.io/fedora-ostree-desktops/${SOURCE_IMAGE}" ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}" +FROM quay.io/fedora-ostree-desktops/kinoite:39 AS base -FROM ghcr.io/andersrh/my-ostree-os-kernel-akmods:main-39 AS builder +ARG CACHEBUST=2 + +ARG IMAGE_NAME="${IMAGE_NAME}" +ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}" + + +COPY repo/*.repo /etc/yum.repos.d/ + +# install RPM-fusion +RUN rpm-ostree install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm + +# 32-bit dependencies for the Nvidia driver. +RUN rpm-ostree install glibc.i686 + +# pipewire clang +RUN rpm-ostree override replace --experimental --from repo=fedora-clang pipewire pipewire-libs pipewire-pulseaudio pipewire-alsa pipewire-utils pipewire-gstreamer pipewire-jack-audio-connection-kit pipewire-jack-audio-connection-kit-libs + +# install nonfree codecs +RUN rpm-ostree override remove libavcodec-free libavfilter-free libavformat-free libavutil-free libpostproc-free libswresample-free libswscale-free libavdevice-free ffmpeg-free --install libavcodec-freeworld + +# Install HEIC support for Gwenview and Dolphin (and potentially other applications) +RUN rpm-ostree install libheif-freeworld + +# Mesa clang +RUN rpm-ostree override replace --experimental --from repo=copr:copr.fedorainfracloud.org:andersrh:my-ostree-os mesa-filesystem mesa-libglapi mesa-dri-drivers mesa-libgbm mesa-libEGL mesa-libGL mesa-vulkan-drivers mesa-libxatracker mesa-vdpau-drivers mesa-libOSMesa mesa-libOpenCL mesa-va-drivers libdrm + +# 32-bit dependencies for the Nvidia driver. +RUN rpm-ostree override replace --experimental --from repo=copr:copr.fedorainfracloud.org:andersrh:my-ostree-os:ml mesa-dri-drivers.i686 +RUN rpm-ostree install mesa-filesystem.i686 mesa-libEGL.i686 mesa-libGL.i686 mesa-libgbm.i686 mesa-libglapi.i686 mesa-vulkan-drivers.i686 libdrm.i686 + +RUN rpm-ostree install ffmpeg ffmpeg-libs libavdevice intel-media-driver pipewire-codec-aptx libva-intel-driver libva-utils + +FROM fedora:39 AS akmods-builder + +RUN dnf -y update && dnf -y install wget + +RUN dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm + +# Update cachebust in case a rebuild is required without usage of cache. +ARG CACHEBUST=11 + +RUN cd /etc/yum.repos.d/ && \ +wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-lto/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-lto-fedora-$(rpm -E %fedora).repo && \ +wget https://copr.fedorainfracloud.org/coprs/andersrh/kernel-cachyos/repo/fedora-$(rpm -E %fedora)/andersrh-kernel-cachyos-fedora-$(rpm -E %fedora).repo && \ +wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-addons/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-addons-fedora-$(rpm -E %fedora).repo && \ +cd /tmp + +RUN dnf -y install kernel-cachyos-lto kernel-cachyos-lto-headers kernel-cachyos-lto-devel kernel-cachyos-lto-modules kernel-cachyos-lto-core kernel-cachyos-lto-devel-matched +RUN dnf -y install akmod-nvidia akmod-VirtualBox + +COPY akmods.sh /tmp/akmods.sh +RUN /tmp/akmods.sh + +FROM base AS kernel + +ARG IMAGE_NAME="${IMAGE_NAME}" +ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}" + +COPY --from=ghcr.io/ublue-os/akmods-nvidia:39-535 /rpms /tmp/akmods-rpms + +RUN rpm-ostree install \ + /tmp/akmods-rpms/ublue-os/ublue-os-nvidia-addons-*.rpm + +RUN mkdir /tmp/nvidia + +COPY install-nvidia.sh /tmp/install-nvidia.sh + +RUN cd /etc/yum.repos.d/ && wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-addons/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-addons-fedora-$(rpm -E %fedora).repo + +RUN cd /etc/yum.repos.d/ && \ +wget https://copr.fedorainfracloud.org/coprs/andersrh/kernel-cachyos/repo/fedora-$(rpm -E %fedora)/andersrh-kernel-cachyos-fedora-$(rpm -E %fedora).repo && \ +wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-lto/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-lto-fedora-$(rpm -E %fedora).repo && \ +cd /tmp + +# override and upgrade libbpf +RUN rpm-ostree override replace --experimental --from repo=copr:copr.fedorainfracloud.org:bieszczaders:kernel-cachyos-addons libbpf + +COPY --from=akmods-builder /var/cache/akmods/*/* /tmp/nvidia + +COPY install_cachyos_kernel.sh /tmp +# Enable cliwrap. +RUN rpm-ostree cliwrap install-to-root / && \ +# Replace the kernel, kernel-core and kernel-modules packages. +/tmp/install_cachyos_kernel.sh + +# install kernel headers +RUN rpm-ostree install kernel-cachyos-lto-headers + +# install akmods +RUN ls /tmp/nvidia && /tmp/install-nvidia.sh + +RUN rpm-ostree install \ + xorg-x11-drv-nvidia{,-cuda,-devel,-kmodsrc} \ + xorg-x11-drv-nvidia-libs.i686 \ + nvidia-container-toolkit supergfxctl supergfxctl-plasmoid + +RUN mv /etc/nvidia-container-runtime/config.toml{,.orig} +RUN cp /etc/nvidia-container-runtime/config{-rootless,}.toml + +RUN systemctl enable supergfxd.service + +RUN rpm-ostree uninstall xorg-x11-drv-nvidia-power + +RUN semodule --verbose --install /usr/share/selinux/packages/nvidia-container.pp +RUN ln -s /usr/bin/ld.bfd /etc/alternatives/ld +RUN ln -s /etc/alternatives/ld /usr/bin/ld + +# install Nvidia software +RUN rpm-ostree install nvidia-vaapi-driver nvidia-persistenced opencl-filesystem + +# Clear cache, /var and /tmp and commit ostree +RUN rm -rf /tmp/* /var/* && mkdir -p /var/tmp && chmod -R 1777 /var/tmp && \ +ostree container commit + + +FROM kernel AS os ARG CACHEBUST=5 ARG IMAGE_NAME="${IMAGE_NAME}" diff --git a/base.Dockerfile b/base.Dockerfile deleted file mode 100644 index b0416cd..0000000 --- a/base.Dockerfile +++ /dev/null @@ -1,39 +0,0 @@ -ARG IMAGE_NAME="${IMAGE_NAME:-kinoite}" -ARG SOURCE_IMAGE="${SOURCE_IMAGE:-kinoite}" -ARG BASE_IMAGE="quay.io/fedora-ostree-desktops/${SOURCE_IMAGE}" -ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}" - - -FROM quay.io/fedora-ostree-desktops/kinoite:39 AS builder - -ARG CACHEBUST=2 - -ARG IMAGE_NAME="${IMAGE_NAME}" -ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}" - - -COPY repo/*.repo /etc/yum.repos.d/ - -# install RPM-fusion -RUN rpm-ostree install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm - -# 32-bit dependencies for the Nvidia driver. -RUN rpm-ostree install glibc.i686 - -# pipewire clang -RUN rpm-ostree override replace --experimental --from repo=fedora-clang pipewire pipewire-libs pipewire-pulseaudio pipewire-alsa pipewire-utils pipewire-gstreamer pipewire-jack-audio-connection-kit pipewire-jack-audio-connection-kit-libs - -# install nonfree codecs -RUN rpm-ostree override remove libavcodec-free libavfilter-free libavformat-free libavutil-free libpostproc-free libswresample-free libswscale-free libavdevice-free ffmpeg-free --install libavcodec-freeworld - -# Install HEIC support for Gwenview and Dolphin (and potentially other applications) -RUN rpm-ostree install libheif-freeworld - -# Mesa clang -RUN rpm-ostree override replace --experimental --from repo=copr:copr.fedorainfracloud.org:andersrh:my-ostree-os mesa-filesystem mesa-libglapi mesa-dri-drivers mesa-libgbm mesa-libEGL mesa-libGL mesa-vulkan-drivers mesa-libxatracker mesa-vdpau-drivers mesa-libOSMesa mesa-libOpenCL mesa-va-drivers libdrm - -# 32-bit dependencies for the Nvidia driver. -RUN rpm-ostree override replace --experimental --from repo=copr:copr.fedorainfracloud.org:andersrh:my-ostree-os:ml mesa-dri-drivers.i686 -RUN rpm-ostree install mesa-filesystem.i686 mesa-libEGL.i686 mesa-libGL.i686 mesa-libgbm.i686 mesa-libglapi.i686 mesa-vulkan-drivers.i686 libdrm.i686 - -RUN rpm-ostree install ffmpeg ffmpeg-libs libavdevice intel-media-driver pipewire-codec-aptx libva-intel-driver libva-utils diff --git a/kernel-akmods.Dockerfile b/kernel-akmods.Dockerfile deleted file mode 100644 index acaa5e1..0000000 --- a/kernel-akmods.Dockerfile +++ /dev/null @@ -1,86 +0,0 @@ -ARG IMAGE_NAME="${IMAGE_NAME:-kinoite}" -ARG SOURCE_IMAGE="${SOURCE_IMAGE:-kinoite}" -ARG BASE_IMAGE="quay.io/fedora-ostree-desktops/${SOURCE_IMAGE}" -ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-39}" - -FROM fedora:39 AS akmods-builder - -RUN dnf -y update && dnf -y install wget - -RUN dnf -y install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm - -# Update cachebust in case a rebuild is required without usage of cache. -ARG CACHEBUST=11 - -RUN cd /etc/yum.repos.d/ && \ -wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-lto/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-lto-fedora-$(rpm -E %fedora).repo && \ -wget https://copr.fedorainfracloud.org/coprs/andersrh/kernel-cachyos/repo/fedora-$(rpm -E %fedora)/andersrh-kernel-cachyos-fedora-$(rpm -E %fedora).repo && \ -wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-addons/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-addons-fedora-$(rpm -E %fedora).repo && \ -cd /tmp - -RUN dnf -y install kernel-cachyos-lto kernel-cachyos-lto-headers kernel-cachyos-lto-devel kernel-cachyos-lto-modules kernel-cachyos-lto-core kernel-cachyos-lto-devel-matched -RUN dnf -y install akmod-nvidia akmod-VirtualBox - -COPY akmods.sh /tmp/akmods.sh -RUN /tmp/akmods.sh - -FROM ghcr.io/andersrh/my-ostree-os-base2:main-39 AS builder - -ARG IMAGE_NAME="${IMAGE_NAME}" -ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}" - -COPY --from=ghcr.io/ublue-os/akmods-nvidia:39-535 /rpms /tmp/akmods-rpms - -RUN rpm-ostree install \ - /tmp/akmods-rpms/ublue-os/ublue-os-nvidia-addons-*.rpm - -RUN mkdir /tmp/nvidia - -COPY install-nvidia.sh /tmp/install-nvidia.sh - -RUN cd /etc/yum.repos.d/ && wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-addons/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-addons-fedora-$(rpm -E %fedora).repo - -RUN cd /etc/yum.repos.d/ && \ -wget https://copr.fedorainfracloud.org/coprs/andersrh/kernel-cachyos/repo/fedora-$(rpm -E %fedora)/andersrh-kernel-cachyos-fedora-$(rpm -E %fedora).repo && \ -wget https://copr.fedorainfracloud.org/coprs/bieszczaders/kernel-cachyos-lto/repo/fedora-$(rpm -E %fedora)/bieszczaders-kernel-cachyos-lto-fedora-$(rpm -E %fedora).repo && \ -cd /tmp - -# override and upgrade libbpf -RUN rpm-ostree override replace --experimental --from repo=copr:copr.fedorainfracloud.org:bieszczaders:kernel-cachyos-addons libbpf - -COPY --from=akmods-builder /var/cache/akmods/*/* /tmp/nvidia - -COPY install_cachyos_kernel.sh /tmp -# Enable cliwrap. -RUN rpm-ostree cliwrap install-to-root / && \ -# Replace the kernel, kernel-core and kernel-modules packages. -/tmp/install_cachyos_kernel.sh - -# install kernel headers -RUN rpm-ostree install kernel-cachyos-lto-headers - -# install akmods -RUN ls /tmp/nvidia && /tmp/install-nvidia.sh - -RUN rpm-ostree install \ - xorg-x11-drv-nvidia{,-cuda,-devel,-kmodsrc} \ - xorg-x11-drv-nvidia-libs.i686 \ - nvidia-container-toolkit supergfxctl supergfxctl-plasmoid - -RUN mv /etc/nvidia-container-runtime/config.toml{,.orig} -RUN cp /etc/nvidia-container-runtime/config{-rootless,}.toml - -RUN systemctl enable supergfxd.service - -RUN rpm-ostree uninstall xorg-x11-drv-nvidia-power - -RUN semodule --verbose --install /usr/share/selinux/packages/nvidia-container.pp -RUN ln -s /usr/bin/ld.bfd /etc/alternatives/ld -RUN ln -s /etc/alternatives/ld /usr/bin/ld - -# install Nvidia software -RUN rpm-ostree install nvidia-vaapi-driver nvidia-persistenced opencl-filesystem - -# Clear cache, /var and /tmp and commit ostree -RUN rm -rf /tmp/* /var/* && mkdir -p /var/tmp && chmod -R 1777 /var/tmp && \ -ostree container commit