# SPDX-License-Identifier: NVIDIA DEEP LEARNING CONTAINER LICENSE

#     Copyright (c) 2026 SUSE LLC

# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon.

# The content of THIS FILE IS AUTOGENERATED and should not be manually modified.
# It is maintained by the BCI team and generated by
# https://github.com/SUSE/BCI-dockerfile-generator

# Please submit bugfixes or comments via https://bugs.opensuse.org/
# You can contact the BCI team via https://github.com/SUSE/bci/discussions

#!UseOBSRepositories
#!ExclusiveArch: aarch64
#!BuildTag: third-party/nvidia/driver:595.45.04-64kb-sles%OS_VERSION_ID_SP%-%RELEASE%
#!BuildTag: third-party/nvidia/driver:595.45.04-64kb-sles%OS_VERSION_ID_SP%
#!BcntSyncTag: nvidia-driver-image
#!BuildName: nvidia-driver-595.45.04-64kb
#!BuildVersion: 16.0.595.45.04
FROM registry.suse.com/bci/bci-micro:16.0 AS target
FROM registry.suse.com/bci/bci-base:16.0 AS nvidia-driver-builder
COPY --from=target / /target
RUN set -euo pipefail; zypper -n install --no-recommends dwarves elfutils gcc libelf-devel pesign-obs-integration zstd dracut gcc-c++ make mokutil pciutils perl-Bootloader python3 systemd xz gcc13 suse-kernel-rpm-scriptlets libOpenCL1 libtirpc3
RUN set -euo pipefail; \
    export PERMCTL_ALLOW_INSECURE_MODE_IF_NO_PROC=1; \
    zypper -n --installroot /target --gpg-auto-import-keys install --no-recommends awk coreutils findutils grep jq kmod rpm sed util-linux util-linux-systemd libtirpc3
RUN mkdir -p /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/dkms-3.3.0-1.noarch.rpm dkms-3.3.0-1.x86_64.rpm sha256:ad6971fc98ffb9f9e0c9100f0664121caec448e1fb02cce08277bd0ef9345fb4
COPY dkms-3.3.0-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/dkms-3.3.0-1.noarch.rpm dkms-3.3.0-1.aarch64.rpm sha256:ad6971fc98ffb9f9e0c9100f0664121caec448e1fb02cce08277bd0ef9345fb4
COPY dkms-3.3.0-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/libnvidia-cfg-595.45.04-1.x86_64.rpm sha256:fc1884f8812a4a35f333188ff331d5756b5ec47862a770c3746b4c11cb4c485e
COPY libnvidia-cfg-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/libnvidia-cfg-595.45.04-1.aarch64.rpm sha256:5dfd5aced4e02aea14428f9a5fbfd0910808c7012416221a0fda8a2e49b9e0e0
COPY libnvidia-cfg-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/libnvidia-gpucomp-595.45.04-1.x86_64.rpm sha256:d5fa682ba9e026cf80763c39a71651469ca3745bc40ff531e2c540459b91d4f0
COPY libnvidia-gpucomp-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/libnvidia-gpucomp-595.45.04-1.aarch64.rpm sha256:a30d9d1febea7d14fd6e312259e10152eda2fdd6fc7c8aa136c1ad0940568fa3
COPY libnvidia-gpucomp-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/libnvidia-ml-595.45.04-1.x86_64.rpm sha256:8295fbfedbcae52295844ebb0d34ccc440dc68b33048e0a71b54aaac0d02b9c1
COPY libnvidia-ml-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/libnvidia-ml-595.45.04-1.aarch64.rpm sha256:ad6577cd48d97e76bdfa9e487f585cb246d3165e4f7bfb6c7e6cd10c040b88a4
COPY libnvidia-ml-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/nvidia-common-G07-595.45.04-1.x86_64.rpm sha256:dbd63d0bb21a374874e44c238092189d9012f3820df39df487cd7deb618e8e6b
COPY nvidia-common-G07-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/nvidia-common-G07-595.45.04-1.aarch64.rpm sha256:5a9dd6d5dd5d85781c607ab2e4bbc7f004db69dbfced29ceac7875517c93925f
COPY nvidia-common-G07-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/nvidia-compute-G07-595.45.04-1.x86_64.rpm sha256:4948fac2c80cecde615b2dc3e8b2fdc76dd90b8a37088b79ca2d897444fbf088
COPY nvidia-compute-G07-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/nvidia-compute-G07-595.45.04-1.aarch64.rpm sha256:97f77f5f79fccd4edb3bce27df4e9dee6728f21f1e419f70f24b5d09f70d31ab
COPY nvidia-compute-G07-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/nvidia-compute-utils-G07-595.45.04-1.x86_64.rpm sha256:4a117d782bfbec49fc742734241b1fccac8a5510443d6e73b0ab1cd71f6e64d4
COPY nvidia-compute-utils-G07-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/nvidia-compute-utils-G07-595.45.04-1.aarch64.rpm sha256:3bf87625bcd55d902355934e080cefdc3074c2ce374a9d9a5a938005c029343f
COPY nvidia-compute-utils-G07-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/nvidia-driver-G07-595.45.04-1.x86_64.rpm sha256:c79c15aecdf2942f9940e067a42f338b1639443ffdbd2ed3e43ed11189eb1100
COPY nvidia-driver-G07-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/nvidia-driver-G07-595.45.04-1.aarch64.rpm sha256:ae5350f2d32cf2a058303b09e9b130289d399b0288fdca3a86d8d80b66079912
COPY nvidia-driver-G07-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/nvidia-driver-assistant-0.43.58.01-1.noarch.rpm nvidia-driver-assistant-0.43.58.01-1.x86_64.rpm sha256:c6c7833e0356d6d6223d8c050be02a0858e96918d5bfeed33ceff5f10e0fab5c
COPY nvidia-driver-assistant-0.43.58.01-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/nvidia-driver-assistant-0.43.58.01-1.noarch.rpm nvidia-driver-assistant-0.43.58.01-1.aarch64.rpm sha256:c6c7833e0356d6d6223d8c050be02a0858e96918d5bfeed33ceff5f10e0fab5c
COPY nvidia-driver-assistant-0.43.58.01-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/nvidia-modprobe-595.45.04-1.x86_64.rpm sha256:275f6097380a10c7d2a9892838827c1dd5c412518c520dc334fc9740e833e00a
COPY nvidia-modprobe-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/nvidia-modprobe-595.45.04-1.aarch64.rpm sha256:14ba3e26e104ddacb634df32f3b3c65d874dc2b84577f6f50027a455a60dee1d
COPY nvidia-modprobe-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/nvidia-open-driver-G07-595.45.04-1.noarch.rpm nvidia-open-driver-G07-595.45.04-1.x86_64.rpm sha256:eaa0dc060bc0df3c428340f303e12b2f5e346405d73453855569c1835ef0d5bc
COPY nvidia-open-driver-G07-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/nvidia-open-driver-G07-595.45.04-1.noarch.rpm nvidia-open-driver-G07-595.45.04-1.aarch64.rpm sha256:451072f46d6f659375c0904f8029d334d59125a71611c213aaa20b6eeec7b9cd
COPY nvidia-open-driver-G07-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/x86_64/nvidia-persistenced-595.45.04-1.x86_64.rpm sha256:3fb4685d0b80e7dce02e4a6a2102ad9416eb4fe3bc18b7f57ba26f4a78a2ab01
COPY nvidia-persistenced-595.45.04-1.x86_64.rpm /tmp/
#!RemoteAssetUrl: https://developer.download.nvidia.com/compute/cuda/repos/suse16/sbsa/nvidia-persistenced-595.45.04-1.aarch64.rpm sha256:8f60cb5cce5efdce3f620c395dac3ae99f938bf4f9568bb915374edd75282a32
COPY nvidia-persistenced-595.45.04-1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLFO:1.2/standard/aarch64/patchinfo.ga/kernel-64kb-6.12.0-160000.5.1.aarch64.rpm
COPY kernel-64kb-6.12.0-160000.5.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLFO:1.2/standard/aarch64/patchinfo.ga/kernel-64kb-devel-6.12.0-160000.5.1.aarch64.rpm
COPY kernel-64kb-devel-6.12.0-160000.5.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLFO:1.2/standard/aarch64/patchinfo.ga/kernel-default-devel-6.12.0-160000.5.1.aarch64.rpm
COPY kernel-default-devel-6.12.0-160000.5.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLFO:1.2/standard/aarch64/patchinfo.ga/kernel-syms-6.12.0-160000.5.1.aarch64.rpm
COPY kernel-syms-6.12.0-160000.5.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLFO:1.2/standard/aarch64/patchinfo.ga/kernel-devel-6.12.0-160000.5.1.noarch.rpm kernel-devel-6.12.0-160000.5.1.aarch64.rpm
COPY kernel-devel-6.12.0-160000.5.1.aarch64.rpm /tmp/
#!RemoteAssetUrl: https://api.opensuse.org/public/build/SUSE:SLFO:1.2/standard/aarch64/patchinfo.ga/kernel-macros-6.12.0-160000.5.1.noarch.rpm kernel-macros-6.12.0-160000.5.1.aarch64.rpm
COPY kernel-macros-6.12.0-160000.5.1.aarch64.rpm /tmp/

COPY cuda-sles15-x86_64.repo /etc/zypp/repos.d/cuda-sles15-x86_64.repo
COPY cuda-sles15-x86_64.gpg.key /tmp/cuda-sles15-x86_64.gpg.key
RUN rpm --import /tmp/cuda-sles15-x86_64.gpg.key
RUN rpm --root /target --import /tmp/cuda-sles15-x86_64.gpg.key
COPY cuda-sles15-sbsa.repo /etc/zypp/repos.d/cuda-sles15-sbsa.repo
COPY cuda-sles15-sbsa.gpg.key /tmp/cuda-sles15-sbsa.gpg.key
RUN rpm --import /tmp/cuda-sles15-sbsa.gpg.key
RUN rpm --root /target --import /tmp/cuda-sles15-sbsa.gpg.key
FROM nvidia-driver-builder AS open-driver-builder
RUN set -euo pipefail; if [ "$(uname -m)" = "aarch64" ]; then \
        zypper -n --gpg-auto-import-keys install \
            --capability \
            --no-recommends \
            --auto-agree-with-licenses \
            /tmp/dkms-3.3.0-1.aarch64.rpm \
            /tmp/libnvidia-cfg-595.45.04-1.aarch64.rpm \
            /tmp/libnvidia-gpucomp-595.45.04-1.aarch64.rpm \
            /tmp/libnvidia-ml-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-common-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-compute-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-compute-utils-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-driver-assistant-0.43.58.01-1.aarch64.rpm \
            /tmp/nvidia-modprobe-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-open-driver-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-persistenced-595.45.04-1.aarch64.rpm \
            /tmp/kernel-64kb-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-64kb-devel-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-default-devel-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-syms-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-devel-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-macros-6.12.0-160000.5.1.aarch64.rpm; \
    fi

RUN set -euo pipefail; if rpm -q dkms >/dev/null 2>&1; then \
        printf 'compress="zstd"\n' > /etc/dkms/framework.conf.d/module-compress.conf; \
        dkms autoinstall -k $(basename /lib/modules/*-64kb); \
    fi
RUN set -euo pipefail; cp -rfx /lib/modules/*/updates /opt/open
RUN set -euo pipefail; mkdir /opt/lib && cp -rfx /lib/firmware /opt/lib/firmware

FROM nvidia-driver-builder AS closed-driver-builder
RUN set -euo pipefail; if [ "$(uname -m)" = "aarch64" ]; then \
        zypper -n --gpg-auto-import-keys install \
            --capability \
            --no-recommends \
            --auto-agree-with-licenses \
            /tmp/dkms-3.3.0-1.aarch64.rpm \
            /tmp/libnvidia-cfg-595.45.04-1.aarch64.rpm \
            /tmp/libnvidia-gpucomp-595.45.04-1.aarch64.rpm \
            /tmp/libnvidia-ml-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-common-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-compute-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-compute-utils-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-driver-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-driver-assistant-0.43.58.01-1.aarch64.rpm \
            /tmp/nvidia-modprobe-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-persistenced-595.45.04-1.aarch64.rpm \
            /tmp/kernel-64kb-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-64kb-devel-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-default-devel-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-syms-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-devel-6.12.0-160000.5.1.aarch64.rpm \
            /tmp/kernel-macros-6.12.0-160000.5.1.aarch64.rpm; \
    fi

RUN set -euo pipefail; if rpm -q dkms >/dev/null 2>&1; then \
        printf 'compress="zstd"\n' > /etc/dkms/framework.conf.d/module-compress.conf; \
        dkms autoinstall -k $(basename /lib/modules/*-64kb); \
    fi
RUN set -euo pipefail; cp -rfx /lib/modules/*/updates /opt/proprietary

FROM nvidia-driver-builder AS builder

COPY --from=open-driver-builder /usr/share/nvidia-driver-assistant/supported-gpus/supported-gpus.json /target/usr/share/nvidia-driver-assistant/supported-gpus/supported-gpus.json
COPY --from=open-driver-builder /opt/lib /target/opt/lib
COPY --from=open-driver-builder /opt/open /target/opt/open
COPY --from=closed-driver-builder /opt/proprietary /target/opt/proprietary
RUN set -euo pipefail; if [ "$(uname -m)" = "aarch64" ]; then \
        rpm --root /target -Uvh --nodeps \
            /tmp/dkms-3.3.0-1.aarch64.rpm \
            /tmp/libnvidia-cfg-595.45.04-1.aarch64.rpm \
            /tmp/libnvidia-gpucomp-595.45.04-1.aarch64.rpm \
            /tmp/libnvidia-ml-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-common-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-compute-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-compute-utils-G07-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-driver-assistant-0.43.58.01-1.aarch64.rpm \
            /tmp/nvidia-modprobe-595.45.04-1.aarch64.rpm \
            /tmp/nvidia-persistenced-595.45.04-1.aarch64.rpm; \
    fi

RUN set -euo pipefail; if rpm --root /target -q compat-usrmerge-tools; then rpm --root /target -e compat-usrmerge-tools; fi

# cleanup logs and temporary files
RUN set -euo pipefail; zypper -n --installroot /target clean -a; \
    t=$(mktemp -d); mv /target/usr/lib/sysimage/rpm/Packages.db $t; rpmdb --rebuilddb --dbpath=$t; \
    rm /target/usr/lib/sysimage/rpm/*.db && mv $t/Packages.db /target/usr/lib/sysimage/rpm/; \
    rm -rf {/target,}/var/log/{alternatives.log,lastlog,tallylog,zypper.log,zypp/history,YaST2}; \
    rm -rf {/target,}/run/*; \
    rm -f {/target,}/etc/{shadow-,group-,passwd-,.pwd.lock}; \
    rm -f {/target,}/usr/lib/sysimage/rpm/.rpm.lock; \
    rm -f {/target,}/var/lib/zypp/AnonymousUniqueId; \
    rm -f {/target,}/var/lib/zypp/AutoInstalled; \
    rm -f {/target,}/var/cache/ldconfig/aux-cache

# set the day of last password change to empty
RUN set -euo pipefail; sed -i 's/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1\2/' /target/etc/shadow
FROM registry.suse.com/bci/bci-micro:16.0
COPY --from=builder /target /
RUN set -euo pipefail; rm -vf /usr/lib/sysimage/rpm/Index.db
# Define labels according to https://en.opensuse.org/Building_derived_containers
# labelprefix=com.suse.third-party.nvidia-driver
LABEL org.opencontainers.image.authors="https://github.com/SUSE/bci/discussions"
LABEL org.opencontainers.image.title="SUSE Linux BCI NVIDIA Driver"
LABEL org.opencontainers.image.description="NVIDIA Driver container based on the SUSE Linux Base Container Image."
LABEL org.opencontainers.image.version="595.45.04"
LABEL org.opencontainers.image.url="https://www.suse.com/products/base-container-images/"
LABEL org.opencontainers.image.created="%BUILDTIME%"
LABEL org.opencontainers.image.vendor="SUSE LLC"
LABEL org.opencontainers.image.source="%SOURCEURL%"
LABEL org.opencontainers.image.ref.name="595.45.04-64kb-sles%OS_VERSION_ID_SP%"
LABEL org.opensuse.reference="registry.suse.com/third-party/nvidia/driver:595.45.04-64kb-sles%OS_VERSION_ID_SP%-%RELEASE%"
LABEL org.openbuildservice.disturl="%DISTURL%"
LABEL com.suse.supportlevel="techpreview"
LABEL com.suse.supportlevel.until=""
LABEL com.suse.eula="sle-beta"
LABEL com.suse.lifecycle-url="https://www.suse.com/lifecycle#suse-linux-enterprise-server-16"
LABEL com.suse.release-stage="beta"
# endlabelprefix
LABEL org.opencontainers.image.base.name="%BASE_REFNAME%"
LABEL org.opencontainers.image.base.digest="%BASE_DIGEST%"
LABEL io.artifacthub.package.readme-url="%SOURCEURL_WITH(README.driver-595.45.04-64kb.md)%"
ENV DISABLE_VGPU_VERSION_CHECK="true"
ENV DRIVER_BRANCH="595"
ENV DRIVER_TYPE="passthrough"
ENV DRIVER_VERSION="595.45.04"
ENV KERNEL_VERSION="latest"
ENV NVIDIA_VISIBLE_DEVICES="void"
ENV VGPU_LICENSE_SERVER_TYPE="NLS"
ENTRYPOINT ["nvidia-driver", "load"]

COPY extract-vmlinux /usr/local/bin/
RUN set -euo pipefail; chmod +x /usr/local/bin/extract-vmlinux

COPY nvidia-driver /usr/local/bin/
RUN set -euo pipefail; chmod +x /usr/local/bin/nvidia-driver

COPY nvidia-driver-selector.sh /usr/local/bin/
RUN set -euo pipefail; chmod +x /usr/local/bin/nvidia-driver-selector.sh

RUN set -euo pipefail; mkdir /licenses
COPY NGC-DL-CONTAINER-LICENSE /licenses

RUN set -euo pipefail; mkdir /drivers
COPY vGPU-README.md /drivers/README.md

WORKDIR /drivers

ENTRYPOINT ["nvidia-driver", "load"]
