{ pkgs, fetchFromGitHub, fetchurl, writeScript, python3Packages, stdenv, stdenvNoCC, }: let src = stdenvNoCC.mkDerivation { pname = "pppwn-python"; version = "1.0"; src = fetchFromGitHub { owner = "TheOfficialFloW"; repo = "PPPwn"; rev = "fb4ab5ffa97e083775ccad3a95e2348fc6b53e1c"; hash = "sha256-jSxF8Ara5Iu26X9k89bpB/5ogUwgXreJueDGuLIlbgo="; }; setup = ./setup.py; installPhase = '' mkdir $out cp -r $src/* $out/. cp $setup $out/setup.py ''; }; python = with python3Packages; buildPythonApplication { pname = "pppwn-python"; version = "1.0"; propagatedBuildInputs = [scapy]; inherit src; # buildPhase = "ls -l $src"; }; goldhen = fetchurl { url = "https://github.com/GoldHEN/GoldHEN/releases/download/2.4b18/GoldHEN_v2.4b18.7z"; hash = "sha256-0MhMefZd9a/HmgDFePM6sapwrrnCBfHniYldx9T8o40="; }; exploits = stdenv.mkDerivation { pname = "pppwn-exploits"; version = "1.0"; inherit src goldhen; nativeBuildInputs = with pkgs; [p7zip]; freebsd = fetchFromGitHub { owner = "OpenOrbis"; repo = "freebsd-headers"; rev = "master"; hash = "sha256-a92e9vZIuPCH4DbnPGdYg/flwVZPvhKdIrbff7cZA1U="; }; buildPhase = '' cp -r $src/* . cp -r $freebsd/* freebsd-headers ls -l ls -l freebsd-headers make -C stage1 FW=960 clean && make -C stage1 FW=960 make -C stage2 FW=960 clean && make -C stage2 FW=960 ''; installPhase = '' 7z x -y $goldhen 7z x -y pppnw_stage2/stage2_v1.03.7z mkdir -p $out/stage2 cp -r stage1 $out cp -r stage2_9.60.bin $out/stage2/stage2.bin ''; }; in stdenv.mkDerivation { pname = "pppwn"; version = "1.0"; inherit src python; installPhase = '' mkdir -p $out/bin cp $python/bin/pppwn.py $out/bin/. cp $src/offsets.py $out/bin/. cat << EOF >> $out/bin/pppwn #!${pkgs.bash}/bin/bash $out/bin/pppwn.py \ --stage1=${exploits}/stage1/stage1.bin \ --stage2=${exploits}/stage2/stage2.bin \ --fw=960 \ "\$@" EOF chmod +x $out/bin/pppwn ''; }