| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
| 10 | |
| 11 | |
| 12 | |
| 13 | |
| 14 | |
| 15 | |
| 16 | |
| 17 | |
| 18 | |
| 19 | |
| 20 | |
| 21 | |
| 22 | |
| 23 | |
| 24 | |
| 25 |
|
| 26 | (define-module (gnu packages vnc)
|
| 27 | #:use-module (guix build-system cmake)
|
| 28 | #:use-module (guix build-system gnu)
|
| 29 | #:use-module (guix build-system meson)
|
| 30 | #:use-module (guix download)
|
| 31 | #:use-module (guix gexp)
|
| 32 | #:use-module (guix git-download)
|
| 33 | #:use-module ((guix licenses) #:prefix license:)
|
| 34 | #:use-module (guix gexp)
|
| 35 | #:use-module (guix git-download)
|
| 36 | #:use-module (guix packages)
|
| 37 | #:use-module (guix utils)
|
| 38 | #:use-module (gnu packages)
|
| 39 | #:use-module (gnu packages autotools)
|
| 40 | #:use-module (gnu packages base)
|
| 41 | #:use-module (gnu packages bash)
|
| 42 | #:use-module (gnu packages c)
|
| 43 | #:use-module (gnu packages cmake)
|
| 44 | #:use-module (gnu packages compression)
|
| 45 | #:use-module (gnu packages crypto)
|
| 46 | #:use-module (gnu packages cups)
|
| 47 | #:use-module (gnu packages curl)
|
| 48 | #:use-module (gnu packages dns)
|
| 49 | #:use-module (gnu packages toolkits)
|
| 50 | #:use-module (gnu packages fontutils)
|
| 51 | #:use-module (gnu packages freedesktop)
|
| 52 | #:use-module (gnu packages gettext)
|
| 53 | #:use-module (gnu packages gl)
|
| 54 | #:use-module (gnu packages glib)
|
| 55 | #:use-module (gnu packages gnome)
|
| 56 | #:use-module (gnu packages gnupg)
|
| 57 | #:use-module (gnu packages gtk)
|
| 58 | #:use-module (gnu packages guile)
|
| 59 | #:use-module (gnu packages image)
|
| 60 | #:use-module (gnu packages java)
|
| 61 | #:use-module (gnu packages libevent)
|
| 62 | #:use-module (gnu packages linux)
|
| 63 | #:use-module (gnu packages man)
|
| 64 | #:use-module (gnu packages pcre)
|
| 65 | #:use-module (gnu packages perl)
|
| 66 | #:use-module (gnu packages pkg-config)
|
| 67 | #:use-module (gnu packages python)
|
| 68 | #:use-module (gnu packages rdesktop)
|
| 69 | #:use-module (gnu packages sdl)
|
| 70 | #:use-module (gnu packages spice)
|
| 71 | #:use-module (gnu packages ssh)
|
| 72 | #:use-module (gnu packages tls)
|
| 73 | #:use-module (gnu packages video)
|
| 74 | #:use-module (gnu packages web)
|
| 75 | #:use-module (gnu packages webkit)
|
| 76 | #:use-module (gnu packages xdisorg)
|
| 77 | #:use-module (gnu packages xorg))
|
| 78 |
|
| 79 | (define-public remmina
|
| 80 | (package
|
| 81 | (name "remmina")
|
| 82 | (version "1.4.43")
|
| 83 | (source
|
| 84 | (origin
|
| 85 | (method git-fetch)
|
| 86 | (uri
|
| 87 | (git-reference
|
| 88 | (url "https://gitlab.com/Remmina/Remmina.git")
|
| 89 | (commit (string-append "v" version))))
|
| 90 | (file-name (git-file-name name version))
|
| 91 | (sha256
|
| 92 | (base32 "1hk8g26z10illchjr59l5fm2vjps85nnm7ir9l2yx9sn34v3cxpf"))))
|
| 93 | (build-system cmake-build-system)
|
| 94 | (arguments
|
| 95 | `(#:tests? #f |
| 96 | #:configure-flags
|
| 97 | (list
|
| 98 | "-DWITH_FREERDP3=ON"
|
| 99 | "-DWITH_GVNC=ON" |
| 100 | |
| 101 | "-DWITH_NEWS=OFF")
|
| 102 | #:imported-modules
|
| 103 | ((guix build glib-or-gtk-build-system)
|
| 104 | ,@%cmake-build-system-modules)
|
| 105 | #:modules
|
| 106 | (((guix build glib-or-gtk-build-system)
|
| 107 | #:prefix glib-or-gtk:)
|
| 108 | (guix build cmake-build-system)
|
| 109 | (guix build utils))
|
| 110 | #:phases
|
| 111 | (modify-phases %standard-phases
|
| 112 | (add-after 'install 'glib-or-gtk-compile-schemas
|
| 113 | (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-compile-schemas))
|
| 114 | (add-after 'glib-or-gtk-compile-schemas 'glib-or-gtk-wrap
|
| 115 | (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))
|
| 116 | (add-after 'glib-or-gtk-wrap 'wrap-typelibs
|
| 117 | (lambda* (#:key outputs #:allow-other-keys)
|
| 118 | (let ((out (assoc-ref outputs "out")))
|
| 119 | (for-each
|
| 120 | (lambda (name)
|
| 121 | (let ((file (string-append out "/bin/" name))
|
| 122 | (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
|
| 123 | (wrap-program file
|
| 124 | `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))))
|
| 125 | '("remmina" "remmina-file-wrapper"))))))))
|
| 126 | (native-inputs
|
| 127 | (list gettext-minimal
|
| 128 | `(,glib "bin")
|
| 129 | gobject-introspection
|
| 130 | `(,gtk+ "bin")
|
| 131 | intltool
|
| 132 | pkg-config))
|
| 133 | (inputs
|
| 134 | (list libappindicator
|
| 135 | at-spi2-core
|
| 136 | avahi
|
| 137 | bash-minimal
|
| 138 | cairo
|
| 139 | cups
|
| 140 | curl
|
| 141 | ffmpeg
|
| 142 | freerdp |
| 143 | libgcrypt
|
| 144 | (librsvg-for-system)
|
| 145 | glib
|
| 146 | gnome-keyring
|
| 147 | gsettings-desktop-schemas
|
| 148 | gtk+
|
| 149 | gtk-vnc
|
| 150 | harfbuzz
|
| 151 | json-glib
|
| 152 | libsecret |
| 153 | libsoup
|
| 154 | libssh |
| 155 | libvnc |
| 156 | openssl
|
| 157 | pango
|
| 158 | pcre2 |
| 159 | python-minimal-wrapper |
| 160 | shared-mime-info
|
| 161 | libsodium
|
| 162 | spice-gtk |
| 163 | telepathy-glib
|
| 164 | vte/gtk+-3 |
| 165 | wayland
|
| 166 | webkitgtk-for-gtk3 |
| 167 | libx11
|
| 168 | libxext |
| 169 | xdg-utils
|
| 170 | libxkbfile)) |
| 171 | (propagated-inputs
|
| 172 | (list dconf))
|
| 173 | (home-page "https://remmina.org/")
|
| 174 | (synopsis "Remote Desktop Client")
|
| 175 | (description "Remmina is a client to use other desktops remotely.
|
| 176 | RDP, VNC, SPICE, NX, XDMCP, SSH and EXEC network protocols are supported.")
|
| 177 | (license license:gpl2+)))
|
| 178 |
|
| 179 | (define-public turbovnc
|
| 180 | (package
|
| 181 | (name "turbovnc")
|
| 182 | (version "3.3")
|
| 183 | (source
|
| 184 | (origin
|
| 185 | (method git-fetch)
|
| 186 | (uri (git-reference
|
| 187 | (url "https://github.com/TurboVNC/turbovnc")
|
| 188 | (commit version)))
|
| 189 | (modules '((guix build utils)))
|
| 190 | (snippet
|
| 191 | #~(begin
|
| 192 | |
| 193 | |
| 194 | |
| 195 | |
| 196 | |
| 197 |
|
| 198 | |
| 199 | |
| 200 | (delete-all-but "common" "d3des" "rfb" "turbojpeg-jni")
|
| 201 | |
| 202 | (delete-all-but "unix/Xvnc/include" "tvnc_version.h.in")
|
| 203 | |
| 204 | |
| 205 | (delete-all-but "unix/Xvnc/lib" "CMakeLists.txt" "libsha1")))
|
| 206 | (sha256
|
| 207 | (base32
|
| 208 | "0q53r9j2sy77hgfbm4af1nbixwlhpdh5zz6as3wkk8wv1f27xqdk"))))
|
| 209 | (build-system cmake-build-system)
|
| 210 | (arguments
|
| 211 | (list
|
| 212 | #:tests? #f |
| 213 | #:configure-flags
|
| 214 | |
| 215 | #~(list "-DTVNC_SYSTEMLIBS=ON"
|
| 216 | "-DTVNC_SYSTEMX11=ON"
|
| 217 | "-DTVNC_DLOPENSSL=OFF"
|
| 218 | (string-append "-DXORG_DRI_DRIVER_PATH="
|
| 219 | (search-input-directory %build-inputs "lib/dri"))
|
| 220 | (string-append "-DXORG_FONT_PATH="
|
| 221 | "/run/current-system/profile/share/fonts/X11,"
|
| 222 | (string-append #$(this-package-input "font-alias")
|
| 223 | "share/fonts/X11"))
|
| 224 | (string-append "-DXORG_REGISTRY_PATH="
|
| 225 | (dirname (search-input-file
|
| 226 | %build-inputs "lib/xorg/protocol.txt")))
|
| 227 | (string-append "-DXKB_BASE_DIRECTORY="
|
| 228 | (search-input-directory %build-inputs
|
| 229 | "share/X11/xkb"))
|
| 230 | (string-append "-DXKB_BIN_DIRECTORY="
|
| 231 | (dirname (search-input-file %build-inputs
|
| 232 | "bin/xkbcomp")))
|
| 233 | |
| 234 | |
| 235 | |
| 236 | |
| 237 | "-DXKB_DFLT_RULES=base"
|
| 238 | |
| 239 | "-DCOMPILEDDEFAULTFONTPATH=/tmp"
|
| 240 | "-DTVNC_STATIC_XORG_PATHS=ON"
|
| 241 | "-DTVNC_ZLIBNG=OFF") |
| 242 | #:phases
|
| 243 | #~(modify-phases %standard-phases
|
| 244 | (add-after 'unpack 'patch-vncviewer
|
| 245 | (lambda* (#:key inputs #:allow-other-keys)
|
| 246 | (define openjdk #$(this-package-input "openjdk"))
|
| 247 | (substitute* "unix/vncviewer/vncviewer.in"
|
| 248 | (("\\$BINDIR/../java/jre")
|
| 249 | openjdk)
|
| 250 | |
| 251 | (("^_TMP=.*")
|
| 252 | (string-append "_TMP=" openjdk "/lib\n")))))
|
| 253 | (add-after 'unpack 'patch-xstartup.turbovnc
|
| 254 | (lambda* (#:key inputs #:allow-other-keys)
|
| 255 | (substitute* "unix/xstartup.turbovnc"
|
| 256 | (("DBUS_LAUNCH=[[:graph:]]+")
|
| 257 | (format #f "DBUS_LAUNCH=~a"
|
| 258 | (search-input-file inputs "bin/dbus-launch")))
|
| 259 | (("XSESSIONSDIR=[[:graph:]]+")
|
| 260 | (format #f "XSESSIONSDIR=~a"
|
| 261 | "/run/current-system/profile/share/xsessions"))
|
| 262 | (("GREP=[[:graph:]]+")
|
| 263 | (format #f "GREP=~a"
|
| 264 | (search-input-file inputs "bin/grep")))
|
| 265 | (("SED=[[:graph:]]+")
|
| 266 | (format #f "SED=~a"
|
| 267 | (search-input-file inputs "bin/sed")))
|
| 268 | (("TVNC_SSHAGENT=[[:graph:]]+")
|
| 269 | (format #f "TVNC_SSHAGENT=~a"
|
| 270 | (search-input-file inputs "bin/ssh-agent")))
|
| 271 | (("TVNC_VGLRUN=\"vglrun" all)
|
| 272 | (string-append "TVNC_VGLRUN="
|
| 273 | (search-input-file inputs "bin/vglrun") all)))))
|
| 274 | (add-after 'install 'wrap-vncserver
|
| 275 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 276 | (wrap-script (search-input-file outputs "bin/vncserver")
|
| 277 | (list "PATH" 'prefix
|
| 278 | (map (lambda (p)
|
| 279 | (dirname (search-input-file inputs p)))
|
| 280 | '("bin/uname" |
| 281 | "bin/xauth"
|
| 282 | "bin/xdpyinfo"))))))
|
| 283 | (add-after 'install 'wrap-xstartup.turbovnc
|
| 284 | (lambda* (#:key inputs outputs #:allow-other-keys)
|
| 285 | (wrap-script (search-input-file outputs "bin/xstartup.turbovnc")
|
| 286 | (list "PATH" 'prefix
|
| 287 | (map (lambda (p)
|
| 288 | (dirname (search-input-file inputs p)))
|
| 289 | '("bin/uname" |
| 290 | |
| 291 | |
| 292 | "bin/twm"
|
| 293 | "bin/xsetroot"
|
| 294 | "bin/xterm")))))))))
|
| 295 | (native-inputs
|
| 296 | (list `(,openjdk "jdk")
|
| 297 | pkg-config
|
| 298 | python))
|
| 299 | (inputs
|
| 300 | (list dbus
|
| 301 | font-alias
|
| 302 | freetype
|
| 303 | guile-3.0
|
| 304 | libfontenc
|
| 305 | libjpeg-turbo
|
| 306 | libx11
|
| 307 | libxdamage
|
| 308 | libxext
|
| 309 | libxfont2
|
| 310 | libxi
|
| 311 | libxkbfile
|
| 312 | linux-pam
|
| 313 | mesa
|
| 314 | openjdk
|
| 315 | openssh
|
| 316 | openssl
|
| 317 | perl
|
| 318 | pixman
|
| 319 | twm
|
| 320 | virtualgl
|
| 321 | xauth
|
| 322 | xdpyinfo
|
| 323 | xkbcomp
|
| 324 | xkeyboard-config
|
| 325 | xorg-server
|
| 326 | xorgproto
|
| 327 | xsetroot
|
| 328 | xterm
|
| 329 | xtrans
|
| 330 | zlib))
|
| 331 | (home-page "https://turbovnc.org/")
|
| 332 | (synopsis "Highly-optimized VNC remote desktop software")
|
| 333 | (description "TurboVNC is a high-speed version of VNC derived from
|
| 334 | TightVNC, with which it remains compatible. It contains a variant of Tight
|
| 335 | encoding that is tuned to maximize performance for image-intensive
|
| 336 | applications (such as VirtualGL, video applications, and image editors) while
|
| 337 | still providing excellent performance for other types of applications. Some
|
| 338 | of its unique features are:
|
| 339 | @itemize
|
| 340 | @item a user-facing @command{vncserver} command;
|
| 341 | @item the ability to capture keyboard keys even when not in full screen mode;
|
| 342 | @item a full screen mode that is compatible with ratpoison*
|
| 343 | @end itemize
|
| 344 | *Although due to a quirk in Java, you'll want to set the
|
| 345 | @env{_JAVA_AWT_WM_NONREPARENTING} environment variable when using it with
|
| 346 | ratpoison.")
|
| 347 | (license license:gpl2+)))
|
| 348 |
|
| 349 | (define-public x11vnc
|
| 350 | |
| 351 | |
| 352 | (let ((commit "3e4dc8ef2985a6e670e1d9649fe55395c2b31039")
|
| 353 | (revision "0"))
|
| 354 | (package
|
| 355 | (name "x11vnc")
|
| 356 | (version (git-version "0.9.16" revision commit))
|
| 357 | (source (origin
|
| 358 | (method git-fetch)
|
| 359 | (uri (git-reference
|
| 360 | (url "https://github.com/LibVNC/x11vnc")
|
| 361 | (commit commit)))
|
| 362 | (file-name (git-file-name name version))
|
| 363 | (sha256
|
| 364 | (base32
|
| 365 | "0a120gv9h3whiznlddl0j3nz3400jjgl97znaincm5i2m5pnjifs"))))
|
| 366 | (build-system gnu-build-system)
|
| 367 | (arguments
|
| 368 | (list #:phases #~(modify-phases %standard-phases
|
| 369 | (add-before 'bootstrap 'delete-premature-configure
|
| 370 | (lambda _
|
| 371 | (substitute* "./autogen.sh"
|
| 372 | ((".*/configure")
|
| 373 | "")))))))
|
| 374 | (native-inputs (list autoconf automake autobuild pkg-config))
|
| 375 | (inputs (list avahi
|
| 376 | libjpeg-turbo
|
| 377 | libvnc
|
| 378 | libx11
|
| 379 | libxcomposite
|
| 380 | libxdamage
|
| 381 | libxext
|
| 382 | libxfixes
|
| 383 | libxi
|
| 384 | libxinerama
|
| 385 | libxrandr
|
| 386 | libxtst
|
| 387 | openssl
|
| 388 | xdpyinfo
|
| 389 | xf86-video-dummy
|
| 390 | zlib))
|
| 391 | (synopsis "VNC server for real X displays")
|
| 392 | (home-page "https://github.com/LibVNC/x11vnc")
|
| 393 | (description
|
| 394 | "x11vnc allows one to view and interact with real remote X
|
| 395 | displays (i.e. a display corresponding to a physical monitor, keyboard, and
|
| 396 | mouse) with any VNC viewer.")
|
| 397 | (license license:gpl2+))))
|
| 398 |
|
| 399 | (define-public libvnc
|
| 400 | (package
|
| 401 | (name "libvnc")
|
| 402 | (version "0.9.15")
|
| 403 | (source
|
| 404 | (origin
|
| 405 | (method git-fetch)
|
| 406 | (uri (git-reference
|
| 407 | (url "https://github.com/LibVNC/libvncserver")
|
| 408 | (commit (string-append "LibVNCServer-" version))))
|
| 409 | (file-name (git-file-name name version))
|
| 410 | (sha256
|
| 411 | (base32 "0b3ik1dbd9lyiiavv3zpyb3iycnfvjgsjym0ilyr1yac6899qxkb"))))
|
| 412 | (build-system cmake-build-system)
|
| 413 | (arguments
|
| 414 | '(#:phases (modify-phases %standard-phases
|
| 415 | (add-after 'unpack 'patch-cc-reference
|
| 416 | (lambda _
|
| 417 | (substitute* "test/includetest.sh"
|
| 418 | (("^cc -I")
|
| 419 | "gcc -I"))
|
| 420 | #t)))))
|
| 421 | (native-inputs
|
| 422 | (list pkg-config))
|
| 423 | (inputs
|
| 424 | `(("gnutls" ,gnutls)
|
| 425 | ("libgcrypt" ,libgcrypt)
|
| 426 | ("libjpeg" ,libjpeg-turbo)
|
| 427 | ("libpng" ,libpng)
|
| 428 | ("lzo" ,lzo)
|
| 429 | ("sdl2" ,sdl2)))
|
| 430 | (home-page "https://libvnc.github.io/")
|
| 431 | (synopsis "Cross-platform C libraries for implementing VNC server or
|
| 432 | client")
|
| 433 | (description "This package provides @code{LibVNCServer} and
|
| 434 | @code{LibVNCClient}. These are cross-platform C libraries that allow you to
|
| 435 | easily implement VNC server or client functionality in your program.")
|
| 436 | (license |
| 437 | (list license:gpl2+ license:fdl1.2+))))
|
| 438 |
|
| 439 | (define-public neatvnc
|
| 440 | (package
|
| 441 | (name "neatvnc")
|
| 442 | (version "1.0.1")
|
| 443 | (source (origin
|
| 444 | (method git-fetch)
|
| 445 | (uri (git-reference
|
| 446 | (url "https://github.com/any1/neatvnc")
|
| 447 | (commit (string-append "v" version))))
|
| 448 | (file-name (git-file-name name version))
|
| 449 | (sha256
|
| 450 | (base32
|
| 451 | "1q7sqck7xvnxk0sr43z9hmph3q85b04vcxdip6jiy5p8vgf721v5"))))
|
| 452 | (build-system meson-build-system)
|
| 453 | (arguments (list #:phases
|
| 454 | #~(modify-phases %standard-phases
|
| 455 | (add-after 'install 'sanitize-pkg-config-files
|
| 456 | (lambda _
|
| 457 | (substitute* (find-files #$output "\\.pc$")
|
| 458 | (("^Requires.private:.*") "")))))))
|
| 459 | (native-inputs (list pkg-config))
|
| 460 | (inputs
|
| 461 | (list aml libdrm libglvnd libxkbcommon pixman aml gnutls libjpeg-turbo zlib))
|
| 462 | (home-page "https://github.com/any1/neatvnc")
|
| 463 | (synopsis "Lightweight VNC server library")
|
| 464 | (description "NeatVNC is a lightweight VNC server library, supporting
|
| 465 | authentication, SSH tunneling, and ZRLE or Tight encoding.")
|
| 466 | (license license:isc)))
|
| 467 |
|
| 468 | (define-public wayvnc
|
| 469 | (package
|
| 470 | (name "wayvnc")
|
| 471 | (version "0.10.1")
|
| 472 | (source
|
| 473 | (origin
|
| 474 | (method git-fetch)
|
| 475 | (uri (git-reference
|
| 476 | (url "https://github.com/any1/wayvnc")
|
| 477 | (commit (string-append "v" version))))
|
| 478 | (file-name (git-file-name name version))
|
| 479 | (sha256
|
| 480 | (base32 "082g6kfn66yqjr2qi3dx6m381ljk0zs1mr2qbq2ypsnf7srbwnsx"))))
|
| 481 | (build-system meson-build-system)
|
| 482 | (native-inputs
|
| 483 | (append (if (%current-target-system)
|
| 484 | |
| 485 | (list wayland)
|
| 486 | '())
|
| 487 | (list pkg-config scdoc)))
|
| 488 | (inputs (list aml
|
| 489 | gnutls
|
| 490 | jansson
|
| 491 | libdrm
|
| 492 | libglvnd
|
| 493 | libjpeg-turbo
|
| 494 | libxkbcommon
|
| 495 | neatvnc
|
| 496 | pixman
|
| 497 | wayland
|
| 498 | zlib))
|
| 499 | (home-page "https://github.com/any1/wayvnc")
|
| 500 | (synopsis "VNC server for wlroots-based Wayland compositors")
|
| 501 | (description
|
| 502 | "This is a VNC server for wlroots-based Wayland compositors.
|
| 503 | It attaches to a running Wayland session, creates virtual input devices, and
|
| 504 | exposes a single display via the RFB protocol. The Wayland session may be a
|
| 505 | headless one, so it is also possible to run wayvnc without a physical display
|
| 506 | attached.")
|
| 507 | (license license:isc)))
|