nixpkgs/pkgs/tools/admin/tigervnc/default.nix
2018-12-05 22:00:40 +01:00

107 lines
3.6 KiB
Nix

{ stdenv, fetchFromGitHub
, xorg, xkeyboard_config, zlib
, libjpeg_turbo, pixman, fltk
, fontDirectories
, cmake, gettext, libtool
, glproto, libGLU
, gnutls, pam, nettle
, xterm, openssh
, makeWrapper}:
with stdenv.lib;
stdenv.mkDerivation rec {
version = "1.9.0";
name = "tigervnc-${version}";
src = fetchFromGitHub {
owner = "TigerVNC";
repo = "tigervnc";
rev = "v1.9.0";
sha256 = "0b47fg3741qs3zdpl2zr0s6jz46dypp2j6gqrappbzm3ywnnmm1x";
};
inherit fontDirectories;
postPatch = ''
sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -xkbdir ${xkeyboard_config}/etc/X11/xkb";' unix/vncserver
fontPath=
for i in $fontDirectories; do
for j in $(find $i -name fonts.dir); do
addToSearchPathWithCustomDelimiter "," fontPath $(dirname $j)
done
done
sed -i -e '/^\$cmd \.= " -pn";/a$cmd .= " -fp '"$fontPath"'";' unix/vncserver
substituteInPlace vncviewer/vncviewer.cxx \
--replace '"/usr/bin/ssh' '"${openssh}/bin/ssh'
'';
dontUseCmakeBuildDir = true;
postBuild = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-error=int-to-pointer-cast -Wno-error=pointer-to-int-cast"
export CXXFLAGS="$CXXFLAGS -fpermissive"
# Build Xvnc
tar xf ${xorg.xorgserver.src}
cp -R xorg*/* unix/xserver
pushd unix/xserver
version=$(echo ${xorg.xorgserver.name} | sed 's/.*-\([0-9]\+\).\([0-9]\+\).*/\1\2/g')
patch -p1 < ${src}/unix/xserver$version.patch
autoreconf -vfi
./configure $configureFlags --disable-devel-docs --disable-docs \
--disable-xorg --disable-xnest --disable-xvfb --disable-dmx \
--disable-xwin --disable-xephyr --disable-kdrive --with-pic \
--disable-xorgcfg --disable-xprint --disable-static \
--enable-composite --disable-xtrap --enable-xcsecurity \
--disable-{a,c,m}fb \
--disable-xwayland \
--disable-config-dbus --disable-config-udev --disable-config-hal \
--disable-xevie \
--disable-dri --disable-dri2 --disable-dri3 --enable-glx \
--enable-install-libxf86config \
--prefix="$out" --disable-unit-tests \
--with-xkb-path=${xkeyboard_config}/share/X11/xkb \
--with-xkb-bin-directory=${xorg.xkbcomp}/bin \
--with-xkb-output=$out/share/X11/xkb/compiled
make TIGERVNC_SRC=$src TIGERVNC_BUILDDIR=`pwd`/../.. -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES
popd
'';
postInstall = ''
pushd unix/xserver/hw/vnc
make TIGERVNC_SRC=$src TIGERVNC_BUILDDIR=`pwd`/../../../.. install
popd
rm -f $out/lib/xorg/protocol.txt
wrapProgram $out/bin/vncserver \
--prefix PATH : ${stdenv.lib.makeBinPath (with xorg; [ xterm twm xsetroot ]) }
'';
buildInputs = with xorg; [
libjpeg_turbo fltk pixman
gnutls pam nettle
fixesproto damageproto compositeproto randrproto
xcmiscproto bigreqsproto randrproto renderproto
fontsproto videoproto scrnsaverproto resourceproto presentproto
utilmacros libXtst libXext libX11 libXext libICE libXi libSM libXft
libxkbfile libXfont2 libpciaccess xineramaproto
glproto libGLU
] ++ xorgserver.buildInputs;
nativeBuildInputs = with xorg; [ cmake zlib gettext libtool utilmacros fontutil makeWrapper ]
++ xorg.xorgserver.nativeBuildInputs;
propagatedBuildInputs = xorg.xorgserver.propagatedBuildInputs;
enableParallelBuilding = true;
meta = {
homepage = http://www.tigervnc.org/;
license = stdenv.lib.licenses.gpl2Plus;
description = "Fork of tightVNC, made in cooperation with VirtualGL";
maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux;
# Prevent a store collision.
priority = 4;
};
}