From 3bb730988d7cdabdb0cc2f0d9a9ae1c9cbbebdb1 Mon Sep 17 00:00:00 2001
From: Crony Akatsuki <crony@cronyakatsuki.xyz>
Date: Fri, 31 Jan 2025 15:26:10 +0100
Subject: [PATCH] Modularize nbfc configuration.

---
 hosts/nixos/configuration.nix | 13 -------------
 modules/nixos/default.nix     | 12 +++++++++++-
 modules/nixos/nbfc.nix        | 29 +++++++++++++++++++++++++++++
 3 files changed, 40 insertions(+), 14 deletions(-)
 create mode 100644 modules/nixos/nbfc.nix

diff --git a/hosts/nixos/configuration.nix b/hosts/nixos/configuration.nix
index ce65c38..c8e9b2d 100644
--- a/hosts/nixos/configuration.nix
+++ b/hosts/nixos/configuration.nix
@@ -81,7 +81,6 @@
     neovim
     mangohud
     lm_sensors
-    nbfc-linux
   ];
 
   # Enable nixd to see nixpkgs path
@@ -114,18 +113,6 @@
     };
   };
 
-  # Install nbfc-linux
-  systemd.services.nbfc_service = {
-    enable = false;
-    description = "NoteBook FanControl Service";
-    serviceConfig.Type = "simple";
-    path = [pkgs.kmod];
-
-    script = "${pkgs.nbfc-linux}/bin/nbfc_service --config-file '/home/crony/.config/nbfc.json'";
-
-    wantedBy = ["multi-user.target"];
-  };
-
   # Allow for wireguard traffic
   networking.firewall = {
     # if packets are still dropped, they will show up in dmesg
diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix
index 4231d1d..629e212 100644
--- a/modules/nixos/default.nix
+++ b/modules/nixos/default.nix
@@ -1,5 +1,14 @@
 {lib, ...}: {
-  imports = [./bluetooth.nix ./nvidia.nix ./plasma.nix ./disable-hibernation.nix ./gaming.nix ./zsh.nix ./stylix.nix];
+  imports = [
+    ./bluetooth.nix
+    ./nvidia.nix
+    ./plasma.nix
+    ./disable-hibernation.nix
+    ./gaming.nix
+    ./zsh.nix
+    ./stylix.nix
+    ./nbfc.nix
+  ];
 
   crony.bluetooth.enable = lib.mkDefault true;
   crony.nvidia.enable = lib.mkDefault true;
@@ -8,4 +17,5 @@
   crony.gaming.enable = lib.mkDefault true;
   crony.zsh.enable = lib.mkDefault true;
   crony.stylix.enable = lib.mkDefault true;
+  crony.nbfc.enable = lib.mkDefault true;
 }
diff --git a/modules/nixos/nbfc.nix b/modules/nixos/nbfc.nix
new file mode 100644
index 0000000..e439f7d
--- /dev/null
+++ b/modules/nixos/nbfc.nix
@@ -0,0 +1,29 @@
+{
+  config,
+  lib,
+  pkgs,
+  ...
+}: {
+  options = {
+    crony.nbfc.enable = lib.mkEnableOption "enable nbfc and set it up for my laptop";
+  };
+
+  config = lib.mkIf config.crony.nbfc.enable {
+    # Install nbfc-linux
+    environment.systemPackages = with pkgs; [
+      nbfc-linux
+    ];
+
+    # Setup nbfc package
+    systemd.services.nbfc_service = {
+      enable = false;
+      description = "NoteBook FanControl Service";
+      serviceConfig.Type = "simple";
+      path = [pkgs.kmod];
+
+      script = "${pkgs.nbfc-linux}/bin/nbfc_service --config-file '/home/crony/.config/nbfc.json'";
+
+      wantedBy = ["multi-user.target"];
+    };
+  };
+}