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:
parent
01b01f06b4
commit
6c69d82156
@ -120,6 +120,10 @@
|
||||
patches = [
|
||||
# ./patches/gamepadui.patch
|
||||
./patches/dont-break-nix-serve.patch
|
||||
# music-assistant needs a specific custom version of librespot
|
||||
# I tried to use an overlay but my attempts to override the rust package did not work out
|
||||
# despite me following guides and examples specific to rust packages.
|
||||
./patches/librespot-pin.patch
|
||||
];
|
||||
};
|
||||
patchedNixpkgs = nixpkgs.lib.fix (self: (import "${patchedNixpkgsSrc}/flake.nix").outputs { self = nixpkgs; });
|
||||
|
@ -237,7 +237,7 @@
|
||||
globalRedirect = "s0.neet.dev";
|
||||
};
|
||||
}
|
||||
(mkVirtualHost "ha.s0.neet.dev" "http://localhost:8123") # home assistant
|
||||
(mkVirtualHost "ha.s0.neet.dev" "http://localhost:${toString config.services.home-assistant.config.http.server_port}")
|
||||
(mkVirtualHost "esphome.s0.neet.dev" "http://localhost:6052")
|
||||
(mkVirtualHost "zigbee.s0.neet.dev" "http://localhost:55834")
|
||||
{
|
||||
|
@ -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"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
28
patches/librespot-pin.patch
Normal file
28
patches/librespot-pin.patch
Normal file
@ -0,0 +1,28 @@
|
||||
diff --git a/pkgs/applications/audio/librespot/default.nix b/pkgs/applications/audio/librespot/default.nix
|
||||
index 9694c3d0cf4f..ca9502de7ee1 100644
|
||||
--- a/pkgs/applications/audio/librespot/default.nix
|
||||
+++ b/pkgs/applications/audio/librespot/default.nix
|
||||
@@ -25,14 +25,19 @@ rustPlatform.buildRustPackage rec {
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
- owner = "librespot-org";
|
||||
+ owner = "googlebot42";
|
||||
repo = "librespot";
|
||||
- rev = "v${version}";
|
||||
- sha256 = "sha256-dGQDRb7fgIkXelZKa+PdodIs9DxbgEMlVGJjK/hU3Mo=";
|
||||
+ rev = "786cc46199e583f304a84c786acb0a9b37bc3fbd";
|
||||
+ sha256 = "sha256-xaOrqC8yCjF23Tz31RD3CzqZ3xxrDM6ncW1yoovEaGQ=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
- cargoHash = "sha256-SqvJSHkyd1IicT6c4pE96dBJNNodULhpyG14HRGVWCk=";
|
||||
+ cargoHash = "sha256-sUAZgOuBD9CGAy1mRqLRzVnVfxB0DqSCNAc2yzItTCA=";
|
||||
+
|
||||
+ cargoBuildFlags = [
|
||||
+ "--features"
|
||||
+ "passthrough-decoder"
|
||||
+ ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
Loading…
x
Reference in New Issue
Block a user