diff --git a/nixos/layers/desktop.nix b/nixos/layers/desktop.nix
index a7bb56e2a4c23ab59c792cb5599f588b09d272dc..8a7a99471ce674211030d0355468ee394ec9d52d 100644
--- a/nixos/layers/desktop.nix
+++ b/nixos/layers/desktop.nix
@@ -33,6 +33,7 @@ in
     gnome3.gnome-disk-utility
     vscode
     networkmanagerapplet
+    wayvnc
 
     # cursor theme
     simpleandsoft
diff --git a/nixos/pkgs/default.nix b/nixos/pkgs/default.nix
index b91589f4352f406b0c1b7d6076c931e11a349c8f..88171f96d9bef8ff36474e940a9b01943a8c5de0 100644
--- a/nixos/pkgs/default.nix
+++ b/nixos/pkgs/default.nix
@@ -12,6 +12,8 @@ let
     neovim = (import ./neovim { inherit pkgs; }).neovim;
     nginx-sso = callPackage ./nginx-sso {};
     simpleandsoft = (import ./simpleandsoft { inherit pkgs; }).simpleandsoft;
+    neatvnc = callPackage ./neatvnc/neatvnc.nix {};
+    wayvnc = callPackage ./wayvnc/wayvnc.nix {};
   };
 
 in newpkgs
diff --git a/nixos/pkgs/neatvnc/default.nix b/nixos/pkgs/neatvnc/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..ff342f4bee1c1ed9e72bec560b7793b28fe44ded
--- /dev/null
+++ b/nixos/pkgs/neatvnc/default.nix
@@ -0,0 +1,5 @@
+{ pkgs ? import <nixpkgs> {} }:
+
+{
+  neatvnc = pkgs.callPackage ./neatvnc.nix {};
+}
\ No newline at end of file
diff --git a/nixos/pkgs/neatvnc/neatvnc.nix b/nixos/pkgs/neatvnc/neatvnc.nix
new file mode 100644
index 0000000000000000000000000000000000000000..0886e758c73c7885d8ce58089fa16bb91a353dd5
--- /dev/null
+++ b/nixos/pkgs/neatvnc/neatvnc.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, meson, pkgconfig, ninja, libdrm, pixman, libuv, gnutls, libjpeg_turbo }:
+
+with builtins;
+
+let
+  repo = fromJSON ( readFile ./repo.json );
+in
+stdenv.mkDerivation {
+  pname = "neatvnc";
+  version = repo.rev;
+
+  src = fetchFromGitHub repo;
+
+  nativeBuildInputs = [
+    pkgconfig meson ninja
+  ];
+
+  buildInputs = [
+    pixman libuv gnutls libdrm libjpeg_turbo
+  ];
+
+  enableParallelBuilding = true;
+
+  # mesonFlags = [
+  #   "-Ddefault-wallpaper=false" "-Dxwayland=enabled" "-Dgdk-pixbuf=enabled"
+  #   "-Dtray=enabled" "-Dman-pages=enabled"
+  # ];
+
+  # meta = with stdenv.lib; {
+  #   description = "i3-compatible tiling Wayland compositor";
+  #   homepage    = https://swaywm.org;
+  #   license     = licenses.mit;
+  #   platforms   = platforms.linux;
+  #   maintainers = with maintainers; [ primeos synthetica ma27 ];
+  # };
+}
\ No newline at end of file
diff --git a/nixos/pkgs/neatvnc/repo.json b/nixos/pkgs/neatvnc/repo.json
new file mode 100644
index 0000000000000000000000000000000000000000..e19bbadca28ba153644e9127784e54ee161cb205
--- /dev/null
+++ b/nixos/pkgs/neatvnc/repo.json
@@ -0,0 +1,6 @@
+{
+    "owner": "any1",
+    "repo": "neatvnc",
+    "rev": "992b4445edea7199ec0d2d673d726767f1da4f5f",
+    "sha256": "12nv74x4mjw9xz2ahj1mm45jfifmdrpbap3dpn2w7nj5av6ivvm6"
+}
\ No newline at end of file
diff --git a/nixos/pkgs/neatvnc/update b/nixos/pkgs/neatvnc/update
new file mode 100755
index 0000000000000000000000000000000000000000..9decc08978b88b76c82badaa6d45fc3faa33d2db
--- /dev/null
+++ b/nixos/pkgs/neatvnc/update
@@ -0,0 +1,5 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i sh -p nix-prefetch-github
+
+nix-prefetch-github any1 neatvnc > repo.json
+
diff --git a/nixos/pkgs/wayvnc/default.nix b/nixos/pkgs/wayvnc/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..29fddff3ffe3d8489877cc398aff203364dafd42
--- /dev/null
+++ b/nixos/pkgs/wayvnc/default.nix
@@ -0,0 +1,8 @@
+{ pkgs ? import <nixpkgs> {} }:
+
+let
+  neatvnc = pkgs.callPackage ../neatvnc/neatvnc.nix {};
+in
+{
+  wayvnc = pkgs.callPackage ./wayvnc.nix { inherit neatvnc; };
+}
\ No newline at end of file
diff --git a/nixos/pkgs/wayvnc/repo.json b/nixos/pkgs/wayvnc/repo.json
new file mode 100644
index 0000000000000000000000000000000000000000..7c589777f5d6e924855658e1f836d79cbc0117cc
--- /dev/null
+++ b/nixos/pkgs/wayvnc/repo.json
@@ -0,0 +1,6 @@
+{
+    "owner": "any1",
+    "repo": "wayvnc",
+    "rev": "908ba0f904a0e552a6bbe63fbd04e243b4f4685f",
+    "sha256": "0vly9m10jd3zlrpncipblqsqc3jf94lyhz5yb05b5c8hvqdk8w3g"
+}
\ No newline at end of file
diff --git a/nixos/pkgs/wayvnc/update b/nixos/pkgs/wayvnc/update
new file mode 100755
index 0000000000000000000000000000000000000000..0ce5ae15b442a423884b056d6b95bb9a3fbb0409
--- /dev/null
+++ b/nixos/pkgs/wayvnc/update
@@ -0,0 +1,5 @@
+#!/usr/bin/env nix-shell
+#! nix-shell -i sh -p nix-prefetch-github
+
+nix-prefetch-github any1 wayvnc > repo.json
+
diff --git a/nixos/pkgs/wayvnc/wayvnc.nix b/nixos/pkgs/wayvnc/wayvnc.nix
new file mode 100644
index 0000000000000000000000000000000000000000..33e3bd5dace8e37c431fac49369758b9245866ea
--- /dev/null
+++ b/nixos/pkgs/wayvnc/wayvnc.nix
@@ -0,0 +1,36 @@
+{ stdenv, fetchFromGitHub, meson, pkgconfig, ninja, libdrm, libX11, pixman, libuv, libGL, libxkbcommon, wayland, neatvnc }:
+
+with builtins;
+
+let
+  repo = fromJSON ( readFile ./repo.json );
+in
+stdenv.mkDerivation {
+  pname = "wayvnc";
+  version = repo.rev;
+
+  src = fetchFromGitHub repo;
+
+  nativeBuildInputs = [
+    pkgconfig meson ninja
+  ];
+
+  buildInputs = [
+    pixman libuv libGL libxkbcommon wayland neatvnc libdrm libX11
+  ];
+
+  enableParallelBuilding = true;
+
+  # mesonFlags = [
+  #   "-Ddefault-wallpaper=false" "-Dxwayland=enabled" "-Dgdk-pixbuf=enabled"
+  #   "-Dtray=enabled" "-Dman-pages=enabled"
+  # ];
+
+  # meta = with stdenv.lib; {
+  #   description = "i3-compatible tiling Wayland compositor";
+  #   homepage    = https://swaywm.org;
+  #   license     = licenses.mit;
+  #   platforms   = platforms.linux;
+  #   maintainers = with maintainers; [ primeos synthetica ma27 ];
+  # };
+}
\ No newline at end of file