From 713a69d08357ea813175ae1f9f87888ece2d9b36 Mon Sep 17 00:00:00 2001 From: Daniel Schaefer Date: Sat, 10 Feb 2018 20:26:05 +0700 Subject: [PATCH] nixos/acpid: pass event parameters to handler (#34190) Previously the parameters were just dropped. Now they can be read from within the handler script. An example to show this is added. Makes use of the new writeShellScript function as suggested in: issue #21557 resolves: #21557 --- nixos/modules/services/hardware/acpid.nix | 32 +++++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/nixos/modules/services/hardware/acpid.nix b/nixos/modules/services/hardware/acpid.nix index bb17c8859d8..f69706ebff3 100644 --- a/nixos/modules/services/hardware/acpid.nix +++ b/nixos/modules/services/hardware/acpid.nix @@ -31,7 +31,7 @@ let '' fn=$out/${name} echo "event=${handler.event}" > $fn - echo "action=${pkgs.writeScript "${name}.sh" (concatStringsSep "\n" [ "#! ${pkgs.bash}/bin/sh" handler.action ])}" >> $fn + echo "action=${pkgs.writeShellScriptBin "${name}.sh" handler.action }/bin/${name}.sh '%e'" >> $fn ''; in concatStringsSep "\n" (mapAttrsToList f (canonicalHandlers // config.services.acpid.handlers)) } @@ -69,11 +69,33 @@ in }; }); - description = "Event handlers."; + description = '' + Event handlers. + + + Handler can be a single command. + + ''; default = {}; - example = { mute = { event = "button/mute.*"; action = "amixer set Master toggle"; }; }; - - + example = { + ac-power = { + event = "ac_adapter/*"; + action = '' + vals=($1) # space separated string to array of multiple values + case ''${vals[3]} in + 00000000) + echo unplugged >> /tmp/acpi.log + ;; + 00000001) + echo plugged in >> /tmp/acpi.log + ;; + *) + echo unknown >> /tmp/acpi.log + ;; + esac + ''; + }; + }; }; powerEventCommands = mkOption {