From 3d6d1c6db828990134e05ab3bb007e3df9547f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ha=CC=88cker?= Date: Sun, 23 Feb 2025 21:11:23 +0100 Subject: [PATCH 01/10] mumble: rename configureFlags > cmakeFlags As a reader I first thought that this package was built using automatke, when in fact it is built using cmake. This rename should help lessen that confusion. --- pkgs/applications/networking/mumble/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index cab3e4774bee..64229c71ae43 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -63,7 +63,7 @@ let "-D g15=OFF" "-D CMAKE_CXX_STANDARD=17" # protobuf >22 requires C++ 17 "-D BUILD_NUMBER=${lib.versions.patch source.version}" - ] ++ (overrides.configureFlags or [ ]); + ] ++ (overrides.cmakeFlags or [ ]); preConfigure = '' patchShebangs scripts @@ -107,7 +107,7 @@ let ++ lib.optional pulseSupport libpulseaudio ++ lib.optional pipewireSupport pipewire; - configureFlags = + cmakeFlags = [ "-D server=OFF" "-D bundled-celt=ON" @@ -141,7 +141,7 @@ let generic { type = "murmur"; - configureFlags = + cmakeFlags = [ "-D client=OFF" ] @@ -161,7 +161,7 @@ let stdenv = stdenv_32bit; type = "mumble-overlay"; - configureFlags = [ + cmakeFlags = [ "-D server=OFF" "-D client=OFF" "-D overlay=ON" From 8dcb8d4a440ae95e12e42750ea22698570af63aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AErekc=C3=A4H=20nitraM=E2=80=AE?= Date: Wed, 5 Mar 2025 08:35:25 +0100 Subject: [PATCH 02/10] mumble: use lib helpers for cmake options where it makes them simpler These are the cases where bools have to be converted to options, so the helpers help make the code shorter and easier to read. --- .../networking/mumble/default.nix | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index 64229c71ae43..7fbfb493737e 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -107,22 +107,22 @@ let ++ lib.optional pulseSupport libpulseaudio ++ lib.optional pipewireSupport pipewire; - cmakeFlags = - [ - "-D server=OFF" - "-D bundled-celt=ON" - "-D bundled-opus=OFF" - "-D bundled-speex=OFF" - "-D bundle-qt-translations=OFF" - "-D update=OFF" - "-D overlay-xcompile=OFF" - "-D oss=OFF" - "-D warnings-as-errors=OFF" # conversion error workaround - ] - ++ lib.optional (!speechdSupport) "-D speechd=OFF" - ++ lib.optional (!pulseSupport) "-D pulseaudio=OFF" - ++ lib.optional (!pipewireSupport) "-D pipewire=OFF" - ++ lib.optional jackSupport "-D alsa=OFF -D jackaudio=ON"; + cmakeFlags = [ + "-D server=OFF" + "-D bundled-celt=ON" + "-D bundled-opus=OFF" + "-D bundled-speex=OFF" + "-D bundle-qt-translations=OFF" + "-D update=OFF" + "-D overlay-xcompile=OFF" + "-D oss=OFF" + "-D warnings-as-errors=OFF" # conversion error workaround + (lib.cmakeBool "speechd" speechdSupport) + (lib.cmakeBool "pulseaudio" pulseSupport) + (lib.cmakeBool "pipewire" pipewireSupport) + (lib.cmakeBool "jackaudio" jackSupport) + (lib.cmakeBool "alsa" (!jackSupport)) + ]; env.NIX_CFLAGS_COMPILE = lib.optionalString speechdSupport "-I${speechd-minimal}/include/speech-dispatcher"; @@ -144,8 +144,8 @@ let cmakeFlags = [ "-D client=OFF" + (lib.cmakeBool "ice" iceSupport) ] - ++ lib.optional (!iceSupport) "-D ice=OFF" ++ lib.optionals iceSupport [ "-D Ice_HOME=${lib.getDev zeroc-ice};${lib.getLib zeroc-ice}" "-D CMAKE_PREFIX_PATH=${lib.getDev zeroc-ice};${lib.getLib zeroc-ice}" From 87952b4973d06344d1007ab0c7c4e5d29084826c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AErekc=C3=A4H=20nitraM=E2=80=AE?= Date: Wed, 5 Mar 2025 09:39:20 +0100 Subject: [PATCH 03/10] mumble: CMAKE_PREFIX_PATH is not required to build the server. --- pkgs/applications/networking/mumble/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index 7fbfb493737e..4e56965ff8f7 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -148,7 +148,6 @@ let ] ++ lib.optionals iceSupport [ "-D Ice_HOME=${lib.getDev zeroc-ice};${lib.getLib zeroc-ice}" - "-D CMAKE_PREFIX_PATH=${lib.getDev zeroc-ice};${lib.getLib zeroc-ice}" "-D Ice_SLICE_DIR=${lib.getDev zeroc-ice}/share/ice/slice" ]; From 97d7f7cd630da537b111860976f9243fbe5cf179 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AErekc=C3=A4H=20nitraM=E2=80=AE?= Date: Tue, 4 Mar 2025 08:03:11 +0100 Subject: [PATCH 04/10] mumble: Add dependency on nix provided microsoft-gsl library --- pkgs/applications/networking/mumble/default.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index 4e56965ff8f7..d666d85d8387 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -32,6 +32,7 @@ libpulseaudio, speechdSupport ? false, speechd-minimal, + microsoft-gsl, }: let @@ -57,12 +58,14 @@ let boost poco protobuf + microsoft-gsl ] ++ (overrides.buildInputs or [ ]); cmakeFlags = [ "-D g15=OFF" "-D CMAKE_CXX_STANDARD=17" # protobuf >22 requires C++ 17 "-D BUILD_NUMBER=${lib.versions.patch source.version}" + "-D bundled-gsl=OFF" ] ++ (overrides.cmakeFlags or [ ]); preConfigure = '' From ae734d01c408d3836c8d8eb3c0c6e15a8efc4f80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AErekc=C3=A4H=20nitraM=E2=80=AE?= Date: Tue, 4 Mar 2025 08:01:33 +0100 Subject: [PATCH 05/10] mumble: Add dependency on nix provided nlohmann_json --- pkgs/applications/networking/mumble/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index d666d85d8387..975e8ca89392 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -33,6 +33,7 @@ speechdSupport ? false, speechd-minimal, microsoft-gsl, + nlohmann_json, }: let @@ -59,6 +60,7 @@ let poco protobuf microsoft-gsl + nlohmann_json ] ++ (overrides.buildInputs or [ ]); cmakeFlags = [ @@ -66,6 +68,7 @@ let "-D CMAKE_CXX_STANDARD=17" # protobuf >22 requires C++ 17 "-D BUILD_NUMBER=${lib.versions.patch source.version}" "-D bundled-gsl=OFF" + "-D bundled-json=OFF" ] ++ (overrides.cmakeFlags or [ ]); preConfigure = '' @@ -102,7 +105,6 @@ let libvorbis qt5.qtsvg rnnoise - speex ] ++ lib.optional (!jackSupport) alsa-lib ++ lib.optional jackSupport libjack2 From d679111ed41388fb7b08077fe713086fa450d88d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ha=CC=88cker?= Date: Mon, 3 Mar 2025 18:18:13 +0100 Subject: [PATCH 06/10] mumble: Add correct dependency for use-speex option Support for the speex codec has long since been removed from upstream. See https://github.com/mumble-voip/mumble/pull/5869 for details. the use-bundled-speex option now means to use the speex-dsp library which is packaged separately in nix. --- pkgs/applications/networking/mumble/default.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index 975e8ca89392..00683dd5d7fe 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -10,8 +10,8 @@ boost, libopus, libsndfile, + speexdsp, protobuf, - speex, libcap, alsa-lib, python3, @@ -103,6 +103,7 @@ let libopus libsndfile libvorbis + speexdsp qt5.qtsvg rnnoise ] From 6263af24d5cbda2eb4b13c7ad59a47c9b3f34143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AErekc=C3=A4H=20nitraM=E2=80=AE?= Date: Tue, 4 Mar 2025 10:56:06 +0100 Subject: [PATCH 07/10] mumble: Remove superfluous bundled-opus option There is no such option anymore, as unbundled opus is now the only supported option. See upstream d11fd05062f5684b3ffb698eb4cd3130356b6e9a for details. --- pkgs/applications/networking/mumble/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index 00683dd5d7fe..dfdbae3e4148 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -113,10 +113,10 @@ let ++ lib.optional pulseSupport libpulseaudio ++ lib.optional pipewireSupport pipewire; + cmakeFlags = [ "-D server=OFF" "-D bundled-celt=ON" - "-D bundled-opus=OFF" "-D bundled-speex=OFF" "-D bundle-qt-translations=OFF" "-D update=OFF" From 353f43c6766c5d6b7b14d800512a85415969f043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AErekc=C3=A4H=20nitraM=E2=80=AE?= Date: Tue, 4 Mar 2025 11:18:21 +0100 Subject: [PATCH 08/10] mumble: Remove superfluous bundled-celt option This option has been removed by upstream for a long time, as nobody uses that codec anymore. For details see upstream 4d05018c2e4f1bda48f6244b38f1e7bdc06de808 --- pkgs/applications/networking/mumble/default.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index dfdbae3e4148..d29a807bc23e 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -116,7 +116,6 @@ let cmakeFlags = [ "-D server=OFF" - "-D bundled-celt=ON" "-D bundled-speex=OFF" "-D bundle-qt-translations=OFF" "-D update=OFF" From b3277d1ce69c04f4b4b37d83728b4d33dfcf9d79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=AErekc=C3=A4H=20nitraM=E2=80=AE?= Date: Tue, 4 Mar 2025 10:48:32 +0100 Subject: [PATCH 09/10] mumble: enable building on darwin --- .../networking/mumble/default.nix | 75 ++++++++++++++----- .../mumble/disable-overlay-build.patch | 21 ++++++ .../networking/mumble/fix-plugin-copy.patch | 13 ++++ 3 files changed, 92 insertions(+), 17 deletions(-) create mode 100644 pkgs/applications/networking/mumble/disable-overlay-build.patch create mode 100644 pkgs/applications/networking/mumble/fix-plugin-copy.patch diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index d29a807bc23e..5e9c5aac5848 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitHub, - fetchpatch, pkg-config, qt5, cmake, @@ -22,11 +21,12 @@ libogg, libvorbis, stdenv_32bit, + alsaSupport ? stdenv.hostPlatform.isLinux, iceSupport ? true, zeroc-ice, jackSupport ? false, libjack2, - pipewireSupport ? true, + pipewireSupport ? stdenv.hostPlatform.isLinux, pipewire, pulseSupport ? true, libpulseaudio, @@ -34,6 +34,8 @@ speechd-minimal, microsoft-gsl, nlohmann_json, + xar, + makeWrapper, }: let @@ -54,14 +56,16 @@ let qt5.qttools ] ++ (overrides.nativeBuildInputs or [ ]); - buildInputs = [ - avahi - boost - poco - protobuf - microsoft-gsl - nlohmann_json - ] ++ (overrides.buildInputs or [ ]); + buildInputs = + [ + boost + poco + protobuf + microsoft-gsl + nlohmann_json + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ avahi ] + ++ (overrides.buildInputs or [ ]); cmakeFlags = [ "-D g15=OFF" @@ -85,7 +89,7 @@ let felixsinger lilacious ]; - platforms = platforms.linux; + platforms = platforms.linux ++ (overrides.platforms or [ ]); }; } ); @@ -95,7 +99,13 @@ let generic { type = "mumble"; - nativeBuildInputs = [ qt5.qttools ]; + platforms = lib.platforms.darwin; + nativeBuildInputs = + [ qt5.qttools ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + makeWrapper + ]; + buildInputs = [ flac @@ -107,12 +117,14 @@ let qt5.qtsvg rnnoise ] - ++ lib.optional (!jackSupport) alsa-lib + ++ lib.optional (!jackSupport && alsaSupport) alsa-lib ++ lib.optional jackSupport libjack2 ++ lib.optional speechdSupport speechd-minimal ++ lib.optional pulseSupport libpulseaudio - ++ lib.optional pipewireSupport pipewire; - + ++ lib.optional pipewireSupport pipewire + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + xar + ]; cmakeFlags = [ "-D server=OFF" @@ -122,16 +134,44 @@ let "-D overlay-xcompile=OFF" "-D oss=OFF" "-D warnings-as-errors=OFF" # conversion error workaround + # building the overlay on darwin does not work in nipxkgs (yet) + # also see the patch below to disable scripts the build option misses + # see https://github.com/mumble-voip/mumble/issues/6816 + (lib.cmakeBool "overlay" (!stdenv.hostPlatform.isDarwin)) (lib.cmakeBool "speechd" speechdSupport) (lib.cmakeBool "pulseaudio" pulseSupport) (lib.cmakeBool "pipewire" pipewireSupport) (lib.cmakeBool "jackaudio" jackSupport) - (lib.cmakeBool "alsa" (!jackSupport)) + (lib.cmakeBool "alsa" (!jackSupport && alsaSupport)) ]; env.NIX_CFLAGS_COMPILE = lib.optionalString speechdSupport "-I${speechd-minimal}/include/speech-dispatcher"; - postFixup = '' + patches = [ + ./disable-overlay-build.patch + ./fix-plugin-copy.patch + ]; + + postInstall = lib.optionalString stdenv.hostPlatform.isDarwin '' + # The build erraneously marks the *.dylib as executable + # which causes the qt-hook to wrap it, which then prevents the app from loading it + chmod -x $out/lib/mumble/plugins/*.dylib + + # Post-processing for the app bundle + $NIX_BUILD_TOP/source/macx/scripts/osxdist.py \ + --source-dir=$NIX_BUILD_TOP/source/ \ + --binary-dir=$out \ + --only-appbundle \ + --version "${source.version}" + + mkdir -p $out/Applications $out/bin + mv $out/Mumble.app $out/Applications/Mumble.app + + # ensure that the app can be started from the shell + makeWrapper $out/Applications/Mumble.app/Contents/MacOS/mumble $out/bin/mumble + ''; + + postFixup = lib.optionalString stdenv.hostPlatform.isLinux '' wrapProgram $out/bin/mumble \ --prefix LD_LIBRARY_PATH : "${ lib.makeLibraryPath ( @@ -139,6 +179,7 @@ let ) }" ''; + } source; server = diff --git a/pkgs/applications/networking/mumble/disable-overlay-build.patch b/pkgs/applications/networking/mumble/disable-overlay-build.patch new file mode 100644 index 000000000000..9d2aff0d8da0 --- /dev/null +++ b/pkgs/applications/networking/mumble/disable-overlay-build.patch @@ -0,0 +1,21 @@ +diff --git a/macx/scripts/osxdist.py b/macx/scripts/osxdist.py +index bdc7fcbd2..2114caf37 100755 +--- a/macx/scripts/osxdist.py ++++ b/macx/scripts/osxdist.py +@@ -128,7 +128,7 @@ class AppBundle(object): + shutil.copy(rsrc, os.path.join(rsrcpath, b)) + + # Extras +- shutil.copy(os.path.join(options.binary_dir, 'MumbleOverlay.pkg'), os.path.join(rsrcpath, 'MumbleOverlay.pkg')) ++ # shutil.copy(os.path.join(options.binary_dir, 'MumbleOverlay.pkg'), os.path.join(rsrcpath, 'MumbleOverlay.pkg')) + + def copy_codecs(self): + ''' +@@ -275,7 +276,7 @@ def package_client(): + title = 'Mumble %s' % ver + + # Fix overlay installer package +- create_overlay_package() ++ # create_overlay_package() + if options.only_overlay: + sys.exit(0) diff --git a/pkgs/applications/networking/mumble/fix-plugin-copy.patch b/pkgs/applications/networking/mumble/fix-plugin-copy.patch new file mode 100644 index 000000000000..e8c503944b42 --- /dev/null +++ b/pkgs/applications/networking/mumble/fix-plugin-copy.patch @@ -0,0 +1,13 @@ +diff --git a/macx/scripts/osxdist.py b/macx/scripts/osxdist.py +index bdc7fcbd2..2114caf37 100755 +--- a/macx/scripts/osxdist.py ++++ b/macx/scripts/osxdist.py +@@ -151,7 +151,7 @@ class AppBundle(object): + dst = os.path.join(self.bundle, 'Contents', 'Plugins') + if not os.path.exists(dst): + os.makedirs(dst) +- for plugin in glob.glob(os.path.join(options.binary_dir, 'plugins') + '/*.dylib'): ++ for plugin in glob.glob(os.path.join(options.binary_dir, 'lib/mumble/plugins') + '/*.dylib'): + shutil.copy(plugin, dst) + + def update_plist(self): From 50a753f1e511eff9a8a37b07a7e5a54153b33215 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ha=CC=88cker?= Date: Mon, 3 Mar 2025 20:22:21 +0100 Subject: [PATCH 10/10] mumble: darwin: Fix missing version information in finder Reported upstream at https://github.com/mumble-voip/mumble/issues/6741 --- pkgs/applications/networking/mumble/default.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkgs/applications/networking/mumble/default.nix b/pkgs/applications/networking/mumble/default.nix index 5e9c5aac5848..2b85dcdf17d1 100644 --- a/pkgs/applications/networking/mumble/default.nix +++ b/pkgs/applications/networking/mumble/default.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchFromGitHub, + fetchpatch, pkg-config, qt5, cmake, @@ -150,6 +151,12 @@ let patches = [ ./disable-overlay-build.patch ./fix-plugin-copy.patch + # Can be removed before the next update of Mumble, as that fix was upstreamed + # fix version display in MacOS Finder + (fetchpatch { + url = "https://github.com/mumble-voip/mumble/commit/fbd21bd422367bed19f801bf278562f567cbb8b7.patch"; + sha256 = "sha256-qFhC2j/cOWzAhs+KTccDIdcgFqfr4y4VLjHiK458Ucs="; + }) ]; postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''