summary refs log tree commit diff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/common.nix1
-rw-r--r--modules/oom.nix28
2 files changed, 29 insertions, 0 deletions
diff --git a/modules/common.nix b/modules/common.nix
index e36d4e9..00b87bb 100644
--- a/modules/common.nix
+++ b/modules/common.nix
@@ -13,6 +13,7 @@
     ./vim.nix
     ./tmux.nix
     ./nix-ld.nix
+    ./oom.nix
   ];
 
   services.envfs.enable = true;
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;
+  };
+}