From 2060f4a70354a8a12b92262f67b4a14cc8c19f81 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 26 May 2026 17:07:13 +0300 Subject: [PATCH 1/9] musescore: sort inputs (cherry picked from commit 52dfdc5e51838b2b1a85831fb7823e71b4a6c83b) --- pkgs/by-name/mu/musescore/package.nix | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/pkgs/by-name/mu/musescore/package.nix b/pkgs/by-name/mu/musescore/package.nix index 367fc7cedc99..a689240bf375 100644 --- a/pkgs/by-name/mu/musescore/package.nix +++ b/pkgs/by-name/mu/musescore/package.nix @@ -5,26 +5,26 @@ # nativeBuildInputs cmake, - wrapGAppsHook3, - pkg-config, ninja, + pkg-config, + wrapGAppsHook3, # buildInputs alsa-lib, alsa-plugins, + flac, freetype, + kdePackages, libjack2, libogg, + libopus, + libopusenc, libpulseaudio, libsndfile, libvorbis, + mnxdom, portaudio, portmidi, - flac, - libopusenc, - libopus, - mnxdom, - kdePackages, # passthru tests nixosTests, @@ -87,11 +87,11 @@ stdenv.mkDerivation (finalAttrs: { dontWrapGApps = true; nativeBuildInputs = [ - kdePackages.wrapQtAppsHook cmake kdePackages.qttools - pkg-config + kdePackages.wrapQtAppsHook ninja + pkg-config ] ++ lib.optionals stdenv.hostPlatform.isLinux [ # Since https://github.com/musescore/MuseScore/pull/13847/commits/685ac998 @@ -100,24 +100,24 @@ stdenv.mkDerivation (finalAttrs: { ]; buildInputs = [ - libjack2 + flac freetype + kdePackages.qt5compat + kdePackages.qtbase + kdePackages.qtdeclarative + kdePackages.qtnetworkauth + kdePackages.qtscxml + kdePackages.qtsvg + libjack2 libogg + libopus + libopusenc libpulseaudio libsndfile libvorbis + mnxdom portaudio portmidi - flac - libopusenc - libopus - mnxdom - kdePackages.qtbase - kdePackages.qtdeclarative - kdePackages.qt5compat - kdePackages.qtsvg - kdePackages.qtscxml - kdePackages.qtnetworkauth ] ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib From 1a1c2fb0a94bfa5237b9d54b6e546934c4433f58 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 26 May 2026 17:02:38 +0300 Subject: [PATCH 2/9] musescore: 4.7.0 -> 4.7.2 Diff: https://github.com/musescore/MuseScore/compare/v4.7.0...v4.7.2 (cherry picked from commit 4772e10d2371b5a681a926a3792f69ba7d3c6fa6) --- pkgs/by-name/mu/musescore/package.nix | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mu/musescore/package.nix b/pkgs/by-name/mu/musescore/package.nix index a689240bf375..80d57dbef7e7 100644 --- a/pkgs/by-name/mu/musescore/package.nix +++ b/pkgs/by-name/mu/musescore/package.nix @@ -15,6 +15,7 @@ flac, freetype, kdePackages, + lame, libjack2, libogg, libopus, @@ -25,6 +26,8 @@ mnxdom, portaudio, portmidi, + pugixml, + utf8cpp, # passthru tests nixosTests, @@ -32,13 +35,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "musescore"; - version = "4.7.0"; + version = "4.7.2"; src = fetchFromGitHub { owner = "musescore"; repo = "MuseScore"; tag = "v${finalAttrs.version}"; - hash = "sha256-AEYZWkcjqB2pW+oBow2oMX1HQn4kRaTBBxhyxIbG0a4="; + hash = "sha256-7oA+cC5/nOEM2zpFgM13zlBIoc3AB//Ovc+dU1c1r6M="; }; cmakeFlags = [ @@ -59,6 +62,9 @@ stdenv.mkDerivation (finalAttrs: { # Implies also OPUS "OPUSENC" "FLAC" + "PUGIXML" + "LAME" + "UTF8CPP" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ # https://github.com/musescore/MuseScore/issues/33467 @@ -108,6 +114,7 @@ stdenv.mkDerivation (finalAttrs: { kdePackages.qtnetworkauth kdePackages.qtscxml kdePackages.qtsvg + lame libjack2 libogg libopus @@ -118,6 +125,8 @@ stdenv.mkDerivation (finalAttrs: { mnxdom portaudio portmidi + pugixml + utf8cpp ] ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib From 501066607edae8584a2bc921b5c04ddc9d5ea184 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 2 Jun 2026 13:13:31 +0300 Subject: [PATCH 3/9] musescore: fix passthru.tests to be an attrset (cherry picked from commit dd5470e7851fa4577ebbe305580ddf5bfecda4a8) --- pkgs/by-name/mu/musescore/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/mu/musescore/package.nix b/pkgs/by-name/mu/musescore/package.nix index 80d57dbef7e7..2f1cbca3f7d3 100644 --- a/pkgs/by-name/mu/musescore/package.nix +++ b/pkgs/by-name/mu/musescore/package.nix @@ -166,7 +166,7 @@ stdenv.mkDerivation (finalAttrs: { # Don't run bundled upstreams tests, as they require a running X window system. doCheck = false; - passthru.tests = nixosTests.musescore; + passthru.tests.nixos = nixosTests.musescore; meta = { description = "Music notation and composition software"; From efeb96571be6614c2fd5a48e333069291cb73ab5 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 2 Jun 2026 17:43:52 +0300 Subject: [PATCH 4/9] musescore: fix qtdeclarative crash See https://github.com/musescore/MuseScore/issues/33015 Fixes #526825 until PR #527323 reaches branch `master`. (cherry picked from commit e9ac5f0e92c42800ac6ef411f7fbce41b5ce4e41) --- pkgs/by-name/mu/musescore/package.nix | 66 +++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 9 deletions(-) diff --git a/pkgs/by-name/mu/musescore/package.nix b/pkgs/by-name/mu/musescore/package.nix index 2f1cbca3f7d3..d3ac130aa3d3 100644 --- a/pkgs/by-name/mu/musescore/package.nix +++ b/pkgs/by-name/mu/musescore/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchFromGitHub, + fetchpatch, # nativeBuildInputs cmake, @@ -33,6 +34,53 @@ nixosTests, }: +let + # TODO(@doronbehar): Contribute this one day to lib/? See: + # https://discourse.nixos.org/t/rfc-nix-function-that-overrides-a-scope-with-automatic-inheritance-propagation/78025 + overrideScopeFully = + s: scopeOverrideFunc: + let + partiallyOverriddenScope = s.overrideScope scopeOverrideFunc; + directlyOverriddenAttrs = builtins.attrNames (scopeOverrideFunc partiallyOverriddenScope s); + in + builtins.mapAttrs ( + attrName: pkg: + pkg.override ( + lib.pipe directlyOverriddenAttrs [ + (builtins.filter ( + oAttr: + # Don't include in this filter the attribute `attrName` from the + # full scope, if it is already part of the _directly_ overridden + # attributes. + !(builtins.elem attrName directlyOverriddenAttrs) + && pkg ? override + # Continue with the creation of the `.override` arguments only for + # overridden attributes (`oAttr`) which are possible arguments to the + # `.override` function of the `pkg` at hand. + && pkg.override.__functionArgs ? ${oAttr} + )) + # Generate the `.override` argument using the attribute names `aNames` + (aNames: lib.genAttrs aNames (oAttr: partiallyOverriddenScope.${oAttr})) + ] + ) + ) partiallyOverriddenScope; + kdePackages' = overrideScopeFully kdePackages ( + self: super: { + # Fix for: https://github.com/NixOS/nixpkgs/issues/526825 + # reported upstream at: https://github.com/musescore/MuseScore/issues/33015 + qtdeclarative = super.qtdeclarative.overrideAttrs ( + new: old: { + patches = old.patches ++ [ + (fetchpatch { + url = "https://github.com/qt/qtdeclarative/commit/9d4d376726a6ce15c429128dc65b927e411e40da.patch"; + hash = "sha256-XhfliF5wZuN4/E55f8hfipIRjxBe9V7vL1cgn5p4xqA="; + }) + ]; + } + ); + } + ); +in stdenv.mkDerivation (finalAttrs: { pname = "musescore"; version = "4.7.2"; @@ -94,8 +142,8 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake - kdePackages.qttools - kdePackages.wrapQtAppsHook + kdePackages'.qttools + kdePackages'.wrapQtAppsHook ninja pkg-config ] @@ -108,12 +156,12 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ flac freetype - kdePackages.qt5compat - kdePackages.qtbase - kdePackages.qtdeclarative - kdePackages.qtnetworkauth - kdePackages.qtscxml - kdePackages.qtsvg + kdePackages'.qt5compat + kdePackages'.qtbase + kdePackages'.qtdeclarative + kdePackages'.qtnetworkauth + kdePackages'.qtscxml + kdePackages'.qtsvg lame libjack2 libogg @@ -130,7 +178,7 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib - kdePackages.qtwayland + kdePackages'.qtwayland ]; postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' From e9c1dd1bf81ebc1f168d401db131dc7e29392076 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 9 Jun 2026 13:26:15 +0300 Subject: [PATCH 5/9] musescore: make it find ffmpeg automatically (video export) Fixes #529852. (cherry picked from commit ea541685e86fd4ac462f4c114d323f1370354c0d) --- pkgs/by-name/mu/musescore/package.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/by-name/mu/musescore/package.nix b/pkgs/by-name/mu/musescore/package.nix index d3ac130aa3d3..162e096e3fee 100644 --- a/pkgs/by-name/mu/musescore/package.nix +++ b/pkgs/by-name/mu/musescore/package.nix @@ -13,6 +13,7 @@ # buildInputs alsa-lib, alsa-plugins, + ffmpeg, flac, freetype, kdePackages, @@ -181,6 +182,15 @@ stdenv.mkDerivation (finalAttrs: { kdePackages'.qtwayland ]; + # Put the default, `$prefix/lib` directory to look for ffmpeg shared objects, + # Nixpkgs' provided ffmpeg, for both MacOS & Linux. Note that upstream uses + # the /usr/lib/x86_64-linux-gnu location for any Linux (e.g aarch64 too). + preConfigure = '' + substituteInPlace src/framework/media/internal/ffmpegutils.cpp \ + --replace-fail "/usr/lib/x86_64-linux-gnu" "${lib.getLib ffmpeg}/lib" \ + --replace-fail "/opt/homebrew/lib" "${lib.getLib ffmpeg}/lib" \ + ''; + postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' mkdir -p "$out/Applications" mv "$out/mscore.app" "$out/Applications/mscore.app" From 0b4bd72ffa6e07404eca1c69a7acb362b0561818 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Fri, 12 Jun 2026 09:48:49 +0300 Subject: [PATCH 6/9] musescore: simplify qt6.qtdeclarative override No more need for overriding kdePackages like that since the only packages used are qt6 anyway. (cherry picked from commit 62792026d8b0812da03459aadc5b4163d23e9371) --- pkgs/by-name/mu/musescore/package.nix | 51 ++++++--------------------- 1 file changed, 11 insertions(+), 40 deletions(-) diff --git a/pkgs/by-name/mu/musescore/package.nix b/pkgs/by-name/mu/musescore/package.nix index 162e096e3fee..8ffbfaae4805 100644 --- a/pkgs/by-name/mu/musescore/package.nix +++ b/pkgs/by-name/mu/musescore/package.nix @@ -16,7 +16,7 @@ ffmpeg, flac, freetype, - kdePackages, + qt6, lame, libjack2, libogg, @@ -36,36 +36,7 @@ }: let - # TODO(@doronbehar): Contribute this one day to lib/? See: - # https://discourse.nixos.org/t/rfc-nix-function-that-overrides-a-scope-with-automatic-inheritance-propagation/78025 - overrideScopeFully = - s: scopeOverrideFunc: - let - partiallyOverriddenScope = s.overrideScope scopeOverrideFunc; - directlyOverriddenAttrs = builtins.attrNames (scopeOverrideFunc partiallyOverriddenScope s); - in - builtins.mapAttrs ( - attrName: pkg: - pkg.override ( - lib.pipe directlyOverriddenAttrs [ - (builtins.filter ( - oAttr: - # Don't include in this filter the attribute `attrName` from the - # full scope, if it is already part of the _directly_ overridden - # attributes. - !(builtins.elem attrName directlyOverriddenAttrs) - && pkg ? override - # Continue with the creation of the `.override` arguments only for - # overridden attributes (`oAttr`) which are possible arguments to the - # `.override` function of the `pkg` at hand. - && pkg.override.__functionArgs ? ${oAttr} - )) - # Generate the `.override` argument using the attribute names `aNames` - (aNames: lib.genAttrs aNames (oAttr: partiallyOverriddenScope.${oAttr})) - ] - ) - ) partiallyOverriddenScope; - kdePackages' = overrideScopeFully kdePackages ( + qt6' = qt6.overrideScope ( self: super: { # Fix for: https://github.com/NixOS/nixpkgs/issues/526825 # reported upstream at: https://github.com/musescore/MuseScore/issues/33015 @@ -143,8 +114,8 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ cmake - kdePackages'.qttools - kdePackages'.wrapQtAppsHook + qt6'.qttools + qt6'.wrapQtAppsHook ninja pkg-config ] @@ -157,12 +128,12 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ flac freetype - kdePackages'.qt5compat - kdePackages'.qtbase - kdePackages'.qtdeclarative - kdePackages'.qtnetworkauth - kdePackages'.qtscxml - kdePackages'.qtsvg + qt6'.qt5compat + qt6'.qtbase + qt6'.qtdeclarative + qt6'.qtnetworkauth + qt6'.qtscxml + qt6'.qtsvg lame libjack2 libogg @@ -179,7 +150,7 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib - kdePackages'.qtwayland + qt6'.qtwayland ]; # Put the default, `$prefix/lib` directory to look for ffmpeg shared objects, From 612cb13fc461d419fc37beb9b7de22ee5dfccf48 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Fri, 12 Jun 2026 09:51:02 +0300 Subject: [PATCH 7/9] musescore: 4.7.2 -> 4.7.3 Diff: https://github.com/musescore/MuseScore/compare/v4.7.2...v4.7.3 (cherry picked from commit ad4fffd4f9d6d9e9bff11ba1567baeb228be97c6) --- pkgs/by-name/mu/musescore/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mu/musescore/package.nix b/pkgs/by-name/mu/musescore/package.nix index 8ffbfaae4805..49daa4e56c86 100644 --- a/pkgs/by-name/mu/musescore/package.nix +++ b/pkgs/by-name/mu/musescore/package.nix @@ -55,13 +55,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "musescore"; - version = "4.7.2"; + version = "4.7.3"; src = fetchFromGitHub { owner = "musescore"; repo = "MuseScore"; tag = "v${finalAttrs.version}"; - hash = "sha256-7oA+cC5/nOEM2zpFgM13zlBIoc3AB//Ovc+dU1c1r6M="; + hash = "sha256-wWqFJkXLRi3JtnEW3STTG/jBBIQK1dIYPZdKCiBn0m0="; }; cmakeFlags = [ From 1056f80077227282647dc221b6001fd2621f956b Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 15 Jul 2026 13:56:41 +0300 Subject: [PATCH 8/9] musescore: fix 'New score' window crash Fixes #540783. (cherry picked from commit 1501096c5fdf6dcc60ff0e6e48cf108bd549bf5d) --- pkgs/by-name/mu/musescore/package.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkgs/by-name/mu/musescore/package.nix b/pkgs/by-name/mu/musescore/package.nix index 49daa4e56c86..d5aad7a57bb4 100644 --- a/pkgs/by-name/mu/musescore/package.nix +++ b/pkgs/by-name/mu/musescore/package.nix @@ -64,6 +64,16 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-wWqFJkXLRi3JtnEW3STTG/jBBIQK1dIYPZdKCiBn0m0="; }; + patches = [ + # Fix for https://github.com/musescore/MuseScore/issues/34091 also reported + # downstream at: https://github.com/NixOS/nixpkgs/issues/540783. PR to + # track: https://github.com/musescore/MuseScore/pull/34204 + (fetchpatch { + url = "https://github.com/musescore/MuseScore/commit/f273501e418842351c4bda10cce32b0e329eaff1.patch"; + hash = "sha256-zrZRzeAHSFGtCuw/o4A3b1Blbo3FxKGxw1UDu9IggzY="; + }) + ]; + cmakeFlags = [ (lib.cmakeFeature "MUSE_APP_BUILD_MODE" "release") # Disable the build and usage of the `/bin/crashpad_handler` utility - it's From 3e18a599415c2cd8fcbf0b1cd467fd3f37bc107d Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Wed, 15 Jul 2026 13:57:43 +0300 Subject: [PATCH 9/9] musescore: 4.7.3 -> 4.7.4 Diff: https://github.com/musescore/MuseScore/compare/v4.7.3...v4.7.4 (cherry picked from commit 5bf1c5663dcff1288635a7c9294c4577bf89bff1) --- pkgs/by-name/mu/musescore/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mu/musescore/package.nix b/pkgs/by-name/mu/musescore/package.nix index d5aad7a57bb4..839da32fb1d1 100644 --- a/pkgs/by-name/mu/musescore/package.nix +++ b/pkgs/by-name/mu/musescore/package.nix @@ -55,13 +55,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "musescore"; - version = "4.7.3"; + version = "4.7.4"; src = fetchFromGitHub { owner = "musescore"; repo = "MuseScore"; tag = "v${finalAttrs.version}"; - hash = "sha256-wWqFJkXLRi3JtnEW3STTG/jBBIQK1dIYPZdKCiBn0m0="; + hash = "sha256-ny6s5hQUxopb6c45KJugYEZULkC8fLP+Au5ghic0KvI="; }; patches = [