{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.dash}/bin/dash -c \"${pkgs.util-linux}/bin/swapon /swap/swapfile && ${pkgs.util-linux}/bin/swapoff /dev/zram0\""; }; }; hibernate-resume = { wantedBy = ["hibernate.target"]; 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"; }; }