ripasso-cursive: cosmetic changes (#361736)
[NixPkgs.git] / pkgs / by-name / sy / synology-drive-client / package.nix
blob69f7b4d153c58d40fc10b6b6bb2322120ad68871
1 { stdenv, lib, writeScript, qt5, fetchurl, autoPatchelfHook, dpkg, glibc, cpio, xar, undmg, gtk3, pango, libxcb }:
2 let
3   pname = "synology-drive-client";
4   baseUrl = "https://global.synologydownload.com/download/Utility/SynologyDriveClient";
5   version = "3.5.1-16101";
6   buildNumber = lib.last (lib.splitString "-" version);
7   meta = with lib; {
8     description = "Desktop application to synchronize files and folders between the computer and the Synology Drive server";
9     homepage = "https://www.synology.com/en-global/dsm/feature/drive";
10     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
11     license = licenses.unfree;
12     maintainers = with maintainers; [ jcouyang MoritzBoehme ];
13     platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
14     mainProgram = "synology-drive";
15   };
16   passthru.updateScript = writeScript "update-synology-drive-client" ''
17     #!/usr/bin/env nix-shell
18     #!nix-shell -i bash -p curl common-updater-scripts
20     set -eu -o pipefail
22     version="$(curl -s https://www.synology.com/en-uk/releaseNote/SynologyDriveClient \
23              | grep -oP '(?<=data-version=")(\d.){2}\d-\d{5}' \
24              | head -1)"
25     update-source-version synology-drive-client "$version"
26   '';
28   linux = stdenv.mkDerivation {
29     inherit pname version meta passthru;
31     src = fetchurl {
32       url = "${baseUrl}/${version}/Ubuntu/Installer/synology-drive-client-${buildNumber}.x86_64.deb";
33       sha256 = "sha256-VeS5bPcMM4JDCSH5GXkl4OgQjrPKaNDh5PfX28/zqaU=";
34     };
36     nativeBuildInputs = [ qt5.wrapQtAppsHook autoPatchelfHook dpkg ];
38     buildInputs = [ glibc gtk3 pango libxcb ];
40     unpackPhase = ''
41       mkdir -p $out
42       dpkg -x $src $out
43       rm -rf $out/usr/lib/nautilus
44       rm -rf $out/opt/Synology/SynologyDrive/package/cloudstation/icon-overlay
45     '';
47     installPhase = ''
48       cp -av $out/usr/* $out
49       rm -rf $out/usr
50       runHook postInstall
51     '';
53     postInstall = ''
54       substituteInPlace $out/bin/synology-drive --replace /opt $out/opt
55     '';
56   };
58   darwin = stdenv.mkDerivation {
59     inherit pname version meta passthru;
61     src = fetchurl {
62       url = "${baseUrl}/${version}/Mac/Installer/synology-drive-client-${buildNumber}.dmg";
63       sha256 = "sha256-VyhROpQCeVHNxxYgPUZdAlng15aJ1/IYadz30FThlsw=";
64     };
66     nativeBuildInputs = [ cpio xar undmg ];
68     postUnpack = ''
69       xar -xf 'Install Synology Drive Client.pkg'
70       cd synology-drive.installer.pkg
71       gunzip -dc Payload | cpio -i
72     '';
74     sourceRoot = ".";
76     installPhase = ''
77       mkdir -p $out/Applications/
78       cp -R 'Synology Drive Client.app' $out/Applications/
79     '';
80   };
81 in if stdenv.hostPlatform.isDarwin then darwin else linux