biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / networking / instant-messengers / jitsi-meet-electron / default.nix
blob83a3b78e1d4bdeed3ac18877543a915081562cec
1 { lib
2 , buildNpmPackage
3 , fetchFromGitHub
4 , copyDesktopItems
5 , makeDesktopItem
6 , makeWrapper
7 , libpng
8 , libX11
9 , libXi
10 , libXtst
11 , zlib
12 , electron
15 buildNpmPackage rec {
16   pname = "jitsi-meet-electron";
17   version = "2024.3.0";
19   src = fetchFromGitHub {
20     owner = "jitsi";
21     repo = "jitsi-meet-electron";
22     rev = "v${version}";
23     hash = "sha256-BGN+t9Caw5n/NN1E5Oi/ruMLjoVh0jUlpzYR6vodHbw=";
24   };
26   nativeBuildInputs = [
27     copyDesktopItems
28     makeWrapper
29   ];
31   # robotjs node-gyp dependencies
32   buildInputs = [
33     libpng
34     libX11
35     libXi
36     libXtst
37     zlib
38   ];
40   npmDepsHash = "sha256-KanG8y+tYzswCCXjSkOlk+p9XKaouP2Z7IhsD5bDtRk=";
42   makeCacheWritable = true;
44   env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1;
46   postPatch = ''
47     substituteInPlace main.js \
48         --replace "require('electron-is-dev')" "false"
49   '';
51   preBuild = ''
52     # remove some prebuilt binaries
53     find node_modules -type d -name prebuilds -exec rm -r {} +
54   '';
56   postBuild = ''
57     # generate .asar file
58     # asarUnpack makes sure to unwrap binaries so that nix can see the RPATH
59     npm exec electron-builder -- \
60         --dir \
61         -c.asarUnpack="**/*.node" \
62         -c.electronDist=${electron}/libexec/electron \
63         -c.electronVersion=${electron.version}
64   '';
66   installPhase = ''
67     runHook preInstall
69     mkdir -p $out/share/jitsi-meet-electron
70     cp -r dist/*-unpacked/{locales,resources{,.pak}} $out/share/jitsi-meet-electron
72     makeWrapper ${lib.getExe electron} $out/bin/jitsi-meet-electron \
73         --add-flags $out/share/jitsi-meet-electron/resources/app.asar \
74         --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}" \
75         --inherit-argv0
77     install -Dm644 resources/icons/512x512.png $out/share/icons/hicolor/512x512/apps/jitsi-meet-electron.png
79     runHook postInstall
80   '';
82   desktopItems = [
83     (makeDesktopItem {
84       name = "jitsi-meet-electron";
85       exec = "jitsi-meet-electron %U";
86       icon = "jitsi-meet-electron";
87       desktopName = "Jitsi Meet";
88       comment = meta.description;
89       categories = [ "VideoConference" "AudioVideo" "Audio" "Video" "Network" ];
90       mimeTypes = [ "x-scheme-handler/jitsi-meet" ];
91       terminal = false;
92     })
93   ];
95   meta = with lib; {
96     changelog = "https://github.com/jitsi/jitsi-meet-electron/releases/tag/${src.rev}";
97     description = "Jitsi Meet desktop application powered by Electron";
98     homepage = "https://github.com/jitsi/jitsi-meet-electron";
99     license = licenses.asl20;
100     mainProgram = "jitsi-meet-electron";
101     maintainers = teams.jitsi.members ++ [ maintainers.tomasajt ];
102     inherit (electron.meta) platforms;
103   };