turbovnc: init at 2.2.5
I started out by copying the `tigervnc` derivation, which does things like re-using `xorg.xorgserver.buildInputs` (given that these VNC servers are all forks of Xorg), but then removed that and all the dependencies that did not appear to be needed or checked for in the CMake output.
This commit is contained in:
parent
d45cdb2f3e
commit
c834c60ff9
2 changed files with 116 additions and 0 deletions
111
pkgs/tools/admin/turbovnc/default.nix
Normal file
111
pkgs/tools/admin/turbovnc/default.nix
Normal file
|
@ -0,0 +1,111 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
|
||||
# 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.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "TurboVNC";
|
||||
repo = "turbovnc";
|
||||
rev = version;
|
||||
sha256 = "0r2lk5lza7a9h02g4z5j59d8qj0x1q1my665d1x1plny4g46vam0";
|
||||
};
|
||||
|
||||
# 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 ]}
|
||||
'';
|
||||
|
||||
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;
|
||||
};
|
||||
}
|
|
@ -8934,6 +8934,11 @@ in
|
|||
|
||||
ttwatch = callPackage ../tools/misc/ttwatch { };
|
||||
|
||||
turbovnc = callPackage ../tools/admin/turbovnc {
|
||||
# fontDirectories = [ xorg.fontadobe75dpi xorg.fontmiscmisc xorg.fontcursormisc xorg.fontbhlucidatypewriter75dpi ];
|
||||
libjpeg_turbo = libjpeg_turbo.override { enableJava = true; };
|
||||
};
|
||||
|
||||
udunits = callPackage ../development/libraries/udunits { };
|
||||
|
||||
uftp = callPackage ../servers/uftp {};
|
||||
|
|
Loading…
Reference in a new issue