diff --git a/pkgs/tools/admin/realvnc-vnc-viewer/darwin.nix b/pkgs/tools/admin/realvnc-vnc-viewer/darwin.nix new file mode 100644 index 000000000000..0a27e2733b51 --- /dev/null +++ b/pkgs/tools/admin/realvnc-vnc-viewer/darwin.nix @@ -0,0 +1,28 @@ +{ lib +, stdenvNoCC +, fetchurl +, undmg +, pname +, version +, meta +}: +stdenvNoCC.mkDerivation (finalAttrs: { + inherit pname version meta; + + src = fetchurl { + url = "https://downloads.realvnc.com/download/file/viewer.files/VNC-Viewer-${finalAttrs.version}-MacOSX-universal.dmg"; + sha256 = "0k72fdnx1zmyi9z5n3lazc7s70gcddxq0s73akp0al0y9hzq9prh"; + }; + sourceRoot = "."; + + nativeBuildInputs = [ undmg ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/Applications + cp -r *.app $out/Applications + + runHook postInstall + ''; +}) diff --git a/pkgs/tools/admin/realvnc-vnc-viewer/default.nix b/pkgs/tools/admin/realvnc-vnc-viewer/default.nix index 6ed191484d5d..18ec2a21200b 100644 --- a/pkgs/tools/admin/realvnc-vnc-viewer/default.nix +++ b/pkgs/tools/admin/realvnc-vnc-viewer/default.nix @@ -1,49 +1,14 @@ { lib , stdenv -, fetchurl -, autoPatchelfHook -, rpmextract -, libX11 -, libXext +, callPackage }: - -stdenv.mkDerivation rec { +let pname = "realvnc-vnc-viewer"; version = "7.5.1"; - src = { - "x86_64-linux" = fetchurl { - url = "https://downloads.realvnc.com/download/file/viewer.files/VNC-Viewer-${version}-Linux-x64.rpm"; - sha256 = "sha256-Ull9iNi8NxB12YwEThWE0P9k1xOV2LZnebuRrVH/zwI="; - }; - }.${stdenv.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); - - nativeBuildInputs = [ autoPatchelfHook rpmextract ]; - buildInputs = [ libX11 libXext stdenv.cc.cc.libgcc or null ]; - - unpackPhase = '' - rpmextract $src - ''; - - postPatch = '' - substituteInPlace ./usr/share/applications/realvnc-vncviewer.desktop \ - --replace /usr/share/icons/hicolor/48x48/apps/vncviewer48x48.png vncviewer48x48.png - substituteInPlace ./usr/share/mimelnk/application/realvnc-vncviewer-mime.desktop \ - --replace /usr/share/icons/hicolor/48x48/apps/vncviewer48x48.png vncviewer48x48.png - ''; - - installPhase = '' - runHook preInstall - - mv usr $out - - runHook postInstall - ''; - meta = with lib; { description = "VNC remote desktop client software by RealVNC"; homepage = "https://www.realvnc.com/en/connect/download/viewer/"; - mainProgram = "vncviewer"; sourceProvenance = with sourceTypes; [ binaryNativeCode ]; license = { fullName = "VNC Connect End User License Agreement"; @@ -51,6 +16,8 @@ stdenv.mkDerivation rec { free = false; }; maintainers = with maintainers; [ emilytrau onedragon ]; - platforms = [ "x86_64-linux" ]; + platforms = [ "x86_64-linux" ] ++ platforms.darwin; }; -} +in +if stdenv.isDarwin then callPackage ./darwin.nix { inherit pname version meta; } +else callPackage ./linux.nix { inherit pname version meta; } diff --git a/pkgs/tools/admin/realvnc-vnc-viewer/linux.nix b/pkgs/tools/admin/realvnc-vnc-viewer/linux.nix new file mode 100644 index 000000000000..63060e48625c --- /dev/null +++ b/pkgs/tools/admin/realvnc-vnc-viewer/linux.nix @@ -0,0 +1,46 @@ +{ lib +, stdenv +, fetchurl +, autoPatchelfHook +, rpmextract +, libX11 +, libXext +, pname +, version +, meta +}: + +stdenv.mkDerivation (finalAttrs: { + inherit pname version; + + src = { + "x86_64-linux" = fetchurl { + url = "https://downloads.realvnc.com/download/file/viewer.files/VNC-Viewer-${finalAttrs.version}-Linux-x64.rpm"; + sha256 = "sha256-Ull9iNi8NxB12YwEThWE0P9k1xOV2LZnebuRrVH/zwI="; + }; + }.${stdenv.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); + + nativeBuildInputs = [ autoPatchelfHook rpmextract ]; + buildInputs = [ libX11 libXext stdenv.cc.cc.libgcc or null ]; + + unpackPhase = '' + rpmextract $src + ''; + + postPatch = '' + substituteInPlace ./usr/share/applications/realvnc-vncviewer.desktop \ + --replace /usr/share/icons/hicolor/48x48/apps/vncviewer48x48.png vncviewer48x48.png + substituteInPlace ./usr/share/mimelnk/application/realvnc-vncviewer-mime.desktop \ + --replace /usr/share/icons/hicolor/48x48/apps/vncviewer48x48.png vncviewer48x48.png + ''; + + installPhase = '' + runHook preInstall + + mv usr $out + + runHook postInstall + ''; + + meta = meta // { mainProgram = "vncviewer"; }; +})