about summary refs log tree commit diff
path: root/pkgs/by-name/we/wechat-uos/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/we/wechat-uos/package.nix')
-rw-r--r--pkgs/by-name/we/wechat-uos/package.nix63
1 files changed, 48 insertions, 15 deletions
diff --git a/pkgs/by-name/we/wechat-uos/package.nix b/pkgs/by-name/we/wechat-uos/package.nix
index d151c022ed66b..5a794cde2a34f 100644
--- a/pkgs/by-name/we/wechat-uos/package.nix
+++ b/pkgs/by-name/we/wechat-uos/package.nix
@@ -60,11 +60,7 @@
       └── uos
           └── .license.key
   */
-  uosLicense ? requireFile {
-    name = "license.tar.gz";
-    url = "https://www.uniontech.com";
-    sha256 = "53760079c1a5b58f2fa3d5effe1ed35239590b288841d812229ef4e55b2dbd69";
-  }
+  uosLicense ? null
 }:
 let
   wechat-uos-env = stdenvNoCC.mkDerivation {
@@ -87,6 +83,30 @@ let
     preferLocalBuild = true;
   };
 
+  uosLicenseUnzipped = stdenvNoCC.mkDerivation {
+    name = "uos-license-unzipped";
+    src =
+      if uosLicense == null then
+        requireFile
+          {
+            name = "license.tar.gz";
+            url = "https://www.uniontech.com";
+            sha256 = "53760079c1a5b58f2fa3d5effe1ed35239590b288841d812229ef4e55b2dbd69";
+          } else uosLicense;
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out
+      cp -r * $out/
+
+      runHook postInstall
+    '';
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = "sha256-pNftwtUZqBsKBSPQsEWlYLlb6h2Xd9j56ZRMi8I82ME=";
+  };
+
   wechat-uos-runtime = with xorg; [
     stdenv.cc.cc
     stdenv.cc.libc
@@ -149,23 +169,25 @@ let
     bzip2
   ];
 
+  sources = import ./sources.nix;
+
   wechat = stdenvNoCC.mkDerivation
     rec {
       pname = "wechat-uos";
-      version = "1.0.0.238";
+      version = sources.version;
 
       src = {
         x86_64-linux = fetchurl {
-          url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_${version}_amd64.deb";
-          hash = "sha256-NxAmZ526JaAzAjtAd9xScFnZBuwD6i2wX2/AEqtAyWs=";
+          url = sources.amd64_url;
+          hash = sources.amd64_hash;
         };
         aarch64-linux = fetchurl {
-          url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_${version}_arm64.deb";
-          hash = "sha256-3ru6KyBYXiuAlZuWhyyvtQCWbOJhGYzker3FS0788RE=";
+          url = sources.arm64_url;
+          hash = sources.arm64_hash;
         };
         loongarch64-linux = fetchurl {
-          url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_${version}_loongarch64.deb";
-          hash = "sha256-iuJeLMKD6v8J8iKw3+cyODN7PZQrLpi9p0//mkI0ujE=";
+          url = sources.loongarch64_url;
+          hash = sources.loongarch64_hash;
         };
       }.${stdenv.system} or (throw "${pname}-${version}: ${stdenv.system} is unsupported.");
 
@@ -195,11 +217,10 @@ let
         dpkg -x $src ./wechat-uos
         dpkg -x $uosSrc ./wechat-uos-old-source
 
-        tar -xvf $uosLicense
-
         runHook postUnpack
       '';
 
+      # Use ln for license to prevent being garbage collection
       installPhase = ''
         runHook preInstall
         mkdir -p $out
@@ -207,7 +228,7 @@ let
         cp -r wechat-uos/* $out
 
         mkdir -pv $out/usr/lib/wechat-uos/license
-        cp -r license/* $out/usr/lib/wechat-uos/license
+        ln -s ${uosLicenseUnzipped}/* $out/usr/lib/wechat-uos/license/
         cp -r wechat-uos-old-source/usr/lib/license/libuosdevicea.so $out/usr/lib/wechat-uos/license/
 
         runHook postInstall
@@ -229,6 +250,16 @@ buildFHSEnv {
   runScript = writeShellScript "wechat-uos-launcher" ''
     export QT_QPA_PLATFORM=xcb
     export LD_LIBRARY_PATH=${lib.makeLibraryPath wechat-uos-runtime}
+
+    if [[ ''${XMODIFIERS} =~ fcitx ]]; then
+      export QT_IM_MODULE=fcitx
+      export GTK_IM_MODULE=fcitx
+    elif [[ ''${XMODIFIERS} =~ ibus ]]; then
+      export QT_IM_MODULE=ibus
+      export GTK_IM_MODULE=ibus
+      export IBUS_USE_PORTAL=1
+    fi
+
     ${wechat.outPath}/opt/apps/com.tencent.wechat/files/wechat
   '';
   extraInstallCommands = ''
@@ -244,5 +275,7 @@ buildFHSEnv {
   '';
   targetPkgs = pkgs: [ wechat-uos-env ];
 
+  passthru.updateScript = ./update.sh;
+
   extraOutputsToInstall = [ "usr" "var/lib/uos" "var/uos" "etc" ];
 }