diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix
index ca6233827fdf..87892f72121c 100644
--- a/maintainers/maintainer-list.nix
+++ b/maintainers/maintainer-list.nix
@@ -5401,4 +5401,9 @@
     github = "minijackson";
     name = "RĂ©mi Nicole";
   };
+  shazow = {
+    email = "andrey.petrov@shazow.net";
+    github = "shazow";
+    name = "Andrey Petrov";
+  };
 }
diff --git a/nixos/doc/manual/release-notes/rl-1909.xml b/nixos/doc/manual/release-notes/rl-1909.xml
index 97a381020139..2cfaec49c02e 100644
--- a/nixos/doc/manual/release-notes/rl-1909.xml
+++ b/nixos/doc/manual/release-notes/rl-1909.xml
@@ -99,6 +99,16 @@
      and fix all the bugs it uncovers.
     </para>
    </listitem>
+   <listitem>
+    <para>
+     The <literal>vlc</literal> package gained support for Chromecast
+     streaming, enabled by default. TCP port 8010 must be open for it to work,
+     so something like <literal>networking.firewall.allowedTCPPorts = [ 8010
+     ];</literal> may be required in your configuration. Also consider enabling
+     <link xlink:href="https://nixos.wiki/wiki/Accelerated_Video_Playback">
+     Accelerated Video Playback</link> for better transcoding performance.
+    </para>
+   </listitem>
   </itemizedlist>
  </section>
 </section>
diff --git a/pkgs/applications/video/vlc/default.nix b/pkgs/applications/video/vlc/default.nix
index cd3999e38c09..7f1233a4e04e 100644
--- a/pkgs/applications/video/vlc/default.nix
+++ b/pkgs/applications/video/vlc/default.nix
@@ -13,8 +13,13 @@
 , jackSupport ? false
 , fetchpatch
 , removeReferencesTo
+, chromecastSupport ? true, protobuf, libmicrodns
 }:
 
+# chromecastSupport requires TCP port 8010 to be open for it to work.
+# If your firewall is enabled, make sure to have something like:
+#   networking.firewall.allowedTCPPorts = [ 8010 ];
+
 with stdenv.lib;
 
 assert (withQt5 -> qtbase != null && qtsvg != null && qtx11extras != null);
@@ -42,7 +47,8 @@ stdenv.mkDerivation rec {
     fluidsynth wayland wayland-protocols
   ] ++ optional (!stdenv.hostPlatform.isAarch64) live555
     ++ optionals withQt5    [ qtbase qtsvg qtx11extras ]
-    ++ optional jackSupport libjack2;
+    ++ optional jackSupport libjack2
+    ++ optionals chromecastSupport [ protobuf libmicrodns ];
 
   nativeBuildInputs = [ autoreconfHook perl pkgconfig removeReferencesTo ];
 
@@ -76,7 +82,12 @@ stdenv.mkDerivation rec {
   # "--enable-foo" flags here
   configureFlags = [
     "--with-kde-solid=$out/share/apps/solid/actions"
-  ] ++ optional onlyLibVLC "--disable-vlc";
+  ] ++ optional onlyLibVLC "--disable-vlc"
+    ++ optionals chromecastSupport [
+    "--enable-sout"
+    "--enable-chromecast"
+    "--enable-microdns"
+  ];
 
   # Remove runtime dependencies on libraries
   postConfigure = ''
diff --git a/pkgs/development/libraries/libmicrodns/default.nix b/pkgs/development/libraries/libmicrodns/default.nix
new file mode 100644
index 000000000000..3c55a6b036cc
--- /dev/null
+++ b/pkgs/development/libraries/libmicrodns/default.nix
@@ -0,0 +1,30 @@
+{ stdenv
+, fetchFromGitHub
+, autoreconfHook
+, pkgconfig
+}:
+
+stdenv.mkDerivation rec {
+  version = "0.0.10";
+  pname = "libmicrodns";
+
+  src = fetchFromGitHub {
+    owner = "videolabs";
+    repo = pname;
+    rev = version;
+    sha256 = "1xvl9k49ng35wbsqmnjnyqvkyjf8dcq2ywsq3jp3wh0rgmxhq2fh";
+  };
+
+  nativeBuildInputs = [
+    autoreconfHook
+    pkgconfig
+  ];
+
+  meta = with stdenv.lib; {
+    description = "Minimal mDNS resolver library, used by VLC";
+    homepage = https://github.com/videolabs/libmicrodns;
+    license = licenses.lgpl21;
+    platforms = platforms.linux;
+    maintainers = [ maintainers.shazow ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c83c0d54f28e..ff3ab12e6884 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4105,6 +4105,8 @@ in
 
   libpointmatcher = callPackage ../development/libraries/libpointmatcher { };
 
+  libmicrodns = callPackage ../development/libraries/libmicrodns { };
+
   libnids = callPackage ../tools/networking/libnids { };
 
   libtorrent = callPackage ../tools/networking/p2p/libtorrent { };