about summary refs log tree commit diff
path: root/pkgs/applications/networking/instant-messengers/fluffychat/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/instant-messengers/fluffychat/default.nix')
-rw-r--r--pkgs/applications/networking/instant-messengers/fluffychat/default.nix72
1 files changed, 48 insertions, 24 deletions
diff --git a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix
index bdd41c4cfa645..869ed18c2cb30 100644
--- a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix
+++ b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix
@@ -1,47 +1,68 @@
 { lib
+, fetchzip
 , fetchFromGitHub
 , imagemagick
 , mesa
 , libdrm
-, flutter313
+, flutter
 , pulseaudio
 , makeDesktopItem
 , gnome
+
+, targetFlutterPlatform ? "linux"
 }:
 
 let
   libwebrtcRpath = lib.makeLibraryPath [ mesa libdrm ];
+  pubspecLock = lib.importJSON ./pubspec.lock.json;
 in
-flutter313.buildFlutterApplication rec {
-  pname = "fluffychat";
-  version = "1.14.1";
+flutter.buildFlutterApplication (rec {
+  pname = "fluffychat-${targetFlutterPlatform}";
+  version = "1.17.1";
 
   src = fetchFromGitHub {
     owner = "krille-chan";
     repo = "fluffychat";
     rev = "refs/tags/v${version}";
-    hash = "sha256-VTpZvoyZXJ5SCKr3Ocfm4iT6Z/+AWg+SCw/xmp68kMg=";
+    hash = "sha256-SCZtdmpUaCwORIJgT9lQO/It+WSzkhBOd6liLzPBerU=";
   };
 
-  pubspecLock = lib.importJSON ./pubspec.lock.json;
+  inherit pubspecLock;
 
   gitHashes = {
     keyboard_shortcuts = "sha256-U74kRujftHPvpMOIqVT0Ph+wi1ocnxNxIFA1krft4Os=";
     wakelock_windows = "sha256-Dfwe3dSScD/6kvkP67notcbb+EgTQ3kEYcH7wpra2dI=";
   };
 
+  inherit targetFlutterPlatform;
+
+  meta = with lib; {
+    description = "Chat with your friends (matrix client)";
+    homepage = "https://fluffychat.im/";
+    license = licenses.agpl3Plus;
+    mainProgram = "fluffychat";
+    maintainers = with maintainers; [ mkg20001 gilice ];
+    platforms = [ "x86_64-linux" "aarch64-linux" ];
+    sourceProvenance = [ sourceTypes.fromSource ];
+  };
+} // lib.optionalAttrs (targetFlutterPlatform == "linux") {
+  nativeBuildInputs = [ imagemagick ];
+
+  runtimeDependencies = [ pulseaudio ];
+
+  extraWrapProgramArgs = "--prefix PATH : ${gnome.zenity}/bin";
+
+  env.NIX_LDFLAGS = "-rpath-link ${libwebrtcRpath}";
+
   desktopItem = makeDesktopItem {
     name = "Fluffychat";
-    exec = "@out@/bin/fluffychat";
+    exec = "fluffychat";
     icon = "fluffychat";
     desktopName = "Fluffychat";
     genericName = "Chat with your friends (matrix client)";
     categories = [ "Chat" "Network" "InstantMessaging" ];
   };
 
-  nativeBuildInputs = [ imagemagick ];
-  runtimeDependencies = [ pulseaudio ];
-  extraWrapProgramArgs = "--prefix PATH : ${gnome.zenity}/bin";
   postInstall = ''
     FAV=$out/app/data/flutter_assets/assets/favicon.png
     ICO=$out/share/icons
@@ -54,20 +75,23 @@ flutter313.buildFlutterApplication rec {
       mkdir -p $D
       convert $FAV -resize ''${size}x''${size} $D/fluffychat.png
     done
-    substituteInPlace $out/share/applications/*.desktop \
-      --subst-var out
 
     patchelf --add-rpath ${libwebrtcRpath} $out/app/lib/libwebrtc.so
   '';
-
-  env.NIX_LDFLAGS = "-rpath-link ${libwebrtcRpath}";
-
-  meta = with lib; {
-    description = "Chat with your friends (matrix client)";
-    homepage = "https://fluffychat.im/";
-    license = licenses.agpl3Plus;
-    maintainers = with maintainers; [ mkg20001 gilice ];
-    platforms = [ "x86_64-linux" "aarch64-linux" ];
-    sourceProvenance = [ sourceTypes.fromSource ];
-  };
-}
+} // lib.optionalAttrs (targetFlutterPlatform == "web") {
+  prePatch =
+    # https://github.com/krille-chan/fluffychat/blob/v1.17.1/scripts/prepare-web.sh
+    let
+      # Use Olm 1.3.2, the oldest version, for FluffyChat 1.14.1 which depends on olm_flutter 1.2.0.
+      olmVersion = pubspecLock.packages.flutter_olm.version;
+      olmJs = fetchzip {
+        url = "https://github.com/famedly/olm/releases/download/v${olmVersion}/olm.zip";
+        stripRoot = false;
+        hash = "sha256-Vl3Cp2OaYzM5CPOOtTHtUb1W48VXePzOV6FeiIzyD1Y=";
+      };
+    in
+    ''
+      rm -r assets/js/package
+      cp -r '${olmJs}/javascript' assets/js/package
+    '';
+})