about summary refs log tree commit diff stats
path: root/modules/system/disks/hibernate.nix
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-20 16:10:21 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-05-20 16:14:26 +0200
commit368cb6b0d25db2ae23be42ad51584de059997e51 (patch)
tree3282e45d3ebced63c8498a47e83a255c35de620b /modules/system/disks/hibernate.nix
parentrefactor(hm): Rename to `modules/home` (diff)
downloadnixos-config-368cb6b0d25db2ae23be42ad51584de059997e51.tar.gz
nixos-config-368cb6b0d25db2ae23be42ad51584de059997e51.zip
refactor(sys): Modularize and move to `modules/system` or `pkgs`
Diffstat (limited to 'modules/system/disks/hibernate.nix')
-rw-r--r--modules/system/disks/hibernate.nix45
1 files changed, 45 insertions, 0 deletions
diff --git a/modules/system/disks/hibernate.nix b/modules/system/disks/hibernate.nix
new file mode 100644
index 00000000..a50e5b57
--- /dev/null
+++ b/modules/system/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
+  '';
+}