Unverified Commit f73cbfb2 authored by Weijia Wang's avatar Weijia Wang Committed by GitHub
Browse files

Merge pull request #242078 from emilytrau/realvnc-darwin

realvnc-vnc-viewer: support darwin
parents a899d358 f46093d1
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
{ 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
  '';
})
+6 −39
Original line number Diff line number Diff line
{ 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; }
+46 −0
Original line number Diff line number Diff line
{ 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"; };
})