diff --git a/build.Containerfile b/build.Containerfile index 1c28c20..bd53d59 100644 --- a/build.Containerfile +++ b/build.Containerfile @@ -19,6 +19,8 @@ ADD https://nvidia.github.io/nvidia-docker/rhel9.0/nvidia-docker.repo \ /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/nvidia-container-runtime.repo ADD https://copr.fedorainfracloud.org/coprs/lukenukem/asus-linux/repo/fedora-${FEDORA_MAJOR_VERSION}/lukenukem-asus-linux-fedora-${FEDORA_MAJOR_VERSION}.repo \ /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/lukenukem-asus-linux.repo +ADD https://copr.fedorainfracloud.org/coprs/jhyub/supergfxctl-plasmoid/repo/fedora-${FEDORA_MAJOR_VERSION}/jhyub-supergfxctl-plasmoid-fedora-${FEDORA_MAJOR_VERSION}.repo \ + /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/jhyub-supergfxctl-plasmoid.repo ADD https://nvidia.github.io/nvidia-docker/rhel9.0/nvidia-docker.repo \ /etc/yum.repos.d/nvidia-container-runtime.repo diff --git a/install.Containerfile b/install.Containerfile index 3353c4d..1de6942 100644 --- a/install.Containerfile +++ b/install.Containerfile @@ -7,12 +7,14 @@ FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} ARG IMAGE_NAME="${IMAGE_NAME}" ARG AKMODS_CACHE="ghcr.io/ublue-os/akmods-nvidia" ARG AKMODS_VERSION="37" +ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}" ARG NVIDIA_MAJOR_VERSION="525" COPY --from=${AKMODS_CACHE}:${AKMODS_VERSION}-${NVIDIA_MAJOR_VERSION} / . COPY install.sh /tmp/install.sh COPY post-install.sh /tmp/post-install.sh +COPY packages.json /tmp/packages.json RUN /tmp/install.sh RUN /tmp/post-install.sh RUN rm -rf /tmp/* /var/* diff --git a/install.sh b/install.sh index 0a9c354..f74fde6 100755 --- a/install.sh +++ b/install.sh @@ -4,10 +4,23 @@ set -ouex pipefail sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/fedora-{cisco-openh264,modular,updates-modular}.repo +INCLUDED_PACKAGES=($(jq -r "[(.all.include | (.all, select(.\"$IMAGE_NAME\" != null).\"$IMAGE_NAME\")[]), \ + (select(.\"$FEDORA_MAJOR_VERSION\" != null).\"$FEDORA_MAJOR_VERSION\".include | (.all, select(.\"$IMAGE_NAME\" != null).\"$IMAGE_NAME\")[])] \ + | sort | unique[]" /tmp/packages.json)) +EXCLUDED_PACKAGES=($(jq -r "[(.all.exclude | (.all, select(.\"$IMAGE_NAME\" != null).\"$IMAGE_NAME\")[]), \ + (select(.\"$FEDORA_MAJOR_VERSION\" != null).\"$FEDORA_MAJOR_VERSION\".exclude | (.all, select(.\"$IMAGE_NAME\" != null).\"$IMAGE_NAME\")[])] \ + | sort | unique[]" /tmp/packages.json)) + +if [[ "${#EXCLUDED_PACKAGES[@]}" -gt 0 ]]; then + EXCLUDED_PACKAGES=($(rpm -qa --queryformat='%{NAME} ' ${EXCLUDED_PACKAGES[@]})) +fi + install -D /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/nvidia-container-runtime.repo \ /etc/yum.repos.d/nvidia-container-runtime.repo install -D /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/lukenukem-asus-linux.repo \ /etc/yum.repos.d/lukenukem-asus-linux.repo +install -D /tmp/ublue-os-nvidia-addons/rpmbuild/SOURCES/jhyub-supergfxctl-plasmoid.repo \ + /etc/yum.repos.d/jhyub-supergfxctl-plasmoid.repo source /var/cache/akmods/nvidia-vars @@ -16,3 +29,17 @@ rpm-ostree install \ nvidia-container-toolkit nvidia-vaapi-driver supergfxctl \ /var/cache/akmods/${NVIDIA_PACKAGE_NAME}/kmod-${NVIDIA_PACKAGE_NAME}-${KERNEL_VERSION}-${NVIDIA_AKMOD_VERSION}.fc${RELEASE}.rpm \ /tmp/ublue-os-nvidia-addons/rpmbuild/RPMS/noarch/ublue-os-nvidia-addons-*.rpm + +if [[ "${#INCLUDED_PACKAGES[@]}" -gt 0 && "${#EXCLUDED_PACKAGES[@]}" -eq 0 ]]; then + rpm-ostree install \ + ${INCLUDED_PACKAGES[@]} +elif [[ "${#INCLUDED_PACKAGES[@]}" -eq 0 && "${#EXCLUDED_PACKAGES[@]}" -gt 0 ]]; then + rpm-ostree override remove \ + ${EXCLUDED_PACKAGES[@]} +elif [[ "${#INCLUDED_PACKAGES[@]}" -gt 0 && "${#EXCLUDED_PACKAGES[@]}" -gt 0 ]]; then + rpm-ostree override remove \ + ${EXCLUDED_PACKAGES[@]} \ + $(printf -- "--install=%s " ${INCLUDED_PACKAGES[@]}) +else + echo "No packages to install." +fi diff --git a/packages.json b/packages.json new file mode 100644 index 0000000..3576642 --- /dev/null +++ b/packages.json @@ -0,0 +1,38 @@ +{ + "all": { + "include": { + "all": [], + "silverblue": [], + "kinoite": [ + "supergfxctl-plasmoid" + ], + "lxqt": [], + "mate": [], + "sericea": [], + "vauxite": [] + }, + "exclude": { + "all": [], + "mate": [] + } + }, + "37": { + "include": { + "all": [], + "mate": [] + }, + "exclude": { + "all": [] + } + }, + "38": { + "include": { + "all": [], + "mate": [], + "kinoite":[] + }, + "exclude": { + "all": [] + } + } +} diff --git a/ublue-os-nvidia-addons.spec b/ublue-os-nvidia-addons.spec index d6b0aaa..d35ecee 100644 --- a/ublue-os-nvidia-addons.spec +++ b/ublue-os-nvidia-addons.spec @@ -1,5 +1,5 @@ Name: ublue-os-nvidia-addons -Version: 0.5 +Version: 0.6 Release: 1%{?dist} Summary: Additional files for nvidia driver support @@ -12,10 +12,11 @@ Supplements: mokutil policycoreutils Source0: public_key.der Source1: nvidia-container-runtime.repo Source2: lukenukem-asus-linux.repo -Source3: config-rootless.toml -Source4: nvidia-container.pp -Source5: environment -Source6: public_key.der.new +Source3: jhyub-supergfxctl-plasmoid.repo +Source4: config-rootless.toml +Source5: nvidia-container.pp +Source6: environment +Source7: public_key.der.new %description Adds various runtime files for nvidia support. These include a key for importing with mokutil to enable secure boot for nvidia kernel modules @@ -29,17 +30,19 @@ Adds various runtime files for nvidia support. These include a key for importing install -Dm0644 %{SOURCE0} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-nvidia.der install -Dm0644 %{SOURCE1} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo +install -Dm0644 %{SOURCE2} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo install -Dm0644 %{SOURCE3} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/nvidia-container-runtime/config-rootless.toml install -Dm0644 %{SOURCE4} %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp install -Dm0644 %{SOURCE5} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/sway/environment install -Dm0644 %{SOURCE6} %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der -sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/{lukenukem-asus-linux,nvidia-container-runtime}.repo +sed -i 's@enabled=1@enabled=0@g' %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/{lukenukem-asus-linux,jhyub-supergfxctl-plasmoid,nvidia-container-runtime}.repo install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-nvidia.der %{buildroot}%{_sysconfdir}/pki/akmods/certs/akmods-nvidia.der install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der %{buildroot}%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo %{buildroot}%{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo %{buildroot}%{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo +install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo %{buildroot}%{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_sysconfdir}/nvidia-container-runtime/config-rootless.toml %{buildroot}%{_sysconfdir}/nvidia-container-runtime/config-rootless.toml install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp %{buildroot}%{_datadir}/selinux/packages/nvidia-container.pp @@ -48,6 +51,7 @@ install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nv %attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/pki/akmods/certs/akmods-ublue.der %attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo %attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo +%attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo %attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/nvidia-container-runtime/config-rootless.toml %attr(0644,root,root) %{_datadir}/ublue-os/%{_datadir}/selinux/packages/nvidia-container.pp %attr(0644,root,root) %{_datadir}/ublue-os/%{_sysconfdir}/sway/environment @@ -55,10 +59,14 @@ install -Dm0644 %{buildroot}%{_datadir}/ublue-os/%{_datadir}/selinux/packages/nv %attr(0644,root,root) %{_sysconfdir}/pki/akmods/certs/akmods-ublue.der %attr(0644,root,root) %{_sysconfdir}/yum.repos.d/nvidia-container-runtime.repo %attr(0644,root,root) %{_sysconfdir}/yum.repos.d/lukenukem-asus-linux.repo +%attr(0644,root,root) %{_sysconfdir}/yum.repos.d/jhyub-supergfxctl-plasmoid.repo %attr(0644,root,root) %{_sysconfdir}/nvidia-container-runtime/config-rootless.toml %attr(0644,root,root) %{_datadir}/selinux/packages/nvidia-container.pp %changelog +* Sat Jun 17 2023 RJ Trujillo - 0.6 +- Add supergfxctl-plasmoid COPR + * Sun May 17 2023 Benjamin Sherman - 0.5 - Add new ublue akmod public key for MOK enrollment