nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 fetchpatch,
6 wxGTK32,
7 gtk3,
8 zlib,
9 libjpeg,
10 libvncserver,
11 cmake,
12 pkg-config,
13 libsysprof-capture,
14 pcre2,
15 util-linux,
16 libselinux,
17 libsepol,
18 libthai,
19 libdatrie,
20 xorg,
21 lerc,
22 libxkbcommon,
23 libepoxy,
24 wrapGAppsHook3,
25}:
26
27let
28 # libvncserver does not support multicast. since multivnc is mostly about multicast, it requires a special branch of libvncserver.
29 libvncserver-patched = libvncserver.overrideAttrs {
30 src = fetchFromGitHub {
31 owner = "LibVNC";
32 repo = "libvncserver";
33 rev = "ef3b57438564f2877148a23055f3f0ffce66df11";
34 hash = "sha256-Cg96tsi6h1DX4VSsq1B8DTn0GxnBfoZK2nuxeT/+ca0=";
35 };
36 patches = [ ];
37 };
38
39in
40stdenv.mkDerivation {
41 pname = "MultiVNC";
42 version = "2.8.1";
43
44 src = fetchFromGitHub {
45 owner = "bk138";
46 repo = "multivnc";
47 rev = "89225243412f43ba2903ffeda98af7fe1f8f4975";
48 hash = "sha256-qdF6nUSGaTphoe6T3gTAJTSQwvu+v/g8xfYobFBmGsI=";
49 fetchSubmodules = true;
50 };
51
52 patches = [
53 # remove part of vendored libraries that can be provided by Nixpkgs
54 ./nixpkgs.patch
55
56 # silences a compiler warning
57 (fetchpatch {
58 url = "https://github.com/bk138/multivnc/commit/002ba7f6b5b88dac3da5c08f99be1f237dcde904.patch";
59 hash = "sha256-Qnk7RrUaw9jsaNTbzYqsH0LU8ivT9xX2jfxrES82ArE=";
60 })
61 ];
62
63 # remove submodules we don't need
64 # some submodules can be provided by nixpkgs
65 postPatch = ''
66 rm -rfv libvncserver libsshtunnel libjpeg-turbo libressl libssh2
67 '';
68
69 buildInputs = [
70 gtk3
71 wxGTK32
72 zlib
73 libjpeg
74 libvncserver-patched
75
76 # transitive dependencies
77 libsysprof-capture
78 pcre2
79 util-linux # mount
80 libselinux
81 libsepol
82 libthai
83 libdatrie
84 lerc
85 libxkbcommon
86 libepoxy
87 xorg.libXdmcp
88 xorg.libXtst
89 ];
90
91 nativeBuildInputs = [
92 cmake
93 pkg-config
94 wrapGAppsHook3
95 ];
96
97 meta = {
98 mainProgram = "multivnc";
99 description = "Cross-platform Multicast-enabled VNC viewer based on LibVNCClient";
100 homepage = "https://github.com/bk138/multivnc";
101 maintainers = with lib.maintainers; [ rhelmot ];
102 license = lib.licenses.gpl3Plus;
103 };
104}