The solution provided by @MaxX2342 works (thanks!) but you can also use the dbus-test-tool
to black-hole all messages. This utility is provided directly by freedesktop. Here is my preferred workaround:
/etc/dbus-1/system.d/nvidia-fake-powerd.conf
(renamed to be more expressive and configured to run as the dbus
user)
<!DOCTYPE busconfig PUBLIC
"-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
<policy user="dbus">
<allow own="nvidia.powerd.server"/>
</policy>
<policy context="default">
<allow send_destination="nvidia.powerd.server"/>
<allow receive_sender="nvidia.powerd.server"/>
</policy>
</busconfig>
The simple systemd service /etc/systemd/system/nvidia-fake-powerd.service
:
[Unit]
Description=NVIDIA fake powerd service
[Service]
Type=dbus
BusName=nvidia.powerd.server
ExecStart=/usr/bin/dbus-test-tool black-hole --system --name=nvidia.powerd.server
User=dbus
Group=dbus
LimitNPROC=2
ProtectHome=true
ProtectSystem=full
[Install]
WantedBy=default.target
Alias=dbus-nvidia.fake-powerd.service
Of course once these files are in place, systemd must be reloaded and the service enabled/started:
systemctl daemon-reload
systemctl enable nvidia-fake-powerd.service
systemctl start nvidia-fake-powerd.service
systemctl status nvidia-fake-powerd.service