{ stdenv, fetchurl, ant, jdk, junit }:

stdenv.mkDerivation rec {
  name = "junixsocket-1.3";

  src = fetchurl {
    url = "http://junixsocket.googlecode.com/files/${name}-src.tar.bz2";
    sha256 = "0c6p8vmiv5nk8i6g1hgivnl3mpb2k3lhjjz0ss9dlirisfrxf1ym";
  };

  patches = [ ./darwin.patch ];

  buildInputs = [ ant jdk junit ];

  preConfigure =
    ''
      substituteInPlace build.xml \
        --replace /usr/bin/ "" \
        --replace macosx darwin
      substituteInPlace src/main/org/newsclub/net/unix/NativeUnixSocketConfig.java \
        --replace /opt/newsclub/lib-native $out/lib
    '';

  buildPhase = "ant";

  ANT_ARGS =
    # Note that our OpenJDK on Darwin is currently 32-bit, so we have to build a 32-bit dylib.
    (if stdenv.is64bit && !stdenv.isDarwin then [ "-Dskip32=true" ] else [ "-Dskip64=true" ])
    ++ [ "-Dgcc=cc" "-Dant.build.javac.source=1.6" ]
    ++ stdenv.lib.optional stdenv.isDarwin "-DisMac=true";

  installPhase =
    ''
      mkdir -p $out/share/java $out/lib
      cp -v dist/*.jar $out/share/java
      cp -v lib-native/*.so lib-native/*.dylib $out/lib/
    '';

  meta = {
    description = "A Java/JNI library for using Unix Domain Sockets from Java";
    homepage = https://code.google.com/p/junixsocket/;
    license = stdenv.lib.licenses.asl20;
    platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
  };
}
