File supergfxctl.spec of Package supergfxctl

#
# spec file for package supergfxctl
#
# Copyright (c) 2025 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 license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


%global rustflags -Clink-arg=-Wl,-z,relro,-z,now

Name:           supergfxctl
Version:        1742336779.bcdca4b
Release:        0
Summary:        Super graphics mode controller
License:        MPL-2.0
URL:            https://gitlab.com/asus-linux/supergfxctl
Source0:        %{name}-%{version}.tar.gz
Source1:        vendor.tar.zst
Source2:        %{name}-user.conf
Source3:        prime-run.sh
Group:          System/Daemons

## Patch for user-groups
Patch1:         user-group.patch
##

BuildRequires:  cargo-packaging
BuildRequires:  pkgconfig
BuildRequires:  sysuser-tools
BuildRequires:  pkgconfig(dbus-1)
BuildRequires:  pkgconfig(libudev)
BuildRequires:  pkgconfig(systemd)
Requires:       systemd

Conflicts:      bbswitch
Conflicts:      bumblebee
Conflicts:      bumblebee-status-module-nvidia-optimus-manager
Conflicts:      suse-prime
Conflicts:      system76-power

%sysusers_requires

%description
supergfxctl is a super graphics mode controller for laptops with hybrid nvidia.

%prep
%autosetup -a1 -p1

%build
%cargo_build
%sysusers_generate_pre %{SOURCE2} %{name} %{name}-user.conf

%install
%cargo_install

mkdir -p "%{buildroot}%{_bindir}"
install -D -m 0755 target/release/supergfxd %{buildroot}%{_bindir}/supergfxd
install -D -m 0755 target/release/supergfxctl %{buildroot}%{_bindir}/supergfxctl
install -D -m 0644 data/90-supergfxd-nvidia-pm.rules %{buildroot}%{_udevrulesdir}/90-supergfxd-nvidia-pm.rules
install -D -m 0644 data/org.supergfxctl.Daemon.conf  %{buildroot}%{_sysconfdir}/dbus-1/system.d/org.supergfxctl.Daemon.conf
install -D -m 0644 data/supergfxd.service %{buildroot}%{_unitdir}/supergfxd.service
install -D -m 0644 data/supergfxd.preset %{buildroot}%{_presetdir}/99-supergfxd.preset

install -D -m 0644 LICENSE %{buildroot}%{_datadir}/licenses/%{name}/LICENSE
install -D -m 0644 README.md %{buildroot}%{_datadir}/doc/%{name}/README.md

install -D -m 0644 %{SOURCE2} %{buildroot}%{_sysusersdir}/%{name}-user.conf

install -D -m 0755 %{SOURCE3} %{buildroot}%{_bindir}/prime-run

%pre -f %{name}.pre
%service_add_pre supergfxd.service

%post
%service_add_post supergfxd.service

%preun
%service_del_preun supergfxd.service

%postun
%service_del_postun_with_restart supergfxd.service
if [ -e %{_sysconfdir}/modprobe.d/nvidia.conf ]
then
    if grep -q "# options nvidia-drm.modeset=1" %{_sysconfdir}/modprobe.d/nvidia.conf
    then
        echo "optional nvidia-drm.modeset=1" > %{_sysconfdir}/modprobe.d/nvidia.conf
    fi
fi

%files
%license LICENSE
%{_bindir}/supergfxd
%{_bindir}/supergfxctl
%{_bindir}/prime-run
%{_unitdir}/supergfxd.service
%{_presetdir}/99-supergfxd.preset
%{_udevrulesdir}/90-supergfxd-nvidia-pm.rules
%{_sysusersdir}/%{name}-user.conf
%ghost %attr(0644,root,root) %{_sysconfdir}/modprobe.d/supergfxd.conf
%config %{_sysconfdir}/dbus-1/system.d/org.supergfxctl.Daemon.conf
%dir %{_datadir}/doc/%{name}
%{_datadir}/doc/%{name}/*

%changelog
openSUSE Build Service is sponsored by