Merge pull request #303590 from mmarx/fix-mattermost-desktop-notifications

electron: Add libnotify, pipewire, and several other runtime dependencies to RPATH; fixes desktop notifications and screenshare
This commit is contained in:
Sandro 2024-04-20 19:42:43 +02:00 committed by GitHub
commit 65d8de75bd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 35 additions and 49 deletions

View File

@ -1,6 +1,5 @@
{ lib, stdenv
, fetchurl
, gcc-unwrapped
, dpkg
, util-linux
, bash
@ -57,8 +56,7 @@ stdenv.mkDerivation rec {
postFixup = ''
makeWrapper ${electron}/bin/electron $out/bin/${pname} \
--add-flags $out/share/${pname}/resources/app.asar \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ gcc-unwrapped.lib ]}"
--add-flags $out/share/${pname}/resources/app.aasar
'';
meta = with lib; {

View File

@ -1,5 +1,12 @@
{ lib, stdenv, fetchurl, dpkg, makeWrapper, electron, libsecret
, desktop-file-utils , callPackage }:
{ lib
, stdenv
, fetchurl
, dpkg
, makeWrapper
, electron
, desktop-file-utils
, callPackage
}:
let
@ -33,8 +40,7 @@ stdenv.mkDerivation rec {
cp -R opt/Standard\ Notes/resources/app.asar $out/share/standardnotes/
makeWrapper ${electron}/bin/electron $out/bin/standardnotes \
--add-flags $out/share/standardnotes/app.asar \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libsecret stdenv.cc.cc.lib ]}
--add-flags $out/share/standardnotes/app.asar
${desktop-file-utils}/bin/desktop-file-install --dir $out/share/applications \
--set-key Exec --set-value standardnotes usr/share/applications/standard-notes.desktop

View File

@ -60,8 +60,7 @@ in {
makeWrapper ${electron_27}/bin/electron $out/bin/${pname} \
--set "LOCAL_GIT_DIRECTORY" ${git} \
--add-flags $out/share/${pname}/resources/app \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc.lib ]}"
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
'';
passthru.updateScript = nix-update-script { };

View File

@ -16,7 +16,6 @@
, AppKit
, CoreServices
, desktopToDarwinBundle
, libnotify
, useKeytar ? true
}:
@ -79,11 +78,6 @@ stdenv.mkDerivation (finalAttrs: builtins.removeAttrs pinData [ "hashes" ] // {
'';
installPhase =
let
libPath = lib.makeLibraryPath [
libnotify
];
in
''
runHook preInstall
@ -111,7 +105,6 @@ stdenv.mkDerivation (finalAttrs: builtins.removeAttrs pinData [ "hashes" ] // {
# LD_PRELOAD workaround for sqlcipher not found: https://github.com/matrix-org/seshat/issues/102
makeWrapper '${electron}/bin/electron' "$out/bin/${executableName}" \
--set LD_PRELOAD ${sqlcipher}/lib/libsqlcipher.so \
--set LD_LIBRARY_PATH "${libPath}" \
--add-flags "$out/share/element/electron" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"

View File

@ -10,7 +10,6 @@
, libXtst
, zlib
, electron
, pipewire
}:
buildNpmPackage rec {
@ -72,7 +71,6 @@ buildNpmPackage rec {
makeWrapper ${lib.getExe electron} $out/bin/jitsi-meet-electron \
--add-flags $out/share/jitsi-meet-electron/resources/app.asar \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ pipewire ]} \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
--inherit-argv0

View File

@ -9,9 +9,6 @@
, fetchYarnDeps
, fixup-yarn-lock
, electron
, libnotify
, libpulseaudio
, pipewire
, alsa-utils
, which
, testers
@ -72,11 +69,10 @@ stdenv.mkDerivation (finalAttrs: {
done
popd
# Linux needs 'aplay' for notification sounds, 'libpulse' for meeting sound, 'libpipewire' for screen sharing and 'libnotify' for notifications
# Linux needs 'aplay' for notification sounds
makeWrapper '${electron}/bin/electron' "$out/bin/teams-for-linux" \
${lib.optionalString stdenv.isLinux ''
--prefix PATH : ${lib.makeBinPath [ alsa-utils which ]} \
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ libpulseaudio pipewire libnotify ]} \
''} \
--add-flags "$out/share/teams-for-linux/app.asar" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"

View File

@ -3,9 +3,6 @@
, fetchFromGitHub
, copyDesktopItems
, python3
, pipewire
, libpulseaudio
, libnotify
, xdg-utils
, electron_29
, makeDesktopItem
@ -42,11 +39,6 @@ buildNpmPackage rec {
# override installPhase so we can copy the only folders that matter
installPhase =
let
libPath = lib.makeLibraryPath [
libpulseaudio
pipewire
libnotify
];
binPath = lib.makeBinPath [ xdg-utils ];
in
''
@ -62,7 +54,6 @@ buildNpmPackage rec {
# Add xdg-utils to path via suffix, per PR #181171
makeWrapper '${lib.getExe electron_29}' $out/bin/webcord \
--prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/webcord \
--suffix PATH : "${binPath}" \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
--add-flags $out/lib/node_modules/webcord/

View File

@ -38,8 +38,7 @@ stdenv.mkDerivation rec {
postFixup = ''
makeWrapper ${electron}/bin/electron $out/bin/${pname} \
--add-flags $out/share/${pname}/resources/app.asar \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ stdenv.cc.cc ]}"
--add-flags $out/share/${pname}/resources/app.asar
'';
meta = with lib; {

View File

@ -8,15 +8,11 @@
, copyDesktopItems
, vencord
, electron
, pipewire
, libpulseaudio
, libicns
, libnotify
, jq
, moreutils
, cacert
, nodePackages
, speechd
, withTTS ? true
# Enables the use of vencord from nixpkgs instead of
# letting vesktop manage it's own version
@ -116,15 +112,6 @@ stdenv.mkDerivation (finalAttrs: {
# this is consistent with other nixpkgs electron packages and upstream, as far as I am aware
installPhase =
let
# this is mainly required for venmic
libPath = lib.makeLibraryPath ([
libpulseaudio
libnotify
pipewire
stdenv.cc.cc.lib
] ++ lib.optional withTTS speechd);
in
''
runHook preInstall
@ -139,7 +126,6 @@ stdenv.mkDerivation (finalAttrs: {
done
makeWrapper ${electron}/bin/electron $out/bin/vesktop \
--prefix LD_LIBRARY_PATH : ${libPath} \
--add-flags $out/opt/Vesktop/resources/app.asar \
${lib.optionalString withTTS "--add-flags \"--enable-speech-dispatcher\""} \
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"

View File

@ -13,7 +13,10 @@
, unzip
, pkgs
, pkgsBuildHost
, pipewire
, libsecret
, libpulseaudio
, speechd
, info
}:
@ -190,6 +193,23 @@ in (chromium.override { upstream-info = info.chromium; }).mkDerivation (base: {
runHook postInstall
'';
postFixup =
let
libPath = lib.makeLibraryPath [
libnotify
pipewire
stdenv.cc.cc.lib
libsecret
libpulseaudio
speechd
];
in
base.postFixup + ''
patchelf \
--add-rpath "${libPath}" \
$out/libexec/electron/electron
'';
requiredSystemFeatures = [ "big-parallel" ];
passthru = {