about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/admin/tigervnc/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/admin/tigervnc/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/admin/tigervnc/default.nix107
1 files changed, 107 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/admin/tigervnc/default.nix b/nixpkgs/pkgs/tools/admin/tigervnc/default.nix
new file mode 100644
index 000000000000..0bb291d797ba
--- /dev/null
+++ b/nixpkgs/pkgs/tools/admin/tigervnc/default.nix
@@ -0,0 +1,107 @@
+{ stdenv, fetchFromGitHub
+, xorg, xkeyboard_config, zlib
+, libjpeg_turbo, pixman, fltk
+, fontDirectories
+, cmake, gettext, libtool
+, libGLU
+, gnutls, pam, nettle
+, xterm, openssh, perl
+, makeWrapper}:
+
+with stdenv.lib;
+
+stdenv.mkDerivation rec {
+  version = "1.10.1";
+  pname = "tigervnc";
+
+  src = fetchFromGitHub {
+    owner = "TigerVNC";
+    repo = "tigervnc";
+    rev = "v1.10.1";
+    sha256 = "001n189d2f3psn7nxgl8188ml6f7jbk26cxn2835y3mnlk5lmhgr";
+  };
+
+  inherit fontDirectories;
+
+  patches = [ ./u_xorg-server-1.20.7-ddxInputThreadInit.patch ];
+
+  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 xauth ]) }
+  '';
+
+  buildInputs = with xorg; [
+    libjpeg_turbo fltk pixman
+    gnutls pam nettle perl
+    xorgproto
+    utilmacros libXtst libXext libX11 libXext libICE libXi libSM libXft
+    libxkbfile libXfont2 libpciaccess
+    libGLU
+  ] ++ xorg.xorgserver.buildInputs;
+
+  nativeBuildInputs = with xorg; [ cmake zlib gettext libtool utilmacros fontutil makeWrapper ]
+    ++ xorg.xorgserver.nativeBuildInputs;
+
+  propagatedBuildInputs = xorg.xorgserver.propagatedBuildInputs;
+
+  enableParallelBuilding = true;
+
+  meta = {
+    homepage = "https://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;
+  };
+}