11 python = python3.override {
13 packageOverrides = self: super: {
14 music-assistant-frontend = self.callPackage ./frontend.nix { };
18 providerPackages = (import ./providers.nix).providers;
19 providerNames = lib.attrNames providerPackages;
20 providerDependencies = lib.concatMap (provider: (providerPackages.${provider} python.pkgs)) providers;
22 pythonPath = python.pkgs.makePythonPath providerDependencies;
25 python.pkgs.buildPythonApplication rec {
26 pname = "music-assistant";
30 src = fetchFromGitHub {
31 owner = "music-assistant";
33 rev = "refs/tags/${version}";
34 hash = "sha256-q71LczFsJAvZaWCQg4Lgzg2XX4XDFvA3x255Re00D9Q=";
40 ffmpeg = "${lib.getBin ffmpeg-headless}/bin/ffmpeg";
41 ffprobe = "${lib.getBin ffmpeg-headless}/bin/ffprobe";
46 substituteInPlace pyproject.toml \
47 --replace-fail "0.0.0" "${version}"
50 build-system = with python.pkgs; [
54 dependencies = with python.pkgs; [
58 ] ++ optional-dependencies.server;
60 optional-dependencies = with python.pkgs; {
77 music-assistant-frontend
88 nativeCheckInputs = with python.pkgs; [
96 ++ lib.flatten (lib.attrValues optional-dependencies);
100 "--deselect=tests/server/providers/jellyfin/test_init.py::test_initial_sync"
103 pythonImportsCheck = [ "music_assistant" ];
112 tests = nixosTests.music-assistant;
116 changelog = "https://github.com/music-assistant/server/releases/tag/${version}";
117 description = "Music Assistant is a music library manager for various music sources which can easily stream to a wide range of supported players";
119 Music Assistant is a free, opensource Media library manager that connects to your streaming services and a wide
120 range of connected speakers. The server is the beating heart, the core of Music Assistant and must run on an
121 always-on device like a Raspberry Pi, a NAS or an Intel NUC or alike.
123 homepage = "https://github.com/music-assistant/server";
124 license = licenses.asl20;
125 maintainers = with maintainers; [ hexa ];
126 mainProgram = "mass";