diff --git a/pkgs/applications/networking/remote/wayvnc/default.nix b/pkgs/applications/networking/remote/wayvnc/default.nix new file mode 100644 index 00000000000..b1498d0a9ce --- /dev/null +++ b/pkgs/applications/networking/remote/wayvnc/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub, meson, pkg-config, ninja +, pixman, libuv, libGL, libxkbcommon, wayland, neatvnc, libdrm, libX11 +}: + +stdenv.mkDerivation rec { + pname = "wayvnc"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "any1"; + repo = pname; + rev = "v${version}"; + sha256 = "17c30c33zzhhlqzc4a5dd1y74ch7c8gsm98wvcn4n1fv50fbmpbd"; + }; + + nativeBuildInputs = [ meson pkg-config ninja ]; + buildInputs = [ pixman libuv libGL libxkbcommon wayland neatvnc libdrm libX11 ]; + + meta = with stdenv.lib; { + description = "A VNC server for wlroots based Wayland compositors"; + longDescription = '' + This is a VNC server for wlroots based Wayland compositors. It attaches + to a running Wayland session, creates virtual input devices and exposes a + single display via the RFB protocol. The Wayland session may be a + headless one, so it is also possible to run wayvnc without a physical + display attached. + ''; + inherit (src.meta) homepage; + license = licenses.isc; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos ]; + }; +} diff --git a/pkgs/development/libraries/neatvnc/default.nix b/pkgs/development/libraries/neatvnc/default.nix new file mode 100644 index 00000000000..127f25a50be --- /dev/null +++ b/pkgs/development/libraries/neatvnc/default.nix @@ -0,0 +1,37 @@ +{ stdenv, fetchFromGitHub, meson, pkg-config, ninja +, pixman, libuv, gnutls, libdrm +# libjpeg_turbo: Optional, for tight encoding (disabled because experimental) +, enableCpuAcceleration ? false # Whether to use CPU extensions (e.g. AVX) +}: + +stdenv.mkDerivation rec { + pname = "neatvnc"; + version = "0.1.0"; + + src = fetchFromGitHub { + owner = "any1"; + repo = pname; + rev = "v${version}"; + sha256 = "04wcpwxlcf0bczcs97j21346mn6finfj7xgc2dsrwrw9xq8qa7wc"; + }; + + nativeBuildInputs = [ meson pkg-config ninja ]; + buildInputs = [ pixman libuv gnutls libdrm ]; + + patches = stdenv.lib.optional (!enableCpuAcceleration) ./disable-cpu-acceleration.patch; + + meta = with stdenv.lib; { + description = "A VNC server library"; + longDescription = '' + This is a liberally licensed VNC server library that's intended to be + fast and neat. Goals: + - Speed + - Clean interface + - Interoperability with the Freedesktop.org ecosystem + ''; + inherit (src.meta) homepage; + license = licenses.isc; + platforms = platforms.linux; + maintainers = with maintainers; [ primeos ]; + }; +} diff --git a/pkgs/development/libraries/neatvnc/disable-cpu-acceleration.patch b/pkgs/development/libraries/neatvnc/disable-cpu-acceleration.patch new file mode 100644 index 00000000000..97b77c02df4 --- /dev/null +++ b/pkgs/development/libraries/neatvnc/disable-cpu-acceleration.patch @@ -0,0 +1,17 @@ +diff --git a/meson.build b/meson.build +index 31dd8b8..8761087 100644 +--- a/meson.build ++++ b/meson.build +@@ -21,12 +21,6 @@ endif + + cpu = host_machine.cpu_family() + +-if cpu == 'x86_64' +- c_args += '-mavx' +-elif cpu == 'arm' +- c_args += '-mfpu=neon' +-endif +- + add_project_arguments(c_args, language: 'c') + + cc = meson.get_compiler('c') diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6e02b42d95a..39eb6dfdd00 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13502,6 +13502,8 @@ in neardal = callPackage ../development/libraries/neardal { }; + neatvnc = callPackage ../development/libraries/neatvnc { }; + neon = callPackage ../development/libraries/neon { }; neon_0_29 = callPackage ../development/libraries/neon/0.29.nix { @@ -22211,6 +22213,8 @@ in wayv = callPackage ../tools/X11/wayv {}; + wayvnc = callPackage ../applications/networking/remote/wayvnc { }; + webmacs = libsForQt5.callPackage ../applications/networking/browsers/webmacs {}; webtorrent_desktop = callPackage ../applications/video/webtorrent_desktop {};