32 lines
754 B
Nix
32 lines
754 B
Nix
|
{ pkgs, lib, config, ... }:
|
||
|
|
||
|
let
|
||
|
cfg = config.wakeup;
|
||
|
|
||
|
createServiceName = dev: "toggle-acpi-${dev}";
|
||
|
createService = dev: {
|
||
|
description = "Toggle ${dev} wakeup setting";
|
||
|
serviceConfig.ExecStart = ''
|
||
|
/bin/sh -c "${pkgs.coreutils}/bin/echo ${dev} > /proc/acpi/wakeup"
|
||
|
'';
|
||
|
wantedBy = [ "multi-user.target" ];
|
||
|
};
|
||
|
|
||
|
in {
|
||
|
options.wakeup = with lib; {
|
||
|
toggleDevice = mkOption {
|
||
|
type = types.listOf types.str;
|
||
|
default = [ ];
|
||
|
description = "ACPI devices to toggle as wakeup devices";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
config = {
|
||
|
systemd.services = let
|
||
|
pairs = map (dev:
|
||
|
lib.attrsets.nameValuePair (createServiceName dev) (createService dev))
|
||
|
cfg.toggleDevice;
|
||
|
in builtins.listToAttrs pairs;
|
||
|
};
|
||
|
}
|