Compare commits
2
Commits
e6e6af404f
...
238166668f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
238166668f
|
||
|
|
ec8fdec87b
|
@@ -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
@@ -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": {
|
||||
|
||||
@@ -10,5 +10,6 @@
|
||||
thunderbird
|
||||
libreoffice
|
||||
pear-desktop
|
||||
( pkgs.callPackage ../../../drv/mumble.nix {} )
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user