NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
18.37k stars 14.32k forks source link

Package request: remotedesktopmanager, rdm, remote desktop manager #312937

Open muratcabuk opened 6 months ago

muratcabuk commented 6 months ago

Project description

Remote Desktop Manager (RDM) centralizes all remote connections on a single platform that is securely shared between users and across the entire team. With support for hundreds of integrated technologies — including multiple protocols and VPNs — along with built-in enterprise-grade password management tools, global and granular-level access controls, and robust mobile apps to complement desktop clients for Windows and Mac, RDM is a IT toolbox for remote access. RDM empowers IT departments to drive security, speed and productivity throughout the organization, while reducing inefficiency, cost and risk.

Metadata


Add a :+1: reaction to issues you find important.

muratcabuk commented 6 months ago

The application is written in dotnet and currently only has deb and rpm packages available. Using the deb package, I wrote the following code. When I build and run it, it throws an error and crashes. Upon examining the logs, I get the following error. When I visit the URL mentioned in the error, it suggests setting the DOTNET_SYSTEM_GLOBALIZATION_INVARIANT="1" environment variable. As you can see in the code, I have already set the environment variable, but I am still getting the same error.

"ERROR System.Globalization.CultureNotFoundException: Only the invariant culture is supported in globalization-invariant mode. See https://aka.ms/GlobalizationInvariantMode for more information. (Parameter 'name') en-US is an invalid culture identifier."

{ lib,
  stdenv, 
  fetchurl, 
  dpkg,
  webkitgtk,
  cacert,
  libsecret,
  vte,
  libxcrypt,
  libsoup_3,
  webkitgtk_4_1,
  lttng-ust_2_12,
  libxcrypt-legacy,
  icu,
  gtk3,
  dotnet-sdk_8,

  makeWrapper,
  autoPatchelfHook

  }:

stdenv.mkDerivation rec {
  pname = "rdm";
  version = "2024.1.1.3";

  src = fetchurl {
    url = "https://cdn.devolutions.net/download/Linux/RDM/${version}/RemoteDesktopManager_${version}_amd64.deb";
    sha256 = "C70B33945618D000825994A9261C1473DA05525717CB06AACE3220F17197C780";
  };

  dontConfigure = true;
  dontBuild = true;

  nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook];

  buildInputs = [ dpkg
                  cacert
                  libsecret
                  vte
                  libxcrypt
                  libsoup_3
                  webkitgtk
                  webkitgtk_4_1
                  lttng-ust_2_12
                  libxcrypt-legacy
                  icu.dev
                  icu
                  gtk3
                  gtk3.out
                  dotnet-sdk_8

                  ];

  unpackPhase = ''
    dpkg-deb -x $src $out
  '';

  installPhase = ''
    runHook preInstall

    export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT="1"

    mkdir -p $out/usr/bin

    echo "export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1" > $out/bin/remotedesktopmanager
    echo "exec $out/usr/lib/devolutions/RemoteDesktopManager/RemoteDesktopManager \$@" >> $out/bin/remotedesktopmanager

    ln -s $out/bin/remotedesktopmanager $out/bin/rdm
    ln -s $out/bin/remotedesktopmanager $out/usr/bin/remotedesktopmanager

    wrapProgram $out/bin/remotedesktopmanager --prefix LD_LIBRARY_PATH : ${gtk3}/lib:${gtk3.out}/lib 

    runHook postInstall
  '';

  shellHook = ''
    export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT="1"
  '';

  meta = {
    description = "Devolutions Remote Desktop Manager";
    homepage = "https://devolutions.net/remote-desktop-manager/";

  };
}
muratcabuk commented 6 months ago

I changed the code. It worked after change the config file directly. I’m stuck on the error below.

Error

 ERROR SILENT GLib.GException: Unrecognized image file format
   at Gdk.PixbufLoader.Close()
   at Gdk.PixbufLoader.InitFromBuffer(Byte[] buffer)
   at Devolutions.RemoteDesktopManager.ImageHelper.CreateImageFromSVGContent(String content, Int32 size)
   at Devolutions.RemoteDesktopManager.Managers.ImageManager.SvgConverterService.Convert(String svgText, String name, Int32 size)
   at Devolutions.RemoteDesktopManager.Managers.ImageResources.GetSvgImage(String svgName, ImagePaletteType palette, Int32 originalSize, ImageEffect effect, Nullable`1 deviceDPI)
   at Client.Helpers.BuilderHelper.GetSvg(String name, String size, String color)
   at Client.Helpers.BuilderHelper.TranslateImage(Image image)

Nix Code

 { lib,
  stdenv, 
  fetchurl, 
  dpkg,
  webkitgtk,
  cacert,
  libsecret,
  vte,
  libxcrypt,
  libsoup_3,
  webkitgtk_4_1,
  lttng-ust_2_12,
  libxcrypt-legacy,
  icu,
  gtk3,
  gdk-pixbuf,
  librsvg,
  shared-mime-info,
  dotnet-sdk_8,

  makeWrapper,
  autoPatchelfHook

  }:

stdenv.mkDerivation rec {
  pname = "rdm";
  version = "2024.1.1.3";

  src = fetchurl {
    url = "https://cdn.devolutions.net/download/Linux/RDM/${version}/RemoteDesktopManager_${version}_amd64.deb";
    sha256 = "C70B33945618D000825994A9261C1473DA05525717CB06AACE3220F17197C780";
  };

  dontConfigure = true;
  dontBuild = true;

  nativeBuildInputs = [ dpkg makeWrapper autoPatchelfHook];

  buildInputs = [ dpkg
                  cacert
                  libsecret
                  vte
                  libxcrypt
                  libsoup_3
                  webkitgtk
                  webkitgtk_4_1
                  lttng-ust_2_12
                  libxcrypt-legacy
                  icu.dev
                  icu
                  gtk3
                  gtk3.out
                  gdk-pixbuf
                  librsvg
                  shared-mime-info
                  dotnet-sdk_8

                  ];

  unpackPhase = ''
    dpkg-deb -x $src $out
  '';

  installPhase = ''
    runHook preInstall
    mkdir -p $out/usr/bin

    ln -s $out/bin/remotedesktopmanager $out/bin/rdm
    ln -s $out/bin/remotedesktopmanager $out/usr/bin/remotedesktopmanager

    runHook postInstall
  '';

preFixup = ''
gappsWrapperArgs+=(
    # Thumbnailers
    --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
    --prefix XDG_DATA_DIRS : "${librsvg}/share"
    --prefix XDG_DATA_DIRS : "${shared-mime-info}/share"
  )
  '';

preInstall = ''
  echo "exec $out/usr/lib/devolutions/RemoteDesktopManager/RemoteDesktopManager \$@" > $out/bin/remotedesktopmanager

  wrapProgram $out/bin/remotedesktopmanager --prefix LD_LIBRARY_PATH : ${gtk3}/lib:${gtk3.out}/lib 
  wrapProgram $out/bin/remotedesktopmanager --prefix LD_LIBRARY_PATH : ${icu}/lib:${icu.dev}/lib

  tee  $out/usr/lib/devolutions/RemoteDesktopManager/RemoteDesktopManager.runtimeconfig.json << END
    { 
        "runtimeOptions": {
        "tfm": "net8.0",
        "includedFrameworks": [
          {
            "name": "Microsoft.NETCore.App",
            "version": "8.0.4"
          }
        ],
          "configProperties": {
              "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
              "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false,
              "System.Globalization.Invariant": false
        }
      }
    }

'';

postInstall = ''

'';

  meta = {
    description = "Devolutions Remote Desktop Manager";
    homepage = "https://devolutions.net/remote-desktop-manager/";

  };
}