diff options
author | Alyssa Ross <hi@alyssa.is> | 2021-04-09 18:28:16 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2021-04-12 18:46:15 +0000 |
commit | fd2e737e0678ee7d8081baef05b305146a2c0034 (patch) | |
tree | ac3e9b27576a0382335532d126f9a66d486bc638 /nixpkgs/pkgs/tools/admin/turbovnc | |
parent | cc207d720b6aa836e256c1ee9842bc739e630a8a (diff) | |
parent | 9e377a6ce42dccd9b624ae4ce8f978dc892ba0e2 (diff) | |
download | nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.gz nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.bz2 nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.lz nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.xz nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.tar.zst nixlib-fd2e737e0678ee7d8081baef05b305146a2c0034.zip |
Merge remote-tracking branch 'nixpkgs/nixos-unstable'
Diffstat (limited to 'nixpkgs/pkgs/tools/admin/turbovnc')
-rw-r--r-- | nixpkgs/pkgs/tools/admin/turbovnc/default.nix | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/admin/turbovnc/default.nix b/nixpkgs/pkgs/tools/admin/turbovnc/default.nix new file mode 100644 index 000000000000..33d248ffde88 --- /dev/null +++ b/nixpkgs/pkgs/tools/admin/turbovnc/default.nix @@ -0,0 +1,114 @@ +{ lib +, stdenv +, fetchFromGitHub +, nixosTests + +# Dependencies +, cmake +, libjpeg_turbo +, makeWrapper +, mesa # for built-in 3D software rendering using swrast +, openjdk # for the client with Java GUI +, openjdk_headless # for the server +, openssh +, openssl +, pam +, perl +, which +, xkbcomp +, xkeyboard_config +, xorg +}: + +stdenv.mkDerivation rec { + pname = "turbovnc"; + version = "2.2.6"; + + src = fetchFromGitHub { + owner = "TurboVNC"; + repo = "turbovnc"; + rev = version; + sha256 = "sha256-HSppHPBBkTf+88ZBaYG6JK4A/5lOBCxPFv6898TD7PE="; + }; + + # TODO: + # * Build outputs that are unclear: + # * `-- FONT_ENCODINGS_DIRECTORY = /var/empty/share/X11/fonts/encodings` + # Maybe relevant what the tigervnc and tightvnc derivations + # do with their `fontDirectories`? + # * `SERVER_MISC_CONFIG_PATH = /var/empty/lib64/xorg` + # * The thing about xorg `protocol.txt` + # * Does SSH support require `openssh` on PATH? + # * Add `enableClient ? true` flag that disables the client GUI + # so that the server can be built without openjdk dependency. + # * Perhaps allow to build the client on non-Linux platforms. + + nativeBuildInputs = [ + cmake + makeWrapper + openjdk_headless + ]; + + buildInputs = [ + libjpeg_turbo + openssl + pam + perl + ] ++ (with xorg; [ + libSM + libX11 + libXext + libXi + xorgproto + ]); + + cmakeFlags = [ + # For the 3D software rendering built into TurboVNC, pass the path + # to the swrast dri driver in Mesa. + # Can also be given at runtime to its `Xvnc` as: + # -dridir /nix/store/...-mesa-20.1.10-drivers/lib/dri/ + "-DDRI_DRIVER_PATH=${mesa.drivers}/lib/dri" + # The build system doesn't find these files automatically. + "-DTJPEG_JAR=${libjpeg_turbo.out}/share/java/turbojpeg.jar" + "-DTJPEG_JNILIBRARY=${libjpeg_turbo.out}/lib/libturbojpeg.so" + "-DXKB_BASE_DIRECTORY=${xkeyboard_config}/share/X11/xkb" + "-DXKB_BIN_DIRECTORY=${xkbcomp}/bin" + ]; + + postInstall = '' + # turbovnc dlopen()s libssl.so depending on the requested encryption. + wrapProgram $out/bin/Xvnc \ + --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ openssl ]} + + # `twm` is the default window manager that `vncserver` tries to start, + # and it has minimal dependencies (no non-Xorg). + # (This default is written by `vncserver` to `~/.vnc/xstartup.turbovnc`, + # see https://github.com/TurboVNC/turbovnc/blob/ffdb57d9/unix/vncserver.in#L201.) + # It checks for it using `which twm`. + wrapProgram $out/bin/vncserver \ + --prefix PATH : ${lib.makeBinPath [ which xorg.twm ]} + + # Patch /usr/bin/perl + patchShebangs $out/bin/vncserver + + # vncserver needs `xauth` + wrapProgram $out/bin/vncserver \ + --prefix PATH : ${lib.makeBinPath (with xorg; [ xauth ])} + + # The viewer is in Java and requires `JAVA_HOME`. + # For SSH support, `ssh` is required on `PATH`. + wrapProgram $out/bin/vncviewer \ + --prefix JAVA_HOME : "${lib.makeLibraryPath [ openjdk ]}/openjdk" \ + --prefix PATH : ${lib.makeBinPath [ openssh ]} + ''; + + passthru.tests.turbovnc-headless-server = nixosTests.turbovnc-headless-server; + + meta = { + homepage = "https://turbovnc.org/"; + license = lib.licenses.gpl2Plus; + description = "High-speed version of VNC derived from TightVNC"; + maintainers = with lib.maintainers; [ nh2 ]; + platforms = with lib.platforms; linux; + }; +} |