OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
HASH      0acf43414344
DATE      2026-03-29
SUBJECT   nixos: add earlyoom module, move switch and locale to system namespace
FILES     6 CHANGED
HASH      0acf43414344
DATE      2026-03-29
SUBJECT   nixos: add earlyoom module, move
          switch and locale to system namespace
FILES     6 CHANGED
 

diff --git a/hosts/ooksdesk/default.nix b/hosts/ooksdesk/default.nix
index 50a0ddc..843c16d 100644
--- a/hosts/ooksdesk/default.nix
+++ b/hosts/ooksdesk/default.nix
@@ -9,6 +9,7 @@
   ];
 
   ooknet = {
+    system.earlyoom.enable = true;
     host = {
       deployment = {
         enable = true;

diff --git a/hosts/ooksdesk/default.nix b/ho
sts/ooksdesk/default.nix
index 50a0ddc..843c16d 100644
--- a/hosts/ooksdesk/default.nix
+++ b/hosts/ooksdesk/default.nix
@@ -9,6 +9,7 @@
   ];
 
   ooknet = {
+    system.earlyoom.enable = true;
     host = {
       deployment = {
         enable = true;
 

diff --git a/modules/nixos/base/default.nix b/modules/nixos/base/default.nix
index fc53a19..97d6607 100644
--- a/modules/nixos/base/default.nix
+++ b/modules/nixos/base/default.nix
@@ -4,9 +4,8 @@
     ./openssh.nix
     ./tailscale.nix
     ./networking.nix
-    ./switch.nix
     ./security
+    ./system
     ./syncthing.nix
-    ./locale.nix
   ];
 }

diff --git a/modules/nixos/base/default.nix 
b/modules/nixos/base/default.nix
index fc53a19..97d6607 100644
--- a/modules/nixos/base/default.nix
+++ b/modules/nixos/base/default.nix
@@ -4,9 +4,8 @@
     ./openssh.nix
     ./tailscale.nix
     ./networking.nix
-    ./switch.nix
     ./security
+    ./system
     ./syncthing.nix
-    ./locale.nix
   ];
 }
 

diff --git a/modules/nixos/base/system/default.nix b/modules/nixos/base/system/def
ault.nix
new file mode 100644
index 0000000..5c36859
--- /dev/null
+++ b/modules/nixos/base/system/default.nix
@@ -0,0 +1,7 @@
+{
+  imports = [
+    ./earlyoom.nix
+    ./locale.nix
+    ./switch.nix
+  ];
+}

diff --git a/modules/nixos/base/system/defau
lt.nix b/modules/nixos/base/system/default.n
ix
new file mode 100644
index 0000000..5c36859
--- /dev/null
+++ b/modules/nixos/base/system/default.nix
@@ -0,0 +1,7 @@
+{
+  imports = [
+    ./earlyoom.nix
+    ./locale.nix
+    ./switch.nix
+  ];
+}
 

diff --git a/modules/nixos/base/system/earlyoom.nix b/modules/nixos/base/system/ea
rlyoom.nix
new file mode 100644
index 0000000..d5bedb4
--- /dev/null
+++ b/modules/nixos/base/system/earlyoom.nix
@@ -0,0 +1,26 @@
+{
+  config,
+  lib,
+  ...
+}: let
+  inherit (lib) mkIf;
+  inherit (config.ooknet.system) earlyoom;
+in {
+  config = mkIf earlyoom.enable {
+    services.earlyoom = {
+      enable = true;
+      freeMemThreshold = 5;
+      freeSwapThreshold = 10;
+      enableNotifications = true;
+
+      # prefer killing the biggest memory hogs in userspace,
+      # avoid taking out system-critical stuff
+      extraArgs = [
+        "--prefer"
+        "^(Xwayland|steam|Web Content|Isolated Web Co|electron|chromium|zen)"
+        "--avoid"
+        "^(Hyprland|pipewire|wireplumber|systemd|sshd)"
+      ];
+    };
+  };
+}

diff --git a/modules/nixos/base/system/early
oom.nix b/modules/nixos/base/system/earlyoom
.nix
new file mode 100644
index 0000000..d5bedb4
--- /dev/null
+++ b/modules/nixos/base/system/earlyoom.nix
@@ -0,0 +1,26 @@
+{
+  config,
+  lib,
+  ...
+}: let
+  inherit (lib) mkIf;
+  inherit (config.ooknet.system) earlyoom;
+in {
+  config = mkIf earlyoom.enable {
+    services.earlyoom = {
+      enable = true;
+      freeMemThreshold = 5;
+      freeSwapThreshold = 10;
+      enableNotifications = true;
+
+      # prefer killing the biggest memory h
ogs in userspace,
+      # avoid taking out system-critical st
uff
+      extraArgs = [
+        "--prefer"
+        "^(Xwayland|steam|Web Content|Isola
ted Web Co|electron|chromium|zen)"
+        "--avoid"
+        "^(Hyprland|pipewire|wireplumber|sy
stemd|sshd)"
+      ];
+    };
+  };
+}
 

diff --git a/modules/nixos/base/locale.nix b/modules/nixos/base/system/locale.nix
similarity index 100%
rename from modules/nixos/base/locale.nix
rename to modules/nixos/base/system/locale.nix

diff --git a/modules/nixos/base/locale.nix b
/modules/nixos/base/system/locale.nix
similarity index 100%
rename from modules/nixos/base/locale.nix
rename to modules/nixos/base/system/locale.n
ix
 

diff --git a/modules/nixos/base/switch.nix b/modules/nixos/base/system/switch.nix
similarity index 100%
rename from modules/nixos/base/switch.nix
rename to modules/nixos/base/system/switch.nix

diff --git a/modules/nixos/base/switch.nix b
/modules/nixos/base/system/switch.nix
similarity index 100%
rename from modules/nixos/base/switch.nix
rename to modules/nixos/base/system/switch.n
ix
 
[ BACK TO LOG ]
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET