diff --git a/pkgs/servers/demoit/default.nix b/pkgs/servers/demoit/default.nix
new file mode 100644
index 000000000000..24eafb987478
--- /dev/null
+++ b/pkgs/servers/demoit/default.nix
@@ -0,0 +1,24 @@
+{ stdenv
+, buildGoPackage
+, fetchFromGitHub
+}:
+
+buildGoPackage rec {
+  pname = "demoit";
+  version = "unstable-2019-03-29";
+  goPackagePath = "github.com/dgageot/demoit";
+
+  src = fetchFromGitHub {
+    owner = "dgageot";
+    repo = "demoit";
+    rev = "ec70fbdf5a5e92fa1c06d8f039f7d388e0237ba2";
+    sha256 = "01584cxlnrc928sw7ldmi0sm7gixmwnawy3c5hd79rqkw8r0gbk0";
+  };
+
+  meta = with stdenv.lib; {
+    description = "Live coding demos without Context Switching";
+    homepage = https://github.com/dgageot/demoit;
+    license = licenses.asl20;
+    maintainers = [ maintainers.freezeboy ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index e0675242485b..113930d69cc8 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -157,6 +157,8 @@ in
 
   deadcode = callPackage ../development/tools/deadcode { };
 
+  demoit = callPackage ../servers/demoit { };
+
   diffPlugins = (callPackage ../build-support/plugins.nix {}).diffPlugins;
 
   dieHook = makeSetupHook {} ../build-support/setup-hooks/die.sh;