Add support for Home Assistant voice (whisper + piper + cloud llm) and Music Assistant via Spotify by librespot
Music assistant has custom modifications they made to librespot that they haven't bothered to even try to upstream.
Thus, they require a custom librespot. I tried and tried and tried and tried to just override the one already in nixpkgs
but I had trouble doing so despite copying the pattern already shown in nixpkgs for overriding the src of a cargo pkg
(See mopidy) but it just didn't work... Oh well. So I just patch nixpkgs instead with the new source. It works I guess.
This is about where I gave up...
```nix
nixpkgs.overlays = [
(final: prev: {
# Cannot use librespot upstream because music-assistant requires custom changes
# that they never bothered to even try to uptream
librespot = prev.librespot.overrideAttrs (oldAttrs: rec {
src = prev.fetchFromGitHub {
owner = "music-assistant";
repo = "librespot";
rev = "786cc46199e583f304a84c786acb0a9b37bc3fbd";
sha256 = "sha256-xaOrqC8yCjF23Tz31RD3CzqZ3xxrDM6ncW1yoovEaGQ=";
};
cargoDeps = oldAttrs.cargoDeps.overrideAttrs (oldAttrs': {
vendorStaging = oldAttrs'.vendorStaging.overrideAttrs {
outputHash = "sha256-SqvJSHkyd1IicT6c4pE96dBJNNodULhpyG14HRGVWCk=";
};
});
});
})
];
```
This commit is contained in:
@@ -15,7 +15,14 @@
|
||||
];
|
||||
};
|
||||
networking.firewall.allowedTCPPorts = [
|
||||
1883 # mqtt
|
||||
# mqtt
|
||||
1883
|
||||
|
||||
# Must be exposed so some local devices (such as HA voice preview) can pair with home assistant
|
||||
config.services.home-assistant.config.http.server_port
|
||||
|
||||
# Music assistant (must be exposed so local devices can fetch the audio stream from it)
|
||||
8097
|
||||
];
|
||||
|
||||
services.zigbee2mqtt = {
|
||||
@@ -75,12 +82,23 @@
|
||||
"homekit_controller"
|
||||
"zha"
|
||||
"bluetooth"
|
||||
"whisper"
|
||||
"piper"
|
||||
"wyoming"
|
||||
"tts"
|
||||
"music_assistant"
|
||||
"openai_conversation"
|
||||
];
|
||||
config = {
|
||||
# Includes dependencies for a basic setup
|
||||
# https://www.home-assistant.io/integrations/default_config/
|
||||
default_config = { };
|
||||
|
||||
homeassistant = {
|
||||
external_url = "https://ha.s0.neet.dev";
|
||||
internal_url = "http://192.168.1.2:${toString config.services.home-assistant.config.http.server_port}";
|
||||
};
|
||||
|
||||
# Enable reverse proxy support
|
||||
http = {
|
||||
use_x_forwarded_for = true;
|
||||
@@ -105,4 +123,28 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.wyoming.faster-whisper.servers."hass" = {
|
||||
enable = true;
|
||||
uri = "tcp://0.0.0.0:45785";
|
||||
model = "distil-small.en";
|
||||
language = "en";
|
||||
};
|
||||
|
||||
services.wyoming.piper.servers."hass" = {
|
||||
enable = true;
|
||||
uri = "tcp://0.0.0.0:45786";
|
||||
voice = "en_US-joe-medium";
|
||||
};
|
||||
|
||||
services.music-assistant = {
|
||||
enable = true;
|
||||
providers = [
|
||||
"hass"
|
||||
"hass_players"
|
||||
"jellyfin"
|
||||
"radiobrowser"
|
||||
"spotify"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user