From 8c976e97e2cac4ea4458ef104ce0c3c140fb3371 Mon Sep 17 00:00:00 2001 From: Dashie Date: Fri, 9 May 2025 23:27:54 +0200 Subject: [PATCH] Add fancontrol (#16) --- flake.nix | 3 +++ lib/default.nix | 1 + modules/programs/default.nix | 1 + modules/programs/fancontrol.nix | 36 +++++++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+) create mode 100644 modules/programs/fancontrol.nix diff --git a/flake.nix b/flake.nix index e7e7c44..bbddc3a 100644 --- a/flake.nix +++ b/flake.nix @@ -32,6 +32,9 @@ zen-browser.url = "github:youwen5/zen-browser-flake"; + # TODO move to upstream repository after merged nix flake pr + fancontrol.url = "git+https://github.com/DashieTM/fancontrol-gui?ref=nix-flake"; + stylix.url = "github:danth/stylix"; base16.url = "github:SenchoPens/base16.nix"; disko.url = "github:nix-community/disko/latest"; diff --git a/lib/default.nix b/lib/default.nix index 9e0d75a..3ee4fc8 100644 --- a/lib/default.nix +++ b/lib/default.nix @@ -66,6 +66,7 @@ inputs.reset.homeManagerModules.default inputs.sops-nix.homeManagerModules.sops inputs.dashvim.homeManagerModules.dashvim + inputs.fancontrol.homeManagerModules.default ../modules ]; }, diff --git a/modules/programs/default.nix b/modules/programs/default.nix index f454717..17be977 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -7,6 +7,7 @@ ./coding.nix ./containers.nix ./drives.nix + ./fancontrol.nix ./fastfetch.nix ./fish.nix ./flatpak.nix diff --git a/modules/programs/fancontrol.nix b/modules/programs/fancontrol.nix new file mode 100644 index 0000000..87be9af --- /dev/null +++ b/modules/programs/fancontrol.nix @@ -0,0 +1,36 @@ +{ + lib, + config, + options, + ... +}: { + options.mods.fancontrol = { + enable = lib.mkOption { + default = false; + example = true; + type = lib.types.bool; + description = "Enables fancontrol-gui with needed drivers"; + }; + forceId = lib.mkOption { + default = null; + example = "force_id=0x8628"; + type = with lib.types; nullOr str; + description = "Modprobe options for the it87 driver. Information at: https://wiki.archlinux.org/title/Lm_sensors#Gigabyte_B250/Z370/B450M/B560M/B660M/Z690/B550_motherboards"; + }; + }; + config = lib.mkIf config.mods.fancontrol.enable ( + lib.optionalAttrs (options ? home.packages) { + programs.fancontrol-gui.enable = true; + } + // (lib.optionalAttrs (options ? boot.kernelModules) { + boot = { + kernelParams = ["acpi_enforce_resources=lax"]; + extraModulePackages = with config.boot.kernelPackages; [liquidtux it87]; + kernelModules = ["v4l2loopback" "it87"]; + extraModprobeConfig = lib.mkIf (config.mods.fancontrol.forceId != null) '' + options it87 ${config.mods.fancontrol.forceId} + ''; + }; + }) + ); +}