1{
2 lib,
3 flutter327,
4 fetchFromGitHub,
5 autoPatchelfHook,
6 webkitgtk_4_1,
7 libnotify,
8 libayatana-appindicator,
9 jdk,
10 mpv,
11}:
12
13flutter327.buildFlutterApplication rec {
14 pname = "bluebubbles";
15 version = "1.15.4";
16
17 src = fetchFromGitHub {
18 owner = "BlueBubblesApp";
19 repo = "bluebubbles-app";
20 tag = "v${version}+73-desktop";
21 hash = "sha256-+JCj4EuwFbzE4u+7iJ+v9FQuLVt1tozwBufw+eL5usk=";
22 };
23
24 pubspecLock = lib.importJSON ./pubspec.lock.json;
25
26 gitHashes = {
27 desktop_webview_auth = "sha256-n3lvYFUzm/1sCwQBJ3Ovup4Mq7lqGJ17ktk3TJrHhKE=";
28 disable_battery_optimization = "sha256-IsfclmbdLvju+0VWElFz9brdVntRESFB+PF8UPJBL2E=";
29 firebase_dart = "sha256-jq4Y5ApGPrXcLN3gwC9NuGN/EQkl5u64iMzL8KG02Sc=";
30 gesture_x_detector = "sha256-H3OJxDhESWwnpRky9jS9RIBiZ7gSqWQ/j0x/1VvRb5M=";
31 local_notifier = "sha256-0vajd2XNGpV9aqywbCUvDC2SLjwxh1LmshTa5yttQUI=";
32 permission_handler_windows = "sha256-9h0wEOgY6gtqaSyH9x2fbvH8Y0EfoVs/qNqwwI5d18k=";
33 video_thumbnail = "sha256-7IbKg6bBA5D8ODwMNwJqIohTCbAox56TMgoI07CbrPw=";
34 };
35
36 nativeBuildInputs = [ autoPatchelfHook ];
37
38 buildInputs = [
39 webkitgtk_4_1
40 libnotify
41 libayatana-appindicator
42 jdk
43 mpv
44 ];
45
46 # distributed in release tarballs under `data/flutter_assets/.env`, necessary for build and runtime
47 preBuild = ''
48 echo 'TENOR_API_KEY=AIzaSyAQwUlgo8sF5FBuIiampkfzaGgVPMglcGk' > .env
49 '';
50
51 postInstall = ''
52 sed -i 's#Icon=.*/bluebubbles.png#Icon=bluebubbles#g' snap/gui/bluebubbles.desktop
53 install -Dm0644 snap/gui/bluebubbles.desktop $out/share/applications/bluebubbles.desktop
54 install -Dm0644 snap/gui/bluebubbles.png $out/share/pixmaps/bluebubbles.png
55 '';
56
57 extraWrapProgramArgs = ''
58 --prefix LD_LIBRARY_PATH : $out/app/bluebubbles/lib
59 '';
60
61 meta = {
62 description = "Cross-platform iMessage client";
63 homepage = "https://github.com/BlueBubblesApp/bluebubbles-app";
64 mainProgram = "bluebubbles";
65 license = lib.licenses.asl20;
66 platforms = lib.platforms.linux;
67 maintainers = with lib.maintainers; [
68 zacharyweiss
69 ];
70 };
71}