{pkgs}: { services = { hibernate-preparation = { # TODO: check if they work wantedBy = ["systemd-hibernate.service"]; unitConfig = { Description = "Enable swap file and disable zram before hibernate"; Before = "systemd-hibernate.service"; }; serviceConfig = { Type = "oneshot"; User = "root"; ExecStart = "${pkgs.bash}/bin/bash -c \"${pkgs.util-linux}/bin/swapon /swap/swapfile && ${pkgs.util-linux}/bin/swapoff /dev/zram0\""; }; }; hibernate-resume = { wantedBy = ["systemd-hibernate.service"]; unitConfig = { Description = "Disable swap after resuming from hibernation"; After = "hibernate.target"; }; serviceConfig = { Type = "oneshot"; User = "root"; ExecStart = "${pkgs.util-linux}/bin/swapoff /swap/swapfile"; }; }; # swapoff-start = { # wantedBy = ["multi-user.target"]; # unitConfig = { # Description = "Disable hardware swap after booting"; # }; # serviceConfig = { # Type = "oneshot"; # User = "root"; # ExecStart = "${pkgs.util-linux}/bin/swapoff /swap/swapfile"; # }; # }; systemd-hibernate.serviceConfig.Environment = "SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1"; systemd-logind.serviceConfig.Environment = "SYSTEMD_BYPASS_HIBERNATION_MEMORY_CHECK=1"; }; sleep.extraConfig = '' HibernateDelaySec=5m ''; }