Hi @eduard.inggs, two separate things are going on here, and masking the systemd sleep targets fixes neither (it was also reported ineffective/non-persistent in the earlier headless-suspend thread).
1. The suspend is triggered by GNOME at the login screen, not by systemd. When nobody is logged in, the GDM greeter’s own power profile applies and it defaults to automatic suspend after ~20 min. Fix it for the gdm user:
bash
sudo -u gdm dbus-run-session gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'
sudo -u gdm dbus-run-session gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
Then do the same for your own account: log in, Settings → Power → Automatic Suspend → Off (or run the same gsettings set ... sleep-inactive-ac-type 'nothing' without sudo -u gdm).
2. “No connections until a user logs in locally”, if the Spark is on Wi-Fi, this is the known user-scoped connection issue. Whoever ran initial setup created the Wi-Fi profile tied to their account, so NetworkManager only brings it up after login and drops it when the greeter session idles out. Make it system-wide:
bash
nmcli connection show # find the exact connection name
sudo nmcli connection modify "YOUR_WIFI_SSID" connection.permissions ""
sudo nmcli connection modify "YOUR_WIFI_SSID" connection.autoconnect yes
Also disable Wi-Fi powersave, create /etc/NetworkManager/conf.d/wifi-powersave-off.conf with:
[connection]
wifi.powersave = 2
then sudo systemctl restart NetworkManager. (Best fix of all: use wired Ethernet wired units don’t hit this.)
This exact combination was root-caused in Nvidia DGX Spark automatically suspends when running headless.
3. If after these fixes the machine stays reachable over SSH but the monitor won’t wake that’s a different, known issue (HDMI deep sleep, listed in the User Guide Known Issues). Workarounds in DGX Spark HDMI display stops working: xset dpms force on over SSH, disable blanking (gsettings set org.gnome.desktop.session idle-delay 0), or use USB-C→DisplayPort instead of HDMI.
To verify: leave it idle a few hours, then check uptime over SSH and journalctl -b | grep -i suspend you should see no new suspend entries.