about summary refs log tree commit diff
path: root/pkgs/applications/networking
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2023-05-15 15:38:58 +0200
committerGitHub <noreply@github.com>2023-05-15 15:38:58 +0200
commit1e8edc1e60ac1e75ff516dae1595673be3b986df (patch)
tree6bd986d9db30ad12dcec1715d3f78b539a3854f9 /pkgs/applications/networking
parentdde3cb6977d1ad70feb5652e1b410816314a5ed6 (diff)
parent11b967964222e17ea69e33bab13d1bba7156d7bc (diff)
Merge pull request #205954 from hellwolf/fix-insync-v3
Diffstat (limited to 'pkgs/applications/networking')
-rw-r--r--pkgs/applications/networking/insync/default.nix123
-rw-r--r--pkgs/applications/networking/insync/v3.nix82
2 files changed, 94 insertions, 111 deletions
diff --git a/pkgs/applications/networking/insync/default.nix b/pkgs/applications/networking/insync/default.nix
index 0c96262fff67a..6269502ba87de 100644
--- a/pkgs/applications/networking/insync/default.nix
+++ b/pkgs/applications/networking/insync/default.nix
@@ -1,34 +1,26 @@
-{ lib, stdenv, fetchurl, makeWrapper, autoPatchelfHook }:
+{ lib
+, writeShellScript
+, buildFHSEnv
+, stdenv
+, fetchurl
+, autoPatchelfHook
+, dpkg
+, nss
+, libvorbis
+, libdrm
+, libGL
+, wayland
+, libthai
+}:
 
-stdenv.mkDerivation rec {
+let
   pname = "insync";
-  version = "1.5.7.37371";
-  src =
-    if stdenv.hostPlatform.system == "x86_64-linux" then
-      fetchurl {
-        url = "http://s.insynchq.com/builds/insync-portable_${version}_amd64.tar.bz2";
-        sha256 = "1cm3q6y2crw6pcsvh21sbkmh1hin7xl4fyslc96nbyql8rxsky5n";
-      }
-    else
-      throw "${pname}-${version} is not supported on ${stdenv.hostPlatform.system}";
-
-  nativeBuildInputs = [ makeWrapper autoPatchelfHook ];
-
-  postPatch = ''
-    patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" client/insync-portable
-  '';
-
-  installPhase = ''
-    mkdir -p $out/bin
-    cp -a client $out/client
-    makeWrapper $out/client/insync-portable $out/bin/insync --set LC_TIME C
-  '';
-
-  meta = {
+  version = "3.8.5.50499";
+  meta = with lib; {
     platforms = ["x86_64-linux"];
     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
-    license = lib.licenses.unfree;
-    maintainers = [ ];
+    license = licenses.unfree;
+    maintainers = with maintainers; [ hellwolf ];
     homepage = "https://www.insynchq.com";
     description = "Google Drive sync and backup with multiple account support";
     longDescription = ''
@@ -38,8 +30,81 @@ stdenv.mkDerivation rec {
      and built in sharing.
 
      There is a 15-day free trial, and it is a paid application after that.
+
+     Known bug(s):
+
+     1) Currently the system try icon does not render correctly.
+     2) libqtvirtualkeyboardplugin does not have necessary Qt library shipped from vendor.
+    '';
+  };
+  insync-pkg = stdenv.mkDerivation {
+    inherit pname version;
+
+    src = fetchurl {
+      # Find a binary from https://www.insynchq.com/downloads/linux#ubuntu.
+      url = "https://cdn.insynchq.com/builds/linux/${pname}_${version}-lunar_amd64.deb";
+      sha256 = "sha256-mpMJe8LAmO9OrqRIEWuxfVNeh5ANvjZIEHFz8cXYObY=";
+    };
+
+    buildInputs = [
+      nss
+      libvorbis
+      libdrm
+      libGL
+      wayland
+      libthai
+    ];
+
+    nativeBuildInputs = [ autoPatchelfHook dpkg ];
+
+    unpackPhase = ''
+      dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner
+    '';
+
+    installPhase = ''
+      runHook preInstall
+
+      mkdir -p $out/bin $out/lib $out/share
+      cp -R usr/* $out/
+
+      # use system glibc
+      rm -f $out/lib/insync/{libgcc_s.so.1,libstdc++.so.6}
+
+      # remove badly packaged plugins
+      rm $out/lib/insync/PySide2/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so
+
+      runHook postInstall
     '';
-    # download URL removed
-    broken = true;
+
+    dontConfigure = true;
+    dontBuild = true;
+
+    # NB! This did the trick, otherwise it segfaults! However I don't understand why!
+    dontStrip = true;
+
+    inherit meta;
   };
+in buildFHSEnv { # ref: pkgs/build-support/build-fhsenv-bubblewrap/default.nix
+  name = "${pname}-${version}";
+  inherit meta;
+
+  # for including insync's xdg data dirs
+  extraOutputsToInstall = [ "share" ];
+
+  targetPkgs = pkgs: [
+    insync-pkg
+  ];
+
+  multiPkgs = pkgs: with pkgs; [
+    # apparently only package needed for the FHS :)
+    libudev0-shim
+  ];
+
+  runScript = writeShellScript "insync-wrapper.sh" ''
+    # QT_STYLE_OVERRIDE was used to suppress a QT warning, it should have no actual effect for this binary.
+    export QT_STYLE_OVERRIDE=Fusion
+    exec "${insync-pkg.outPath}/lib/insync/insync" "$@"
+  '';
+  # "insync start" command starts a daemon.
+  dieWithParent = false;
 }
diff --git a/pkgs/applications/networking/insync/v3.nix b/pkgs/applications/networking/insync/v3.nix
deleted file mode 100644
index b121b1c1ec5e3..0000000000000
--- a/pkgs/applications/networking/insync/v3.nix
+++ /dev/null
@@ -1,82 +0,0 @@
-{ stdenv
-, lib
-, fetchurl
-, makeWrapper
-, dpkg
-, libxcb
-, libGL
-, nss
-, libthai
-, wayland
-, alsa-lib
-, qtvirtualkeyboard
-, qtwebchannel
-, qtwebsockets
-, qtlocation
-, qtwebengine
-, autoPatchelfHook
-, wrapQtAppsHook
-}:
-
-stdenv.mkDerivation rec {
-  pname = "insync";
-  version = "3.8.5.50499";
-
-  src = fetchurl {
-    url = "https://cdn.insynchq.com/builds/linux/${pname}_${version}-focal_amd64.deb";
-    hash = "sha256-CtDwU0Cey12kDjEX+Y9x7pfKNARfKDopWsDVRaA1Zts=";
-  };
-
-  postPatch = ''
-    substituteInPlace usr/bin/insync --replace /usr/lib/insync $out/usr/lib/insync
-  '';
-
-  buildInputs = [
-    alsa-lib
-    libGL
-    libthai
-    libxcb
-    nss
-    qtlocation
-    qtvirtualkeyboard
-    qtwebchannel
-    qtwebengine
-    qtwebsockets
-    wayland
-  ];
-
-  nativeBuildInputs = [ autoPatchelfHook dpkg makeWrapper wrapQtAppsHook ];
-
-  unpackPhase = ''
-    dpkg-deb --fsys-tarfile $src | tar -x --no-same-permissions --no-same-owner
-  '';
-
-  installPhase = ''
-    mkdir -p $out/bin $out/lib $out/share
-    cp -R usr/* $out/
-    rm $out/lib/insync/libGLX.so.0
-    rm $out/lib/insync/libQt5*
-    sed -i 's|/usr/lib/insync|/lib/insync|' "$out/bin/insync"
-    wrapQtApp "$out/lib/insync/insync"
-  '';
-
-  dontConfigure = true;
-  dontBuild = true;
-
-  meta = with lib; {
-    platforms = ["x86_64-linux"];
-    sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
-    license = licenses.unfree;
-    maintainers = with maintainers; [ ];
-    homepage = "https://www.insynchq.com";
-    description = "Google Drive sync and backup with multiple account support";
-    longDescription = ''
-     Insync is a commercial application that syncs your Drive files to your
-     computer.  It has more advanced features than Google's official client
-     such as multiple account support, Google Doc conversion, symlink support,
-     and built in sharing.
-
-     There is a 15-day free trial, and it is a paid application after that.
-    '';
-  };
-}