nixos/modules/wakeup.nix

33 lines
790 B
Nix

{ pkgs, lib, config, ... }:
let
cfg = config.wakeup;
createServiceName = dev: "toggle-acpi-${dev}";
createService = dev: {
description = "Toggle ${dev} wakeup setting";
serviceConfig.Type = "oneshot";
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;
};
}