Nixpkgs: Add Apache Guacamole

Created on 21 Aug 2016  路  9Comments  路  Source: NixOS/nixpkgs

Issue description

Add clientless remote desktop gateway: https://guacamole.incubator.apache.org/

Steps to reproduce

Create nix expression.

Technical details

https://guacamole.incubator.apache.org/doc/gug/installing-guacamole.html

I will look into packaging this. It may be more fruitful than gateone or cloud9.

Most helpful comment

well... it's possible i got this working again... still needs some cleanup, but i combined @Shados 's work and it's up and running.

All 9 comments

I actually have a local setup of this, but it is done in a very hacky way, so probably better off if you work on a service expression yourself. Probably need some improvements to the existing Tomcat module first though, from what I remember.

@Shados Please post any expressions you may have build.
For the client, i just grab the binary (do you build it?):
wget https://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.9.war/download\?use_mirror\=heanet -O guacamole-0.9.9.war

I've not made a service yet. You've hit on the issue, the tomcat setup is more convoluted, especially with DB authentication and the properties/user-mappings.

@Shados: this works for the server (depends on #17936) (note removing a warning due to a deprecated function in glibc).

{stdenv, fetchFromGitHub, autoreconfHook, cairo, libjpeg_turbo, libpng, libossp_uuid
,freerdp, pango, libssh2, libvncserver, libpulseaudio ,openssl, libvorbis, libwebp, pkgconfig, perl, libtelnet,
makeWrapper}:

stdenv.mkDerivation rec {
  name = "guacamole-${version}";
  version = "0.9.9";

  src = fetchFromGitHub {
      owner = "apache";
      repo = "incubator-guacamole-server";
      rev = "6c0862e82da8ee737ee655c7815b1851de6d0488";
      sha256 = "1wzlg06yzr3lbxdjjj9rkhdv6g6nr62sdmkklq5f99fj1jclgvic";
  };
  buildInputs = with stdenv; [ autoreconfHook pkgconfig cairo libpng libjpeg_turbo libossp_uuid freerdp pango libssh2 libvncserver libpulseaudio openssl libvorbis libwebp libtelnet perl makeWrapper];
  # propogatedBuildInputs = with stdenv; [ autoreconfHook pkgconfig cairo libpng libjpeg_turbo libossp_uuid freerdp pango libssh2 libvncserver libpulseaudio openssl libvorbis libwebp inetutils];
  patchPhase = ''
    substituteInPlace ./src/protocols/rdp/keymaps/generate.pl --replace /usr/bin/perl "${perl}/bin/perl"
    substituteInPlace ./src/protocols/rdp/Makefile.am --replace "-Werror -Wall" "-Wall"
  '';
  postInstall = ''
    echo "Wrap"
    wrapProgram $out/sbin/guacd --prefix LD_LIBRARY_PATH ":" $out/lib
    '';

  meta = with stdenv.lib; {
    description = "Clientless remote desktop gateway";
    homepage = "https://guacamole.incubator.apache.org/";
    maintainers = [ stdenv.lib.maintainers.tomberek ];
    license = licenses.cc-by-40;
    platforms = platforms.linux;
  };
}

@tomberek
Yeah, I just grab the WAR as well, arguably it is more the Nix way to build it from source but I was just looking to get something working rather than something clean :).

My expression for the server is pretty similar, but instead of wrapping guacd I used dontPatchELF = 1; to avoid removing the RPATHs for the dynamically linked libraries. Also I didn't bother to support as many protocols (e.g. RDP) as I didn't need them for that environment.

Here's my service expression, but I doubt it will be very helpful. It's kind of a mess, fairly specific to my own setup (which e.g. has a reverse-proxy in front of guacamole, not covered therein), and I haven't altered the tomcat service expression to be any better.

@tomberek @shados Not strictly on-topic, but since it sounds like you both have or did have this running, can you comment on the performance of remote access via guac relative to other options? I've found everything but teamviewer to be frustratingly slow. Is this tree worth barking up? :)

I am no longer pursuing this. Reopen if needed.

well... it's possible i got this working again... still needs some cleanup, but i combined @Shados 's work and it's up and running.

I'd also be interested in native nix expression. Currently I just run it in docker.

Thank you for your contributions.
This has been automatically marked as stale because it has had no activity for 180 days.
If this is still important to you, we ask that you leave a comment below. Your comment can be as simple as "still important to me". This lets people see that at least one person still cares about this. Someone will have to do this at most twice a year if there is no other activity.
Here are suggestions that might help resolve this more quickly:

  1. Search for maintainers and people that previously touched the
    related code and @ mention them in a comment.
  2. Ask on the NixOS Discourse. 3. Ask on the #nixos channel on
    irc.freenode.net.

I'm interested in this (please un-stale it).

Was this page helpful?
0 / 5 - 0 ratings

Related issues

retrry picture retrry  路  3Comments

ghost picture ghost  路  3Comments

chris-martin picture chris-martin  路  3Comments

lverns picture lverns  路  3Comments

edolstra picture edolstra  路  3Comments