summary refs log tree commit diff
path: root/modules/oom.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/oom.nix')
-rw-r--r--modules/oom.nix28
1 files changed, 28 insertions, 0 deletions
diff --git a/modules/oom.nix b/modules/oom.nix
new file mode 100644
index 0000000..b05052a
--- /dev/null
+++ b/modules/oom.nix
@@ -0,0 +1,28 @@
+# module for controlling out-of-memory states for desktop linux machines,
+# to avoid hanging the full system including the shell, in favor of
+# sending out oom signals before it comes to that with the earlyoom service.
+{ ... }:
+
+{
+  services = {
+    # TODO: i believe systemd-oomd could also be used to prevent system hanging,
+    # and i should investigate it, to avoid running 2 userspace oom killers.
+    # earlyoom is known for the small amount of configuration needed to prevent the
+    # system from hanging for half an hour, and we can keep it simple for now.
+    earlyoom = {
+      enable = true;
+
+      freeMemThreshold = 10;
+      freeMemKillThreshold = 5;
+
+      # requires systembus-notify.
+      # i wish libnotify would support sending out
+      # notifications to all users through the system
+      # session bus natively...
+      # see: https://gitlab.gnome.org/GNOME/libnotify/-/issues/9
+      enableNotifications = true;
+    };
+
+    systembus-notify.enable = true;
+  };
+}