summary refs log tree commit diff
path: root/nixos/modules
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2015-01-02 18:12:11 +0300
committerNikolay Amiantov <ab@fmap.me>2015-01-24 02:56:21 +0300
commitb7b3a0972d80b6e5d4c8430972c72ea648224b1c (patch)
tree0fbab22a576e8cff88881272ee48f72310c743af /nixos/modules
parent0c9c74de19847f5524ccf589a76e6a943e7e3bef (diff)
downloadnixpkgs-b7b3a0972d80b6e5d4c8430972c72ea648224b1c.tar
nixpkgs-b7b3a0972d80b6e5d4c8430972c72ea648224b1c.tar.gz
nixpkgs-b7b3a0972d80b6e5d4c8430972c72ea648224b1c.tar.bz2
nixpkgs-b7b3a0972d80b6e5d4c8430972c72ea648224b1c.tar.lz
nixpkgs-b7b3a0972d80b6e5d4c8430972c72ea648224b1c.tar.xz
nixpkgs-b7b3a0972d80b6e5d4c8430972c72ea648224b1c.tar.zst
nixpkgs-b7b3a0972d80b6e5d4c8430972c72ea648224b1c.zip
nixos/tlp: add service
Diffstat (limited to 'nixos/modules')
-rwxr-xr-xnixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/hardware/tlp.nix93
2 files changed, 94 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 503dd87ad4d..fd631ac2f28 100755
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -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
diff --git a/nixos/modules/services/hardware/tlp.nix b/nixos/modules/services/hardware/tlp.nix
new file mode 100644
index 00000000000..f221c82e2ed
--- /dev/null
+++ b/nixos/modules/services/hardware/tlp.nix
@@ -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 ];
+
+  };
+
+}