{ config, lib, namespace, ... }: with lib; let cfg = config.${namespace}.services.home-assistant; in { config = mkIf cfg.enable { services = { music-assistant = { enable = true; providers = [ # "airplay" # music-assistant: airplay support is missing libraop, a library we will not package because it depends on OpenSSL 1.1. "apple_music" "bluesound" "builtin" "chromecast" "deezer" "dlna" "fanarttv" "filesystem_local" "filesystem_smb" "fully_kiosk" "hass" "hass_players" "jellyfin" "musicbrainz" "opensubsonic" "player_group" "plex" "qobuz" "radiobrowser" "siriusxm" "snapcast" "sonos" "sonos_s1" "soundcloud" "spotify" "template_player_provider" "test" "theaudiodb" "tidal" "tunein" "ytmusic" ]; }; # Enable AirPlay pipewire = { raopOpenFirewall = true; extraConfig.pipewire = { "10-airplay" = { "context.modules" = [ { name = "libpipewire-module-raop-discover"; } ]; }; }; }; }; systemd.services.music-assistant.serviceConfig = { DynamicUser = lib.mkForce false; StateDirectory = "music-assistant"; }; }; }