I have written a systemd service to start swayidle automatically (below), but it doesn’t work properly, and when i ask journalctl the error comes up as saying that the service was restarted too early, and failed to start the service. I have tried changing the target, switching it toa user service, adding user to the serviceConfig, and changing the Restart condition, nothing seems to work. Any ideas on what’s wrong?
systemd.user.services.swayidle = let
swaylock = "${pkgs.swaylock}/bin/swaylock -fF";
hyprctl = "${pkgs.hyprland}/bin/hyprctl";
swayidle = "${pkgs.swayidle}/bin/swayidle -w";
in {
enable = true;
description = "Idle manager for Wayland";
wantedBy = [ "default.target" ];
serviceConfig = {
Type = "simple";
User = config.user.name;
Restart = "on-failure";
Environment = [ "PATH=${makeBinPath [pkgs.dash]}" ];
ExecStart = ''
${swayidle} \
timout 300 '${swaylock}' \
timout 310 '${hyprctl} dispatch dpms off' \
resume '${hyprctl} dispatch dpms on' \
before-sleep '${swaylock}'
'';
edit: I should also note that the command in ExecStart works when I run it from a terminal, so it can’t be that either