about summary refs log tree commit diff stats
path: root/system/disks/hibernate.nix
diff options
context:
space:
mode:
authorSoispha <soispha@vhack.eu>2023-06-28 10:43:05 +0200
committerSoispha <soispha@vhack.eu>2023-07-10 16:44:09 +0200
commit5eb25c3a6d2217bbc3b0303c1db90b4559d8142a (patch)
tree2e441df85dcfac1ac1be8c762d177923bd757d58 /system/disks/hibernate.nix
parentFeat(flake): Add disko module (diff)
downloadnixos-config-5eb25c3a6d2217bbc3b0303c1db90b4559d8142a.tar.gz
nixos-config-5eb25c3a6d2217bbc3b0303c1db90b4559d8142a.zip
Feat(disko): Squash Commit
Diffstat (limited to '')
-rw-r--r--system/disks/hibernate.nix42
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";
+  };
+}