music-assistant: track builtin providers to provide a smoother out of the box experience
Also see https://github.com/music-assistant/models/blob/1.1.119/music_assistant_models/provider.py#L35
This commit is contained in:
@@ -107,13 +107,17 @@ in
|
||||
];
|
||||
};
|
||||
|
||||
services.avahi = lib.mkIf (lib.elem "airplay_receiver" cfg.providers) {
|
||||
enable = true;
|
||||
openFirewall = lib.mkIf cfg.openFirewall true;
|
||||
publish = {
|
||||
services = {
|
||||
avahi = lib.mkIf (lib.elem "airplay_receiver" cfg.providers) {
|
||||
enable = true;
|
||||
userServices = true;
|
||||
openFirewall = lib.mkIf cfg.openFirewall true;
|
||||
publish = {
|
||||
enable = true;
|
||||
userServices = true;
|
||||
};
|
||||
};
|
||||
|
||||
music-assistant.providers = cfg.package.providersBuiltins;
|
||||
};
|
||||
|
||||
systemd.services.music-assistant = {
|
||||
|
||||
@@ -24,7 +24,8 @@ let
|
||||
}
|
||||
);
|
||||
|
||||
providerPackages = (import ./providers.nix).providers;
|
||||
providersMeta = import ./providers.nix;
|
||||
providerPackages = providersMeta.providers;
|
||||
providerNames = lib.attrNames providerPackages;
|
||||
providerDependencies = lib.concatMap (
|
||||
provider: (providerPackages.${provider} pythonPackages)
|
||||
@@ -210,6 +211,7 @@ pythonPackages.buildPythonApplication rec {
|
||||
providerPackages
|
||||
providerNames
|
||||
;
|
||||
providersBuiltins = providersMeta.builtins;
|
||||
tests = nixosTests.music-assistant;
|
||||
};
|
||||
|
||||
|
||||
@@ -24,6 +24,11 @@ TEMPLATE = """# Do not edit manually, run ./update-providers.py
|
||||
|
||||
{
|
||||
version = "{{ version }}";
|
||||
builtins = [
|
||||
{%- for builtin in builtins | sort %}
|
||||
"{{ builtin }}"
|
||||
{%- endfor %}
|
||||
];
|
||||
providers = {
|
||||
{%- for provider in providers | sort(attribute='domain') %}
|
||||
{{ provider.domain }} = {% if provider.available %}ps: with ps;{% else %}ps:{% endif %} [
|
||||
@@ -197,7 +202,7 @@ class Provider:
|
||||
return hash(self.domain)
|
||||
|
||||
|
||||
async def resolve_providers(manifests) -> Set:
|
||||
async def resolve_providers(manifests) -> tuple[Set, Set]:
|
||||
errors = []
|
||||
providers = set()
|
||||
for manifest in manifests:
|
||||
@@ -227,22 +232,27 @@ async def resolve_providers(manifests) -> Set:
|
||||
if errors:
|
||||
print("\n - ", end="")
|
||||
print("\n - ".join(errors))
|
||||
return providers
|
||||
|
||||
builtins = {manifest.domain for manifest in manifests if manifest.builtin}
|
||||
|
||||
return providers, builtins
|
||||
|
||||
|
||||
def render(outpath: str, version: str, providers: Set):
|
||||
def render(outpath: str, version: str, providers: Set, builtins: Set):
|
||||
env = Environment()
|
||||
template = env.from_string(TEMPLATE)
|
||||
template.stream(version=version, providers=providers).dump(outpath)
|
||||
template.stream(version=version, providers=providers, builtins=builtins).dump(
|
||||
outpath
|
||||
)
|
||||
|
||||
|
||||
async def main():
|
||||
version: str = cast(str, await Nix.eval("music-assistant.version"))
|
||||
manifests = await get_provider_manifests(version)
|
||||
providers = await resolve_providers(manifests)
|
||||
providers, builtins = await resolve_providers(manifests)
|
||||
|
||||
outpath = os.path.join(ROOT, "pkgs/by-name/mu/music-assistant/providers.nix")
|
||||
render(outpath, version, providers)
|
||||
render(outpath, version, providers, builtins)
|
||||
|
||||
run_sync(["nixfmt", outpath])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user