From fbd4e0503e35cf376e43174414091fdeda2ca115 Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Wed, 8 Jul 2026 22:21:17 +0100 Subject: [PATCH] feat(system): enable smartd for drive health monitoring --- agent/BACKLOG.md | 6 ------ agent/JOURNAL.md | 7 +++++++ modules/nixos/default.nix | 10 ++++++++++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index 975d0a3..95e80e5 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -349,12 +349,6 @@ implement. Bernardo moves accepted items into a tier.* -- **[stability] Drive health monitoring (`smartd`)**: - While BTRFS auto-scrub prevents silent bitrot, it doesn't warn about - impending physical hardware failure. Enabling `services.smartd.enable = true` - with desktop notifications (via `-M exec` custom scripts or local mail) - provides early warnings when an NVMe/SSD starts throwing SMART errors, giving - the user a critical window to back up data before the drive dies. diff --git a/agent/JOURNAL.md b/agent/JOURNAL.md index 5f6e99e..a77e3fb 100644 --- a/agent/JOURNAL.md +++ b/agent/JOURNAL.md @@ -17,6 +17,13 @@ Template: --- +## 2026-07-08 — Drive health monitoring (iteration #82) +- **Task:** PROPOSED item — early SMART warnings for failing hardware. +- **Did:** Added `services.smartd.enable = true` and `services.smartd.notifications.x11/wall` to `modules/nixos/default.nix`. Also explicitly enabled `services.systembus-notify.enable` to resolve a module collision with `earlyoom`. +- **Verified:** V1 (flake check). +- **Pending:** nothing. +- **Next suggestion:** continue tackling the PROPOSED backlog queue (e.g. `ddcutil`). + ## 2026-07-08 — Microphone noise cancellation (iteration #81) - **Task:** PROPOSED item — system-wide background noise filtering for voice calls. - **Did:** Enabled `services.easyeffects.enable = true` in `modules/home/default.nix`. diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index c352a59..1abd054 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -135,6 +135,16 @@ in # `services.fwupd.enable = false`. services.fwupd.enable = lib.mkDefault true; + # Drive health monitoring (SMART). + services.smartd = { + enable = lib.mkDefault true; + notifications.x11.enable = lib.mkDefault true; + notifications.wall.enable = lib.mkDefault true; + }; + # Explicitly enable systembus-notify to resolve a mkDefault conflict + # between earlyoom (true) and smartd (false). + services.systembus-notify.enable = true; + networking.networkmanager.enable = lib.mkDefault true; # OpenVPN support for the VPN menu's import/connect flow (nomarchy-vpn). # WireGuard needs no plugin (NetworkManager imports wg .conf natively);