{ stdenv, bundlerEnv, ruby, fetchFromGitHub, nodejs }:
# nix-shell --command "bundler install && bundix" in the clone, copy gemset.nix, Gemfile and Gemfile.lock
let
  gems = bundlerEnv {
    name = "beef-env";
    inherit ruby;
    gemdir  = ./.;
  };
in stdenv.mkDerivation {
  name = "beef-2018-09-21";
  src = fetchFromGitHub {
    owner = "beefproject";
    repo = "beef";
    rev = "d237c95";
    sha256 = "1mykbjwjcbd2a18wycaf35hi3b9rmvqz1jnk2v55sd4c39f0jpf2";
  };
  prePatch = ''
    ls -alhtr
  '';
  patches = [ ./db-in-homedir.patch ];
  buildInputs = [gems ruby];
  installPhase = ''
    mkdir -p $out/{bin,share/beef}

    cp -r * $out/share/beef
    # set the default db path, unfortunately setting to /tmp does not seem to work
    # sed -i 's#db_file: .*#db_file: "/tmp/beef.db"#' $out/share/beef/config.yaml

    bin=$out/bin/beef
    cat > $bin <<EOF
#!/bin/sh -e
PATH=$PATH:${nodejs}/bin/
exec ${gems}/bin/bundle exec ${ruby}/bin/ruby $out/share/beef/beef "\$@"
EOF
    chmod +x $bin
  '';

  meta = with stdenv.lib; {
    homepage = https://beefproject.com/;
    description = "The Browser Exploitation Framework";
    platforms = platforms.linux;
    maintainers = with maintainers; [ makefu ];
  };

}