diff options
Diffstat (limited to '')
-rw-r--r-- | system/disks/hibernate.nix | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/system/disks/hibernate.nix b/system/disks/hibernate.nix new file mode 100644 index 00000000..5bb0f8d5 --- /dev/null +++ b/system/disks/hibernate.nix @@ -0,0 +1,42 @@ +{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"; + }; +} |