about summary refs log tree commit diff stats
path: root/modules/by-name/di/disks/hibernate.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/by-name/di/disks/hibernate.nix')
-rw-r--r--modules/by-name/di/disks/hibernate.nix45
1 files changed, 45 insertions, 0 deletions
diff --git a/modules/by-name/di/disks/hibernate.nix b/modules/by-name/di/disks/hibernate.nix
new file mode 100644
index 00000000..a50e5b57
--- /dev/null
+++ b/modules/by-name/di/disks/hibernate.nix
@@ -0,0 +1,45 @@
+{pkgs}: {
+  services = {
+    hibernate-preparation = {
+      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
+  '';
+}