mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-02-03 10:44:18 +00:00
Merge pull request #280398 from TomaSajt/jitsi-meet-electron
jitsi-meet-electron: 2022.10.1 -> 2023.11.3, build from source
This commit is contained in:
commit
463c64d23f
@ -1,60 +1,106 @@
|
||||
{ lib, stdenv
|
||||
, fetchurl
|
||||
, appimageTools
|
||||
{ lib
|
||||
, buildNpmPackage
|
||||
, fetchFromGitHub
|
||||
, copyDesktopItems
|
||||
, makeDesktopItem
|
||||
, makeWrapper
|
||||
, libpng
|
||||
, libX11
|
||||
, libXi
|
||||
, libXtst
|
||||
, zlib
|
||||
, electron
|
||||
, xorg
|
||||
, pipewire
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
buildNpmPackage rec {
|
||||
pname = "jitsi-meet-electron";
|
||||
version = "2022.10.1";
|
||||
version = "2023.11.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/jitsi/jitsi-meet-electron/releases/download/v${version}/jitsi-meet-x86_64.AppImage";
|
||||
sha256 = "sha256-98zuAsGT30paxszSO1XcMY8tsrMBeBLDFjK/JWhLC8s=";
|
||||
name = "${pname}-${version}.AppImage";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jitsi";
|
||||
repo = "jitsi-meet-electron";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-gE5CP0l3SrAHGNS6Hr5/MefTtE86JTmc85CwOmylEpg=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
name = "${pname}-${version}";
|
||||
inherit src;
|
||||
};
|
||||
nativeBuildInputs = [
|
||||
copyDesktopItems
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
dontUnpack = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
# robotjs node-gyp dependencies
|
||||
buildInputs = [
|
||||
libpng
|
||||
libX11
|
||||
libXi
|
||||
libXtst
|
||||
zlib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
npmDepsHash = "sha256-JZVJcKzG4X7YIUvIRWZsDQnHx+dNqCj6kFm8mZaSH2k=";
|
||||
|
||||
makeCacheWritable = true;
|
||||
|
||||
env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1;
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace main.js \
|
||||
--replace "require('electron-is-dev')" "false"
|
||||
'';
|
||||
|
||||
preBuild = ''
|
||||
# remove some prebuilt binaries
|
||||
find node_modules -type d -name prebuilds -exec rm -r {} +
|
||||
'';
|
||||
|
||||
postBuild = ''
|
||||
# generate .asar file
|
||||
# asarUnpack makes sure to unwrap binaries so that nix can see the RPATH
|
||||
npm exec electron-builder -- \
|
||||
--dir \
|
||||
-c.asarUnpack="**/*.node" \
|
||||
-c.electronDist=${electron}/libexec/electron \
|
||||
-c.electronVersion=${electron.version}
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin $out/share/${pname} $out/share/applications
|
||||
mkdir -p $out/share/jitsi-meet-electron
|
||||
cp -r dist/*-unpacked/{locales,resources{,.pak}} $out/share/jitsi-meet-electron
|
||||
|
||||
cp -a ${appimageContents}/{locales,resources} $out/share/${pname}
|
||||
cp -a ${appimageContents}/jitsi-meet.desktop $out/share/applications/${pname}.desktop
|
||||
cp -a ${appimageContents}/usr/share/icons $out/share
|
||||
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
|
||||
|
||||
substituteInPlace $out/share/applications/${pname}.desktop \
|
||||
--replace 'Exec=AppRun' 'Exec=${pname}'
|
||||
install -Dm644 resources/icons/512x512.png $out/share/icons/hicolor/512x512/apps/jitsi-meet-electron.png
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
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 xorg.libXtst pipewire ]}" \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
|
||||
'';
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "jitsi-meet-electron";
|
||||
exec = "jitsi-meet-electron %U";
|
||||
icon = "jitsi-meet-electron";
|
||||
desktopName = "Jitsi Meet";
|
||||
comment = meta.description;
|
||||
categories = [ "VideoConference" "AudioVideo" "Audio" "Video" "Network" ];
|
||||
mimeTypes = [ "x-scheme-handler/jitsi-meet" ];
|
||||
terminal = false;
|
||||
})
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
changelog = "https://github.com/jitsi/jitsi-meet-electron/releases/tag/${src.rev}";
|
||||
description = "Jitsi Meet desktop application powered by Electron";
|
||||
homepage = "https://github.com/jitsi/jitsi-meet-electron";
|
||||
license = licenses.asl20;
|
||||
maintainers = teams.jitsi.members;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
mainProgram = "jitsi-meet-electron";
|
||||
maintainers = teams.jitsi.members ++ [ maintainers.tomasajt ];
|
||||
inherit (electron.meta) platforms;
|
||||
};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user