From 3767ae62624eddc91c2c04ff1eed43e4ba2b3e71 Mon Sep 17 00:00:00 2001 From: Thomas Duckworth Date: Wed, 25 Mar 2026 21:37:39 +1100 Subject: [PATCH] Don't disable user session freezing if nvidia module isn't loaded nvidia-utils from Arch ships a blanket rule that disables user session freezing on suspend. While this might be necessary on NVIDIA hardware, it's actively warned against by systemd and hence should not be set for everyone else. --- .../10-nvidia-no-freeze-session.conf | 9 +++++++++ .../lib/udev/rules.d/99-nvidia-no-freeze-session.rules | 8 ++++++++ 2 files changed, 17 insertions(+) create mode 100644 mkosi.extra/usr/lib/systemd/system/systemd-suspend.service.d/10-nvidia-no-freeze-session.conf create mode 100644 mkosi.extra/usr/lib/udev/rules.d/99-nvidia-no-freeze-session.rules diff --git a/mkosi.extra/usr/lib/systemd/system/systemd-suspend.service.d/10-nvidia-no-freeze-session.conf b/mkosi.extra/usr/lib/systemd/system/systemd-suspend.service.d/10-nvidia-no-freeze-session.conf new file mode 100644 index 0000000..a1c38bf --- /dev/null +++ b/mkosi.extra/usr/lib/systemd/system/systemd-suspend.service.d/10-nvidia-no-freeze-session.conf @@ -0,0 +1,9 @@ +# SPDX-License-Identifier: CC0-1.0 +# SPDX-FileCopyrightText: none + +# This shadows the file of the same name provided by NVIDIA and instead reads the below environment +# file every time suspend is attempted. This is so SYSTEMD_SLEEP_FREEZE_USER_SESSIONS is only set to +# false when the nvidia kernel module is loaded, unlike the blanket rule shipped by NVIDIA. + +[Service] +EnvironmentFile=-/run/nvidia-no-freeze-session diff --git a/mkosi.extra/usr/lib/udev/rules.d/99-nvidia-no-freeze-session.rules b/mkosi.extra/usr/lib/udev/rules.d/99-nvidia-no-freeze-session.rules new file mode 100644 index 0000000..63f4bdf --- /dev/null +++ b/mkosi.extra/usr/lib/udev/rules.d/99-nvidia-no-freeze-session.rules @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL +# SPDX-FileCopyrightText: none + +# Only runs if the nvidia kernel module is loaded +ACTION=="add", SUBSYSTEM=="module", KERNEL=="nvidia", RUN+="/usr/bin/sh -c 'echo SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false > /run/nvidia-no-freeze-session'" + +# Clean up if the module is unloaded +ACTION=="remove", SUBSYSTEM=="module", KERNEL=="nvidia", RUN+="/usr/bin/rm -f /run/nvidia-no-freeze-session"