commit
fde45d217e
|
@ -149,6 +149,7 @@
|
||||||
./services/hardware/pommed.nix
|
./services/hardware/pommed.nix
|
||||||
./services/hardware/sane.nix
|
./services/hardware/sane.nix
|
||||||
./services/hardware/tcsd.nix
|
./services/hardware/tcsd.nix
|
||||||
|
./services/hardware/tlp.nix
|
||||||
./services/hardware/thinkfan.nix
|
./services/hardware/thinkfan.nix
|
||||||
./services/hardware/udev.nix
|
./services/hardware/udev.nix
|
||||||
./services/hardware/udisks2.nix
|
./services/hardware/udisks2.nix
|
||||||
|
|
93
nixos/modules/services/hardware/tlp.nix
Normal file
93
nixos/modules/services/hardware/tlp.nix
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
cfg = config.services.tlp;
|
||||||
|
|
||||||
|
tlp = pkgs.tlp.override { kmod = config.system.sbin.modprobe; };
|
||||||
|
|
||||||
|
confFile = pkgs.writeText "tlp" (builtins.readFile "${tlp}/etc/default/tlp" + cfg.extraConfig);
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
###### interface
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
services.tlp = {
|
||||||
|
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Whether to enable the TLP daemon.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "";
|
||||||
|
description = "Additional configuration variables for TLP";
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
systemd.services = {
|
||||||
|
tlp = {
|
||||||
|
description = "TLP system startup/shutdown";
|
||||||
|
|
||||||
|
after = [ "multi-user.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
before = [ "shutdown.target" ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart = "${tlp}/bin/tlp init start";
|
||||||
|
ExecStop = "${tlp}/bin/tlp init stop";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
tlp-sleep = {
|
||||||
|
description = "TLP suspend/resume";
|
||||||
|
|
||||||
|
wantedBy = [ "sleep.target" ];
|
||||||
|
before = [ "sleep.target" ];
|
||||||
|
|
||||||
|
unitConfig = {
|
||||||
|
StopWhenUnneeded = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart = "${tlp}/bin/tlp suspend";
|
||||||
|
ExecStop = "${tlp}/bin/tlp resume";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.udev.packages = [ tlp ];
|
||||||
|
|
||||||
|
environment.etc = [{ source = confFile;
|
||||||
|
target = "default/tlp";
|
||||||
|
}
|
||||||
|
] ++ optional tlp.enableRDW {
|
||||||
|
source = "${tlp}/etc/NetworkManager/dispatcher.d/99tlp-rdw-nm";
|
||||||
|
target = "NetworkManager/dispatcher.d/99tlp-rdw-nm";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [ tlp ];
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
65
pkgs/tools/misc/tlp/default.nix
Normal file
65
pkgs/tools/misc/tlp/default.nix
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
{ stdenv, fetchFromGitHub, makeWrapper, perl, systemd, iw, rfkill, hdparm, ethtool, inetutils, kmod
|
||||||
|
, enableRDW ? true, networkmanager }:
|
||||||
|
|
||||||
|
let version = "0.6";
|
||||||
|
in stdenv.mkDerivation {
|
||||||
|
inherit enableRDW;
|
||||||
|
|
||||||
|
name = "tlp-${version}";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "linrunner";
|
||||||
|
repo = "TLP";
|
||||||
|
rev = "${version}";
|
||||||
|
sha256 = "1kfm6x5w9vica2i13vfckza4fad4wv8ivr40fws3qa6d5jbyx0fy";
|
||||||
|
};
|
||||||
|
|
||||||
|
makeFlags = [ "DESTDIR=$(out)"
|
||||||
|
"TLP_LIBDIR=/lib"
|
||||||
|
"TLP_SBIN=/bin"
|
||||||
|
"TLP_BIN=/bin"
|
||||||
|
"TLP_NO_INIT=1"
|
||||||
|
"TLP_NO_PMUTILS=1"
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
||||||
|
buildInputs = [ perl ];
|
||||||
|
|
||||||
|
paths = with stdenv.lib;
|
||||||
|
concatMapStringsSep ":" (x: "${x}/bin")
|
||||||
|
([ iw rfkill hdparm ethtool inetutils systemd kmod ]
|
||||||
|
++ optional enableRDW networkmanager
|
||||||
|
);
|
||||||
|
|
||||||
|
installTargets = [ "install-tlp" ] ++ stdenv.lib.optional enableRDW "install-rdw";
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
for i in $out/bin/* $out/lib/udev/tlp-*; do
|
||||||
|
sed -i "s,/usr/lib/,$out/lib/,g" "$i"
|
||||||
|
wrapProgram "$i" \
|
||||||
|
--prefix PATH : "$paths"
|
||||||
|
done
|
||||||
|
if [ "$enableRDW" = "1" ]; then
|
||||||
|
for i in $out/etc/NetworkManager/dispatcher.d/*; do
|
||||||
|
sed -i "s,/usr/lib/,$out/lib/,g" "$i"
|
||||||
|
wrapProgram "$i" \
|
||||||
|
--prefix PATH : "$paths"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
for i in $out/lib/udev/rules.d/*; do
|
||||||
|
sed -i "s,RUN+=\",\\0$out,g; s,/usr/sbin,/bin,g" "$i"
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
|
passthru = { inherit enableRDW; };
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Advanced Power Management for Linux";
|
||||||
|
homepage = "http://linrunner.de/en/tlp/docs/tlp-linux-advanced-power-management.html";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ abbradar ];
|
||||||
|
license = licenses.gpl2Plus;
|
||||||
|
};
|
||||||
|
}
|
|
@ -11210,6 +11210,10 @@ let
|
||||||
|
|
||||||
tla = callPackage ../applications/version-management/arch { };
|
tla = callPackage ../applications/version-management/arch { };
|
||||||
|
|
||||||
|
tlp = callPackage ../tools/misc/tlp {
|
||||||
|
enableRDW = config.networking.networkmanager.enable or false;
|
||||||
|
};
|
||||||
|
|
||||||
todo-txt-cli = callPackage ../applications/office/todo.txt-cli { };
|
todo-txt-cli = callPackage ../applications/office/todo.txt-cli { };
|
||||||
|
|
||||||
tomahawk = callPackage ../applications/audio/tomahawk {
|
tomahawk = callPackage ../applications/audio/tomahawk {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user