nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 73 lines 1.9 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchFromGitHub, 5 buildGhidraExtension, 6 z3, 7 gradle, 8}: 9let 10 ghidraPlatformName = 11 { 12 x86_64-linux = "linux_x86_64"; 13 aarch64-linux = "linux_x86_64"; 14 x86_64-darwin = "mac_x86_64"; 15 aarch64-darwin = "mac_arm_64"; 16 } 17 .${stdenv.hostPlatform.system} 18 or (throw "${stdenv.hostPlatform.system} is an unsupported platform"); 19 20 z3_lib = ( 21 z3.override { 22 javaBindings = true; 23 jdk = gradle.jdk; 24 } 25 ); 26 27 self = buildGhidraExtension (finalAttrs: { 28 pname = "kaiju"; 29 version = "250709"; 30 31 src = fetchFromGitHub { 32 owner = "CERTCC"; 33 repo = "kaiju"; 34 rev = finalAttrs.version; 35 hash = "sha256-xt/h0HeFCk4s1GIr3wKegGCGIUxMPFfyKKJ9o/WId/E="; 36 }; 37 38 buildInputs = [ 39 z3_lib 40 ]; 41 42 # used to copy java bindings from nixpkgs z3 package instead of having kaiju's build.gradle build gradle from source 43 # https://github.com/CERTCC/kaiju/blob/c9dbb55484b3d2a6abd9dfca2197cd00fb7ee3c1/build.gradle#L189 44 preBuild = '' 45 mkdir -p build/cmake/z3/java-bindings 46 ln -s ${lib.getOutput "java" z3_lib}/share/java/com.microsoft.z3.jar build/cmake/z3/java-bindings 47 mkdir -p os/${ghidraPlatformName} 48 cp ${lib.getOutput "java" z3_lib}/lib/* os/${ghidraPlatformName} 49 ''; 50 51 gradleFlags = [ "-PKAIJU_SKIP_Z3_BUILD=true" ]; 52 53 mitmCache = gradle.fetchDeps { 54 pkg = self; 55 data = ./deps.json; 56 }; 57 58 meta = { 59 description = "Java implementation of some features of the CERT Pharos Binary Analysis Framework for Ghidra"; 60 homepage = "https://github.com/CERTCC/kaiju"; 61 downloadPage = "https://github.com/CERTCC/kaiju/releases/tag/${finalAttrs.version}"; 62 license = lib.licenses.bsd3; 63 maintainers = [ lib.maintainers.ivyfanchiang ]; 64 platforms = [ 65 "x86_64-linux" 66 "aarch64-linux" 67 "x86_64-darwin" 68 "aarch64-darwin" 69 ]; 70 }; 71 }); 72in 73self