mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2024-12-26 21:33:03 +03:00
commit
fde45d217e
@ -149,6 +149,7 @@
|
||||
./services/hardware/pommed.nix
|
||||
./services/hardware/sane.nix
|
||||
./services/hardware/tcsd.nix
|
||||
./services/hardware/tlp.nix
|
||||
./services/hardware/thinkfan.nix
|
||||
./services/hardware/udev.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 { };
|
||||
|
||||
tlp = callPackage ../tools/misc/tlp {
|
||||
enableRDW = config.networking.networkmanager.enable or false;
|
||||
};
|
||||
|
||||
todo-txt-cli = callPackage ../applications/office/todo.txt-cli { };
|
||||
|
||||
tomahawk = callPackage ../applications/audio/tomahawk {
|
||||
|
Loading…
Reference in New Issue
Block a user