From 485a82492bf0af6a95b98cc59a95d8f4e0000cb5 Mon Sep 17 00:00:00 2001
From: zowoq <59103226+zowoq@users.noreply.github.com>
Date: Wed, 22 Jan 2025 08:20:19 +1000
Subject: [PATCH] modules/nixos/common: reboot on panic

---
 modules/nixos/common/default.nix | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/modules/nixos/common/default.nix b/modules/nixos/common/default.nix
index 45b27f4..cc935b5 100644
--- a/modules/nixos/common/default.nix
+++ b/modules/nixos/common/default.nix
@@ -35,6 +35,26 @@
   zramSwap.enable = true;
   zramSwap.memoryPercent = 100;
 
+  systemd.services.sysctl-after-boot = {
+    serviceConfig.Restart = "on-failure";
+    serviceConfig.Type = "oneshot";
+    path = [
+      pkgs.procps
+    ];
+    script = ''
+      sysctl -w kernel.hardlockup_panic=1
+      sysctl -w kernel.hung_task_panic=1
+      sysctl -w kernel.panic_on_oops=1
+      sysctl -w kernel.panic=60
+      sysctl -w kernel.softlockup_panic=1
+    '';
+  };
+
+  systemd.timers.sysctl-after-boot = {
+    wantedBy = [ "timers.target" ];
+    timerConfig.OnBootSec = "5m";
+  };
+
   # https://github.com/NixOS/nixpkgs/pull/268121
   # https://wiki.archlinux.org/title/Zram#Optimizing_swap_on_zram
   boot.kernel.sysctl = {