73 lines
1.5 KiB
Nix
73 lines
1.5 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
self,
|
|
...
|
|
}: let
|
|
inherit (lib) getExe;
|
|
|
|
turnOnUE = pkgs.writeShellApplication {
|
|
name = "turnOnUE";
|
|
|
|
runtimeInputs = [config.hardware.bluetooth.package];
|
|
|
|
text = ''
|
|
cmd=0x0003
|
|
bt_device_addr=88:C6:26:93:4B:77
|
|
|
|
# This is the MAC address on the first line of `bluetootctl show`
|
|
# without the `:` and with `01` added at the end
|
|
bt_controller_addr=E848B8C8200001
|
|
|
|
exec gatttool -b $bt_device_addr --char-write-req --handle=$cmd --value=$bt_controller_addr
|
|
'';
|
|
};
|
|
in {
|
|
environment.systemPackages = [turnOnUE];
|
|
|
|
services.home-assistant = {
|
|
customComponents = builtins.attrValues {
|
|
inherit
|
|
(self.legacyPackages.${pkgs.system}.hass-components)
|
|
spotifyplus
|
|
;
|
|
};
|
|
|
|
extraComponents = [
|
|
"mpd"
|
|
|
|
# BT components
|
|
"ibeacon"
|
|
"led_ble"
|
|
"kegtron"
|
|
"xiaomi_ble"
|
|
];
|
|
|
|
# Turn On the speaker automatically when openwakeword is used
|
|
config = {
|
|
shell_command.turn_on_ue = getExe turnOnUE;
|
|
|
|
automation = [
|
|
{
|
|
alias = "Turn On UE";
|
|
mode = "single";
|
|
trigger = [
|
|
{
|
|
platform = "state";
|
|
entity_id = "wake_word.openwakeword";
|
|
}
|
|
];
|
|
condition = [];
|
|
action = [
|
|
{
|
|
action = "shell_command.turn_on_ue";
|
|
metadata = {};
|
|
data = {};
|
|
}
|
|
];
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|