1 { stdenv, lib, fetchurl, fetchFromGitHub, autoPatchelfHook, makeWrapper, libcxx
2 , libX11, libXt, libXdamage, glib, gtk3, dbus-glib, openssl, nodejs, zlib
4 let metadata = lib.importJSON ./meta.json;
6 replay-recordreplay = stdenv.mkDerivation rec {
7 pname = "replay-recordreplay";
8 version = builtins.head (builtins.match ".*/linux-recordreplay-(.*).tgz"
9 metadata.recordreplay.url);
10 nativeBuildInputs = [ autoPatchelfHook ];
11 buildInputs = [ stdenv.cc.cc.lib openssl zlib ];
13 src = (fetchzip metadata.recordreplay);
17 cp linux-recordreplay.so $out
21 patchelf --set-rpath "$(patchelf --print-rpath $out):${
22 lib.makeLibraryPath [ openssl ]
26 description = "RecordReplay internal recording library";
27 homepage = "https://www.replay.io/";
28 license = lib.licenses.unfree;
29 maintainers = with maintainers; [ phryneas ];
30 platforms = [ "x86_64-linux" ];
34 replay-io = stdenv.mkDerivation rec {
36 version = builtins.head
37 (builtins.match ".*/linux-gecko-(.*).tar.bz2" metadata.replay.url);
38 srcs = fetchurl metadata.replay;
39 nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
40 buildInputs = [ dbus-glib glib gtk3 libX11 libXdamage libXt ];
43 mkdir -p $out/opt/replay-io
44 cp -r * $out/opt/replay-io
46 makeWrapper $out/opt/replay-io/replay \
48 --set "RECORD_REPLAY_DRIVER" "${replay-recordreplay}"
52 passthru.updateScript = ./update.sh;
55 description = "The Time Travel Debugger for Web Development";
57 Replay allows you to record and replay web applications with familiar browser dev tools.
58 You can access the browser DevTools at any point of the recording, adding new logger
59 statements and inspecting the status of the DOM, variables and the current call stack.
60 Your recordings can be shared with other users for collaborative debugging.
62 homepage = "https://www.replay.io/";
63 downloadPage = "https://www.replay.io/";
64 mainProgram = "replay-io";
65 license = lib.licenses.mpl20;
66 maintainers = with maintainers; [ phryneas ];
67 platforms = [ "x86_64-linux" ];
71 replay-node = stdenv.mkDerivation rec {
72 pname = "replay-node";
73 version = builtins.head
74 (builtins.match ".*/linux-node-(.*)" metadata.replay-node.url);
75 nativeBuildInputs = [ autoPatchelfHook makeWrapper ];
76 buildInputs = [ stdenv.cc.cc.lib ];
78 src = (fetchurl metadata.replay-node);
83 mkdir -p $out/bin $out/opt/replay-node
84 cp $src $out/opt/replay-node/node-unwrapped
85 chmod +x $out/opt/replay-node/node-unwrapped
87 makeWrapper $out/opt/replay-node/node-unwrapped \
88 $out/opt/replay-node/node \
89 --set "RECORD_REPLAY_DRIVER" "${replay-recordreplay}"
91 ln -s $out/opt/replay-node/node $out/bin/replay-node
96 description = "Event-driven I/O framework for the V8 JavaScript engine, patched for replay";
97 homepage = "https://github.com/RecordReplay/node";
98 license = licenses.mit;
99 maintainers = with maintainers; [ phryneas ];
100 platforms = platforms.linux;
101 mainProgram = "replay-node";
105 replay-node-cli = stdenv.mkDerivation {
106 pname = "replay-node-cli";
107 version = "0.1.7-" + builtins.head
108 (builtins.match ".*/linux-node-(.*)" metadata.replay-node.url);
109 src = fetchFromGitHub {
110 owner = "RecordReplay";
111 repo = "replay-node-cli";
112 rev = "5269c8b8e7c5c7a9618a68f883d19c11a68be837";
113 sha256 = "04d22q3dvs9vxpb9ps64pdxq9ziwgvnzdgsn6p9p0lzjagh0f5n0";
116 nativeBuildInputs = [ makeWrapper ];
117 buildInputs = [ stdenv.cc.cc.lib nodejs ];
121 mkdir -p $out/opt/replay-node-cli
122 cp -r * $out/opt/replay-node-cli
123 makeWrapper $out/opt/replay-node-cli/bin/replay-node \
124 $out/bin/replay-node \
125 --prefix "PATH" ":" "${nodejs}/bin" \
126 --set "RECORD_REPLAY_NODE_DIRECTORY" "${replay-node}/opt/replay-node"
131 description = "The Time Travel Debugger for Web Development - Node Command Line";
133 The Replay Node Command Line allows you to record node applications and debug them
134 with familiar browser dev tools.
135 You can access the browser DevTools at any point of the recording, adding new logger
136 statements and inspecting the status of variables and the current call stack.
137 Your recordings can be shared with other users for collaborative debugging.
139 homepage = "https://www.replay.io/";
140 mainProgram = "replay-node";
141 license = lib.licenses.bsd3;
142 maintainers = with maintainers; [ phryneas ];
143 platforms = [ "x86_64-linux" ];