summary refs log tree commit diff
path: root/pkgs/os-specific/linux/phc-intel/default.nix
blob: 2d5d149292cd637c4e91ac59b2758733edb0885d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{ stdenv, fetchurl, kernel, which }:

# Don't bother with older versions, though some might even work:
assert stdenv.lib.versionAtLeast kernel.version "4.10";

let
  release = "0.4.0";
  revbump = "rev25"; # don't forget to change forum download id...
in stdenv.mkDerivation rec {
  name = "linux-phc-intel-${version}-${kernel.version}";
  version = "${release}-${revbump}";

  src = fetchurl {
    sha256 = "1w91hpphd8i0br7g5qra26jdydqar45zqwq6jq8yyz6l0vb10zlz";
    url = "http://www.linux-phc.org/forum/download/file.php?id=194";
    name = "phc-intel-pack-${revbump}.tar.bz2";
  };

  nativeBuildInputs = [ which ] ++ kernel.moduleBuildDependencies;

  hardeningDisable = [ "pic" ];

  makeFlags = with kernel; [
    "DESTDIR=$(out)"
    "KERNELSRC=${dev}/lib/modules/${modDirVersion}/build"
  ];

  configurePhase = ''
    make $makeFlags brave
  '';

  enableParallelBuilding = false;

  installPhase = ''
    install -m 755   -d $out/lib/modules/${kernel.modDirVersion}/extra/
    install -m 644 *.ko $out/lib/modules/${kernel.modDirVersion}/extra/
  '';

  meta = with stdenv.lib; {
    description = "Undervolting kernel driver for Intel processors";
    longDescription = ''
      PHC is a Linux kernel patch to undervolt processors. This can divide the
      power consumption of the CPU by two or more, increasing battery life
      while noticably reducing fan noise. This driver works only on supported
      Intel architectures.
    '';
    homepage = "http://www.linux-phc.org/";
    downloadPage = "http://www.linux-phc.org/forum/viewtopic.php?f=7&t=267";
    license = licenses.gpl2;
    platforms = [ "x86_64-linux" "i686-linux" ];
    broken = stdenv.lib.versionAtLeast kernel.version "4.18";
  };
}