nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 70 lines 1.7 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchurl, 5 buildGhidraExtension, 6 ghidra, 7 flex, 8 bison, 9 texinfo, 10 perl, 11 zlib, 12 xcbuild, 13}: 14 15let 16 # Incorporates source from binutils 17 # https://github.com/NationalSecurityAgency/ghidra/blob/7ab9bf6abffb6938d61d072040fc34ad3331332b/GPL/GnuDisassembler/build.gradle#L34-L35 18 binutils-version = "2.41"; 19 binutils-src = fetchurl { 20 url = "mirror://gnu/binutils/binutils-${binutils-version}.tar.bz2"; 21 sha256 = "sha256-pMS+wFL3uDcAJOYDieGUN38/SLVmGEGOpRBn9nqqsws="; 22 }; 23in 24buildGhidraExtension { 25 pname = "gnudisassembler"; 26 version = lib.getVersion ghidra; 27 28 src = "${ghidra}/lib/ghidra/Extensions/Ghidra/${ghidra.distroPrefix}_GnuDisassembler.zip"; 29 30 postPatch = '' 31 ln -s ${binutils-src} binutils-${binutils-version}.tar.bz2 32 ''; 33 34 # Don't modify ELF stub resources 35 dontPatchELF = true; 36 dontStrip = true; 37 38 __darwinAllowLocalNetworking = true; 39 40 nativeBuildInputs = [ 41 flex 42 bison 43 texinfo 44 perl 45 ] 46 ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcbuild ]; 47 48 buildInputs = [ zlib ]; 49 gradleBuildTask = "assemble"; 50 51 installPhase = '' 52 runHook preInstall 53 54 EXTENSIONS_ROOT=$out/lib/ghidra/Ghidra/Extensions 55 mkdir -p $EXTENSIONS_ROOT 56 unzip -d $EXTENSIONS_ROOT $src 57 58 mkdir -p $EXTENSIONS_ROOT/GnuDisassembler/build 59 cp -r build/os $EXTENSIONS_ROOT/GnuDisassembler/build/ 60 61 runHook postInstall 62 ''; 63 64 meta = with lib; { 65 description = "Leverage the binutils disassembler capabilities for various processors"; 66 homepage = "https://ghidra-sre.org/"; 67 downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/GPL/GnuDisassembler"; 68 license = licenses.gpl2Only; 69 }; 70}