feat(hass): init spotifyd config
All checks were successful
Discord / discord commits (push) Has been skipped

This commit is contained in:
matt1432 2024-09-18 15:26:17 -04:00
parent 7fa5032311
commit a58ff9e47a
4 changed files with 123 additions and 87 deletions

View file

@ -1,5 +1,6 @@
{...}: { {...}: {
imports = [ imports = [
./home-assistant ./home-assistant
./music
]; ];
} }

View file

@ -4,29 +4,19 @@
pkgs, pkgs,
... ...
}: { }: {
# Setup Bluetooth
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General = {
DiscoverableTimeout = 0;
Experimental = true;
KernelExperimental = true;
};
Policy.AutoEnable = "true";
};
};
# Have pulseaudio.service itself start at boot but after bluetooth
# so bluetooth accepts sound connections from the start.
systemd.user.services.pulseaudio.after = ["bluetooth.service"];
systemd.user.targets.default.wants = ["pulseaudio.service"];
# Turn On the speaker automatically when openwakeword is used # Turn On the speaker automatically when openwakeword is used
services.home-assistant.config = { services.home-assistant = {
extraComponents = [
"mpd"
# BT components
"ibeacon"
"led_ble"
"kegtron"
"xiaomi_ble"
];
config = {
shell_command.turn_on_ue = lib.getExe (pkgs.writeShellApplication { shell_command.turn_on_ue = lib.getExe (pkgs.writeShellApplication {
name = "turnOnUE"; name = "turnOnUE";
@ -43,6 +33,7 @@
exec gatttool -b $bt_device_addr --char-write-req --handle=$cmd --value=$bt_controller_addr exec gatttool -b $bt_device_addr --char-write-req --handle=$cmd --value=$bt_controller_addr
''; '';
}); });
automation = [ automation = [
{ {
alias = "Turn On UE"; alias = "Turn On UE";
@ -64,41 +55,5 @@
} }
]; ];
}; };
# Allow pulseaudio to be managed by MPD
hardware.pulseaudio = {
enable = true;
extraConfig = ''
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
'';
};
# Setup MPD
services.home-assistant.extraComponents = [
"mpd"
# BT components
"ibeacon"
"led_ble"
"kegtron"
"xiaomi_ble"
];
services.mpd = {
enable = true;
network = {
listenAddress = "127.0.0.1";
port = 6600;
};
extraConfig = ''
audio_output {
type "pulse"
name "UE Boom 2"
sink "bluez_sink.88_C6_26_93_4B_77.a2dp_sink"
server "127.0.0.1"
}
'';
}; };
} }

View file

@ -0,0 +1,80 @@
{
config,
lib,
pkgs,
...
}: {
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General = {
DiscoverableTimeout = 0;
Experimental = true;
KernelExperimental = true;
};
Policy.AutoEnable = "true";
};
};
# Have pulseaudio.service itself start at boot but after bluetooth
# so bluetooth accepts sound connections from the start.
systemd.user.services.pulseaudio.after = ["bluetooth.service"];
systemd.user.targets.default.wants = ["pulseaudio.service"];
# Allow pulseaudio to be managed by MPD
hardware.pulseaudio = {
enable = true;
extraConfig = ''
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1
'';
};
services = {
mpd = {
enable = true;
network = {
listenAddress = "127.0.0.1";
port = 6600;
};
extraConfig = ''
audio_output {
type "pulse"
name "UE Boom 2"
sink "bluez_sink.88_C6_26_93_4B_77.a2dp_sink"
server "127.0.0.1"
}
'';
};
spotifyd = {
enable = true;
settings.global = let
cacheDir = "/etc/spotifyd";
in {
device_name = config.networking.hostName;
device_type = "speaker";
zeroconf_port = 33797;
cache_path = cacheDir;
username_cmd = "${lib.getExe pkgs.jq} -r .username ${cacheDir}/credentials.json";
autoplay = false;
backend = "pulseaudio";
bitrate = 320;
no_audio_cache = true;
volume_normalisation = false;
};
};
};
environment.etc."spotifyd/credentials.json" = {
source = config.sops.secrets.spotifyd.path;
};
}

Binary file not shown.