Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{ lib, mkDerivation, fetchFromGitHub, cmake, pkg-config, boost, capstone
2, double-conversion, graphviz, qtxmlpatterns }:
3
4mkDerivation rec {
5 pname = "edb";
6 version = "1.3.0";
7
8 src = fetchFromGitHub {
9 owner = "eteran";
10 repo = "edb-debugger";
11 rev = "1.3.0";
12 fetchSubmodules = true;
13 sha256 = "fFUau8XnsRFjC83HEsqyhrwCCBOfDmV6oACf3txm7O8=";
14 };
15
16 nativeBuildInputs = [ cmake pkg-config ];
17
18 buildInputs = [ boost.dev capstone double-conversion graphviz qtxmlpatterns ];
19
20 postPatch = ''
21 # Remove CMAKE_INSTALL_PREFIX from DEFAULT_PLUGIN_PATH otherwise the nix store path will appear twice.
22 substituteInPlace ./src/CMakeLists.txt --replace \
23 '-DDEFAULT_PLUGIN_PATH=\"''${CMAKE_INSTALL_PREFIX}/''${CMAKE_INSTALL_LIBDIR}/edb\"' \
24 '-DDEFAULT_PLUGIN_PATH=\"''${CMAKE_INSTALL_LIBDIR}/edb\"'
25
26 # The build script checks for the presence of .git to determine whether
27 # submodules were fetched and will throw an error if it's not there.
28 # Avoid using leaveDotGit in the fetchFromGitHub options as it is non-deterministic.
29 mkdir -p src/qhexview/.git
30
31 # Change default optional terminal program path to one that is more likely to work on NixOS.
32 substituteInPlace ./src/Configuration.cpp --replace "/usr/bin/xterm" "xterm";
33
34 sed '1i#include <memory>' -i include/{RegisterViewModelBase,State,IState}.h # gcc12
35 '';
36
37 meta = with lib; {
38 description = "Cross platform AArch32/x86/x86-64 debugger";
39 homepage = "https://github.com/eteran/edb-debugger";
40 license = licenses.gpl2Plus;
41 maintainers = with maintainers; [ lihop maxxk ];
42 platforms = [ "x86_64-linux" ];
43 };
44}