thinkfan: add option for libatasmart support

This commit is contained in:
Florian Franzen 2019-02-03 22:34:41 +01:00
parent f2a1a4e93b
commit 1278615a48
2 changed files with 21 additions and 6 deletions

View File

@ -47,6 +47,8 @@ let
${cfg.levels} ${cfg.levels}
''; '';
thinkfan = pkgs.thinkfan.override { smartSupport = cfg.smartSupport; };
in { in {
options = { options = {
@ -61,6 +63,15 @@ in {
''; '';
}; };
smartSupport = mkOption {
type = types.bool;
default = false;
description = ''
Whether to build thinkfan with SMART support to read temperatures
directly from hard disks.
'';
};
sensors = mkOption { sensors = mkOption {
type = types.lines; type = types.lines;
default = '' default = ''
@ -77,7 +88,7 @@ in {
Which may be provided by any hwmon drivers (keyword Which may be provided by any hwmon drivers (keyword
hwmon) hwmon)
S.M.A.R.T. (since 0.9 and requires the USE_ATASMART compilation flag) S.M.A.R.T. (requires smartSupport to be enabled)
Which reads the temperature directly from the hard Which reads the temperature directly from the hard
disk using libatasmart (keyword atasmart) disk using libatasmart (keyword atasmart)
@ -125,18 +136,17 @@ in {
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.thinkfan ]; environment.systemPackages = [ thinkfan ];
systemd.services.thinkfan = { systemd.services.thinkfan = {
description = "Thinkfan"; description = "Thinkfan";
after = [ "basic.target" ]; after = [ "basic.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ pkgs.thinkfan ]; path = [ thinkfan ];
serviceConfig.ExecStart = "${pkgs.thinkfan}/bin/thinkfan -n -c ${configFile}"; serviceConfig.ExecStart = "${thinkfan}/bin/thinkfan -n -c ${configFile}";
}; };
boot.extraModprobeConfig = "options thinkpad_acpi experimental=1 fan_control=1"; boot.extraModprobeConfig = "options thinkpad_acpi experimental=1 fan_control=1";
}; };
} }

View File

@ -1,4 +1,5 @@
{ stdenv, fetchurl, cmake }: { stdenv, fetchurl, cmake
, smartSupport ? false, libatasmart }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "thinkfan-${version}"; name = "thinkfan-${version}";
@ -11,6 +12,10 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
buildInputs = stdenv.lib.optional smartSupport libatasmart;
cmakeFlags = stdenv.lib.optional smartSupport "-DUSE_ATASMART=ON";
installPhase = '' installPhase = ''
install -Dm755 {.,$out/bin}/thinkfan install -Dm755 {.,$out/bin}/thinkfan