diff options
Diffstat (limited to 'nixos/modules/services/hardware/acpid.nix')
-rw-r--r-- | nixos/modules/services/hardware/acpid.nix | 117 |
1 files changed, 106 insertions, 11 deletions
diff --git a/nixos/modules/services/hardware/acpid.nix b/nixos/modules/services/hardware/acpid.nix index a20b1a1ee3a..48b2b6be09e 100644 --- a/nixos/modules/services/hardware/acpid.nix +++ b/nixos/modules/services/hardware/acpid.nix @@ -20,7 +20,7 @@ let } ''; - events = [powerEvent lidEvent acEvent]; + events = [powerEvent lidEvent acEvent muteEvent volumeDownEvent volumeUpEvent cdPlayEvent cdNextEvent cdPrevEvent]; # Called when the power button is pressed. powerEvent = @@ -55,6 +55,61 @@ let ''; }; + muteEvent = { + name = "mute"; + event = "button/mute.*"; + action = '' + #! ${pkgs.bash}/bin/sh + ${config.services.acpid.muteCommands} + ''; + }; + + volumeDownEvent = { + name = "volume-down"; + event = "button/volumedown.*"; + action = '' + #! ${pkgs.bash}/bin/sh + ${config.services.acpid.volumeDownEventCommands} + ''; + }; + + volumeUpEvent = { + name = "volume-up"; + event = "button/volumeup.*"; + action = '' + #! ${pkgs.bash}/bin/sh + ${config.services.acpid.volumeUpEventCommands} + ''; + }; + + cdPlayEvent = { + name = "cd-play"; + event = "cd/play.*"; + action = '' + #! ${pkgs.bash}/bin/sh + ${config.services.acpid.cdPlayEventCommands} + ''; + }; + + cdNextEvent = { + name = "cd-next"; + event = "cd/next.*"; + action = '' + #! ${pkgs.bash}/bin/sh + ${config.services.acpid.cdNextEventCommands} + ''; + }; + + cdPrevEvent = { + name = "cd-prev"; + event = "cd/prev.*"; + action = '' + #! ${pkgs.bash}/bin/sh + ${config.services.acpid.cdPrevEventCommands} + ''; + }; + + in { @@ -89,6 +144,42 @@ in description = "Shell commands to execute on an ac_adapter.* event."; }; + muteCommands = mkOption { + type = types.lines; + default = ""; + description = "Shell commands to execute on an button/mute.* event."; + }; + + volumeDownEventCommands = mkOption { + type = types.lines; + default = ""; + description = "Shell commands to execute on an button/volumedown.* event."; + }; + + volumeUpEventCommands = mkOption { + type = types.lines; + default = ""; + description = "Shell commands to execute on an button/volumeup.* event."; + }; + + cdPlayEventCommands = mkOption { + type = types.lines; + default = ""; + description = "Shell commands to execute on an cd/play.* event."; + }; + + cdNextEventCommands = mkOption { + type = types.lines; + default = ""; + description = "Shell commands to execute on an cd/next.* event."; + }; + + cdPrevEventCommands = mkOption { + type = types.lines; + default = ""; + description = "Shell commands to execute on an cd/prev.* event."; + }; + }; }; @@ -98,22 +189,26 @@ in config = mkIf config.services.acpid.enable { - jobs.acpid = - { description = "ACPI Daemon"; - - wantedBy = [ "multi-user.target" ]; - after = [ "systemd-udev-settle.service" ]; + systemd.services.acpid = { + description = "ACPI Daemon"; - path = [ pkgs.acpid ]; + wantedBy = [ "multi-user.target" ]; + after = [ "systemd-udev-settle.service" ]; - daemonType = "fork"; + path = [ pkgs.acpid ]; - exec = "acpid --confdir ${acpiConfDir}"; + serviceConfig = { + Type = "forking"; + }; - unitConfig.ConditionVirtualization = "!systemd-nspawn"; - unitConfig.ConditionPathExists = [ "/proc/acpi" ]; + unitConfig = { + ConditionVirtualization = "!systemd-nspawn"; + ConditionPathExists = [ "/proc/acpi" ]; }; + script = "acpid --confdir ${acpiConfDir}"; + }; + }; } |