Compare commits

...
2 Commits
Author SHA1 Message Date
Sweetbread 238166668f pkgs: add mumble 2026-08-26 23:56:12 +03:00
Sweetbread ec8fdec87b fixup! Update 2026-08-26 23:55:58 +03:00
3 changed files with 85 additions and 24 deletions
+60
View File
@@ -0,0 +1,60 @@
{ lib
, pkgs
, mumble ? pkgs.mumble
}:
let
# PipeWire 1.4.0 removed client-rt.conf, changing how clients negotiate
# realtime scheduling. Mumble never adapted, so its PipeWire data-loop
# thread stalls mid-negotiation and its own RT watchdog SIGKILLs the
# whole process almost immediately on every launch (confirmed via
# bpftrace: signal_generate shows Mumble's own "data-loop.0" thread
# sending itself SIGKILL). Reproduced identically on both the packaged
# 1.5.915 (Qt5) and a from-source 1.6.870 RC (Qt6) build, so it's the
# shared PipeWire client integration at fault, not Mumble's UI stack.
#
# Upstream: https://github.com/mumble-voip/mumble/issues/6780
# Bisected there to PipeWire 1.2.7 (last known-good) vs 1.4.1+ (broken).
#
# Fix: give Mumble an old, compatible libpipewire-0.3.so to dlopen at
# runtime. The system's actual PipeWire daemon is untouched (still
# whatever version NixOS ships) - only the client library Mumble talks
# through is pinned back.
pipewireGoodPkgs = import (fetchTarball {
url = "https://channels.nixos.org/nixos-24.11/nixexprs.tar.xz";
sha256 = "189lwv8l10bm9fnksfkzy05pm86gmziy9z3bdn13zc8d636ylchj"; # nix-prefetch-url --unpack https://channels.nixos.org/nixos-24.11/nixexprs.tar.xz
}) { inherit (pkgs) system; };
pipewireGood = pipewireGoodPkgs.pipewire;
# Mumble's own build is Qt5-based; QT_PLUGIN_PATH isn't set by its
# wrapper for the platform/sql plugins mumble actually needs when we
# bypass that wrapper below, so it has to be supplied explicitly.
qt5PluginPath = lib.makeSearchPath "lib/qt-${pkgs.qt5.qtbase.version}/plugins" [
pkgs.qt5.qtbase.bin
pkgs.qt5.qtsvg.bin
pkgs.qt5.qtwayland.bin
];
in
pkgs.symlinkJoin {
name = "mumble-pipewire-fixed-${mumble.version}";
paths = [ mumble ];
nativeBuildInputs = [ pkgs.makeWrapper ];
# mumble's own wrapper always prepends its own (broken, too-new)
# PipeWire path in front of anything we set, so wrapping it a second
# time can't win that ordering fight. Instead we skip straight to the
# real unwrapped binary and set env ourselves.
postBuild = ''
rm -f $out/bin/mumble
makeWrapper ${mumble}/bin/.mumble-wrapped $out/bin/mumble \
--prefix LD_LIBRARY_PATH : "${pipewireGood}/lib" \
--set QT_PLUGIN_PATH "${qt5PluginPath}"
'';
meta = mumble.meta // {
description = mumble.meta.description
+ " (patched: pinned PipeWire client lib to 1.2.7 to work around SIGKILL-on-launch with PipeWire >=1.4.0, see mumble#6780)";
};
}
Generated
+24 -24
View File
@@ -332,11 +332,11 @@
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1786230879,
"narHash": "sha256-1dBU2QNctYbkgkuRs9pMXNAWM276zqf3dFZhyAhSgPg=",
"lastModified": 1787460758,
"narHash": "sha256-7mUAINEKnPPCHqiXT+zU5bve4dqcggdjBuHRInhTGEY=",
"owner": "mattwparas",
"repo": "helix",
"rev": "bab8acd7a32e3cb85cd6aaae6281cb5de3ce0780",
"rev": "5a8635beda77414850a2b9604aa0643e4713db3b",
"type": "github"
},
"original": {
@@ -353,11 +353,11 @@
]
},
"locked": {
"lastModified": 1786887553,
"narHash": "sha256-0J8EwNSJ/2OeyuvXgfG+k5uBT1gkg0ww7VEo+14xl50=",
"lastModified": 1787487906,
"narHash": "sha256-zIdM+8teujHm5hc5MIPDnV7k2UeOOT/pFyFtWjOCwsY=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "5bd505963717a894b02a57cdbcc00db28d9b029f",
"rev": "cfba7ad5886b342b8dd63ba74354b3853ea4cfc9",
"type": "github"
},
"original": {
@@ -518,11 +518,11 @@
]
},
"locked": {
"lastModified": 1786227627,
"narHash": "sha256-bc4jNVx0agB40xwxJ0r7hAAk5tk5Lm0uKtwP5rNyvZQ=",
"lastModified": 1787505272,
"narHash": "sha256-QlwOFpistZmkBdIrCBya3ooLOIFL6E3zYRID5LmuNQ8=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
"rev": "faf5ef1bd5916051ed3252463697dd2ae479f629",
"rev": "2b41ad87ba68226472b8a811c3f580a1eabb10bb",
"type": "github"
},
"original": {
@@ -750,11 +750,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1786711500,
"narHash": "sha256-QvnceIGTBeDvDd9oCn+GvdsnkquliuwbVgpiRH68qaQ=",
"lastModified": 1787414105,
"narHash": "sha256-WncT27+3BOkgTaJZLnCsf3LcYf9RXMuR9ONSN4rzQ7s=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "02e08985a27c65ffd33d434eeb2e660a2e4dc84d",
"rev": "a9e6d84f9c2f9012f5fe7d964a7851352300e61a",
"type": "github"
},
"original": {
@@ -814,11 +814,11 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 1786862985,
"narHash": "sha256-FBJRXmbGXiSUDvYEbfLYRkckayyZ6SK1UEqhCrIZ2Cs=",
"lastModified": 1787360063,
"narHash": "sha256-dt4WdcvsA8/RCe+VZZwqU0X+XMM3wBbGCWA0/sFWzGo=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "e5bdc4a41d4c072fe1e3787eaa0320a384741d44",
"rev": "2c423e03bbafcff28bfadc6781a4a8257f205cb5",
"type": "github"
},
"original": {
@@ -1041,11 +1041,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1786531493,
"narHash": "sha256-F93yabBSW2TpxKYMcArQOnFuCqBgAdbfZsdl0w5Pojg=",
"lastModified": 1787175104,
"narHash": "sha256-tzNjlb0loxeWlipvxSNAUUihloeTZoyGFhEen87yM9k=",
"owner": "danth",
"repo": "stylix",
"rev": "1e6ccadeda179d96728b4a9f20fc9d4dcf6b6059",
"rev": "a9e5a76a1b75b137f266e4f445e1eaba82e9783e",
"type": "github"
},
"original": {
@@ -1212,11 +1212,11 @@
"rust-overlay": "rust-overlay_3"
},
"locked": {
"lastModified": 1786883019,
"narHash": "sha256-To+KS5QP6lNlNB1qGUWbB6/Aniq2+LTZxnrL5wSomzE=",
"lastModified": 1787503732,
"narHash": "sha256-SLfkVDN0OZJbgMGr1CratgI4mkpaJkKa+7aUnBEW3VM=",
"owner": "sxyazi",
"repo": "yazi",
"rev": "6be37429801e86b06ceaee0e3fb5a28ba9ecb4a6",
"rev": "519939b5ab9c76e56ca5549d72c08a0e9dd5aab3",
"type": "github"
},
"original": {
@@ -1228,11 +1228,11 @@
"yazi-plugins": {
"flake": false,
"locked": {
"lastModified": 1786542661,
"narHash": "sha256-ixdQLt8DJZRqoK4GqwaytxSrLGc+B5L+ILBs7eG6kLY=",
"lastModified": 1787503588,
"narHash": "sha256-A5iWqkjbdXcuVOh0mLpA8Hlum3xaZJ8GgqBdxM4qfJY=",
"owner": "yazi-rs",
"repo": "plugins",
"rev": "3f2b8822aa77f8699d70803ef1407ef7a2a77b0d",
"rev": "044c3cc290a2b2ea931b54e65b9bdc83baa6f1c3",
"type": "github"
},
"original": {
+1
View File
@@ -10,5 +10,6 @@
thunderbird
libreoffice
pear-desktop
( pkgs.callPackage ../../../drv/mumble.nix {} )
];
}