1{ stdenv, fetchFromGitHub, makeWrapper, perl, systemd, iw, rfkill, hdparm, ethtool, inetutils, kmod
2, enableRDW ? true, networkmanager }:
3
4let version = "0.8";
5in stdenv.mkDerivation {
6 inherit enableRDW;
7
8 name = "tlp-${version}";
9
10 src = fetchFromGitHub {
11 owner = "linrunner";
12 repo = "TLP";
13 rev = "${version}";
14 sha256 = "19fvk0xz6i2ryf41akk4jg1c4sb4rcyxdl9fr0w4lja7g76d5zww";
15 };
16
17 makeFlags = [ "DESTDIR=$(out)"
18 "TLP_LIBDIR=/lib"
19 "TLP_SBIN=/bin"
20 "TLP_BIN=/bin"
21 "TLP_NO_INIT=1"
22 "TLP_NO_PMUTILS=1"
23 ];
24
25 nativeBuildInputs = [ makeWrapper ];
26
27 buildInputs = [ perl ];
28
29 paths = with stdenv.lib;
30 concatMapStringsSep ":" (x: "${x}/bin")
31 ([ iw rfkill hdparm ethtool inetutils systemd kmod ]
32 ++ optional enableRDW networkmanager
33 );
34
35 installTargets = [ "install-tlp" ] ++ stdenv.lib.optional enableRDW "install-rdw";
36
37 postInstall = ''
38 for i in $out/bin/* $out/lib/udev/tlp-*; do
39 sed -i "s,/usr/lib/,$out/lib/,g" "$i"
40 wrapProgram "$i" \
41 --prefix PATH : "$paths"
42 done
43 if [ "$enableRDW" = "1" ]; then
44 for i in $out/etc/NetworkManager/dispatcher.d/*; do
45 sed -i "s,/usr/lib/,$out/lib/,g" "$i"
46 wrapProgram "$i" \
47 --prefix PATH : "$paths"
48 done
49 fi
50
51 for i in $out/lib/udev/rules.d/*; do
52 sed -i "s,RUN+=\",\\0$out,g; s,/usr/sbin,/bin,g" "$i"
53 done
54
55 for i in man/*; do
56 install -D $i $out/share/man/man''${i##*.}/$(basename $i)
57 done
58 '';
59
60 passthru = { inherit enableRDW; };
61
62 meta = with stdenv.lib; {
63 description = "Advanced Power Management for Linux";
64 homepage = "http://linrunner.de/en/tlp/docs/tlp-linux-advanced-power-management.html";
65 platforms = platforms.linux;
66 maintainers = with maintainers; [ abbradar ];
67 license = licenses.gpl2Plus;
68 };
69}