Merge pull request #55142 from FlorianFranzen/thinkfan_smart

thinkfan: add option for libatasmart support
This commit is contained in:
Domen Kožar 2019-03-05 17:47:13 +07:00 committed by GitHub
commit f60459a023
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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