nixpkgs/modules/config/power-management.nix
Eelco Dolstra 86d53a5b8b * Load the cpufreq modules, since these are not loaded automatically
by udev.  The kernel can load governors on demand, but if they are
  not loaded, HAL doesn't know about them and they don't show up in
  the KDE System Settings.

svn path=/nixos/trunk/; revision=22567
2010-07-12 17:50:02 +00:00

78 lines
1.6 KiB
Nix

{ config, pkgs, ... }:
with pkgs.lib;
let
cfg = config.powerManagement;
sleepHook = pkgs.writeScript "sleep-hook.sh"
''
#! ${pkgs.stdenv.shell}
action="$1"
if [ "$action" = "resume" ]; then
${cfg.resumeCommands}
${cfg.powerUpCommands}
fi
'';
in
{
###### interface
options = {
powerManagement = {
enable = mkOption {
default = false;
description =
''
Whether to enable power management. This includes support
for suspend-to-RAM and powersave features on laptops.
'';
};
resumeCommands = mkOption {
default = "";
description = "Commands executed after the system resumes from suspend-to-RAM.";
};
powerUpCommands = mkOption {
default = "";
example = "${pkgs.hdparm}/sbin/hdparm -B 255 /dev/sda";
description =
''
Commands executed when the machine powers up. That is,
they're executed both when the system first boots and when
it resumes from suspend or hibernation.
'';
};
};
};
###### implementation
config = mkIf cfg.enable {
# Enable the ACPI daemon. Not sure whether this is essential.
services.acpid.enable = true;
environment.systemPackages = [ pkgs.pmutils ];
environment.etc = singleton
{ source = sleepHook;
target = "pm/sleep.d/00sleep-hook";
};
boot.kernelModules = [ "acpi_cpufreq" "cpufreq_performance" "cpufreq_powersave" "cpufreq_ondemand" ];
};
}