GLF-OS distinguishes two power-saving modes that are often confused. For technical reasons detailed below, only suspend (S3) is enabled by default. Hibernation (S4) is disabled on recent NVIDIA setups due to a bug in the proprietary driver.
Under both GNOME and KDE Plasma, the "Suspend" action triggers an S3 suspend. The machine stays powered but draws minimal power. You wake it with a key press, mouse movement or power button: instant return to your session with all applications still open.
This is the expected behaviour. No hibernation, no disk write.
Linux hibernation (S4) requires the graphics driver to preserve the VRAM state before the machine powers off and to restore it on next boot. The proprietary NVIDIA driver for RTX 4000 (Ada) and RTX 5000 (Blackwell) series is currently affected by a bug: the on-card firmware (GSP: GPU System Processor) stops responding during the S4 transition. The Linux kernel then aborts the hibernation image write, and on next boot the machine finds no image to restore → it's a cold boot, not a real resume.
Symptoms reported by users before this fix was applied:
This bug is reported identically on CachyOS, Debian 13, Arch and NixOS, with drivers 580.x through 595.x. NVIDIA has not yet released a fix. Distributions Fedora, Bazzite, Pop!_OS, Ubuntu 24.04 have also disabled hibernation by default on their NVIDIA setups.
GLF-OS adopted the same policy to spare its users these degraded scenarios.
| Item | Behaviour |
|---|---|
| Suspend (S3) | ✅ Works |
| Power button (default action) | Suspend |
| Long inactivity | Suspend |
| Hibernation (S4) | ❌ Disabled |
systemctl hibernate (CLI) |
Refused by systemd ("Access denied") |
| GNOME power menu | No "Hibernate" option |
| KDE power menu | No "Hibernate" option |
No action required on your side: everything is already configured.
If you have an AMD card or an Intel iGPU, hibernation may work fine on your machine. If you want to try on NVIDIA Blackwell, expect the symptoms described above.
Add to your /etc/nixos/customConfig/default.nix:
glf.boot.hibernation.enable = true;
Then apply with:
glf-update
The module automatically detects your disk swap and configures boot.resumeDevice. If you want to point explicitly to a specific swap partition, also add:
boot.resumeDevice = "/dev/disk/by-uuid/<your-swap-UUID>";
Find your swap UUID with sudo blkid | grep swap.
⚠️ Software pre-requisites for hibernation, even with the option enabled:
- A swap partition of size at least equal to physical RAM
- An unencrypted swap (LUKS swap requires extra configuration)
- Not just
zram(compressed RAM swap, incompatible with hibernation)
# Hibernation-related systemd targets are masked
systemctl is-enabled hibernate.target hybrid-sleep.target suspend-then-hibernate.target
# → masked masked masked
# Manual attempt (should fail)
sudo systemctl hibernate
# → Call to Hibernate failed: Access denied
# Suspend (S3) is working
systemctl is-enabled suspend.target
# → linked
glf-update and others