41 lines
1.2 KiB
Nix
41 lines
1.2 KiB
Nix
{ pkgs, lib, ... }:
|
|
let
|
|
cec = "${pkgs.v4l-utils}/bin/cec-ctl";
|
|
|
|
tvOn = pkgs.writeShellScriptBin "tvOn" ''
|
|
if [ $(${cec} -A | ${pkgs.gnugrep}/bin/grep cec0 | ${pkgs.coreutils}/bin/wc -l) -gt 0 ]; then
|
|
${cec} --tv --skip-info
|
|
${cec} --skip-info --user-control-pressed ui-cmd=power-on-function --to TV
|
|
echo "Turning TV on!"
|
|
fi
|
|
'';
|
|
tvOff = pkgs.writeShellScriptBin "tvOff" ''
|
|
if [ $(${cec} -A | ${pkgs.gnugrep}/bin/grep cec0 | ${pkgs.coreutils}/bin/wc -l) -gt 0 ]; then
|
|
${cec} -C --skip-info
|
|
${cec} --tv --skip-info
|
|
${cec} --standby --skip-info --to TV
|
|
echo "Turning TV off!"
|
|
${pkgs.coreutils}/bin/sleep 2
|
|
fi
|
|
'';
|
|
in
|
|
{
|
|
environment.systemPackages = with pkgs; [
|
|
tvOff
|
|
tvOn
|
|
];
|
|
# after suspend, do `cec-ctl -A | grep cec0 | wc -l`, if >0, do `cec-ctl --standby --to TV`
|
|
# similar on wakeup, if present send `cec-ctl --user-control-pressed ui-cmd=power-on-function --to TV`
|
|
environment.etc."systemd/system-sleep/sleep-turn-tv-off-on.sh".source =
|
|
pkgs.writeShellScript "post-sleep-turn-tv-off.sh" ''
|
|
case $1/$2 in
|
|
pre/*)
|
|
${tvOff}/bin/tvOff
|
|
;;
|
|
post/*)
|
|
${tvOn}/bin/tvOn
|
|
;;
|
|
esac
|
|
'';
|
|
}
|