about summary refs log tree commit diff
path: root/pkgs/applications/networking/p2p/freenet/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/p2p/freenet/default.nix')
-rw-r--r--pkgs/applications/networking/p2p/freenet/default.nix74
1 files changed, 42 insertions, 32 deletions
diff --git a/pkgs/applications/networking/p2p/freenet/default.nix b/pkgs/applications/networking/p2p/freenet/default.nix
index 80f8eb840f13..51d7a49cac79 100644
--- a/pkgs/applications/networking/p2p/freenet/default.nix
+++ b/pkgs/applications/networking/p2p/freenet/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, fetchgit, ant, jdk, makeWrapper }:
+{ stdenv, fetchurl, fetchgit, ant, jdk, bash, coreutils, substituteAll }:
 
 let
   freenet_ext = fetchurl {
@@ -15,46 +15,56 @@ let
     sha256 = "109zn9w8axdkjwhkkcm2s8dvib0mq0n8imjgs3r8hvi128cjsmg9";
   };
   version = "build01470";
-in
-stdenv.mkDerivation {
-  name = "freenet-${version}";
 
+  freenet-jars = stdenv.mkDerivation {
+    name = "freenet-jars-${version}";
 
-  src = fetchgit {
-    url = https://github.com/freenet/fred;
-    rev = "refs/tags/${version}";
-    sha256 = "1b6e6fec2b9a729d4a25605fa142df9ea42e59b379ff665f580e32c6178c9746";
-  };
+    src = fetchgit {
+      url = https://github.com/freenet/fred;
+      rev = "refs/tags/${version}";
+      sha256 = "1b6e6fec2b9a729d4a25605fa142df9ea42e59b379ff665f580e32c6178c9746";
+    };
 
-  patchPhase = ''
-    cp ${freenet_ext} lib/freenet/freenet-ext.jar
-    cp ${bcprov} lib/bcprov-jdk15on-152.jar
+    patchPhase = ''
+      cp ${freenet_ext} lib/freenet/freenet-ext.jar
+      cp ${bcprov} lib/bcprov-jdk15on-152.jar
 
-    sed '/antcall.*-ext/d' -i build.xml
-    sed 's/@unknown@/${version}/g' -i build-clean.xml
-  '';
+      sed '/antcall.*-ext/d' -i build.xml
+      sed 's/@unknown@/${version}/g' -i build-clean.xml
+    '';
 
-  buildInputs = [ ant jdk makeWrapper ];
+    buildInputs = [ ant jdk ];
 
-  buildPhase = "ant package-only";
+    buildPhase = "ant package-only";
 
-  freenetWrapper = ./freenetWrapper;
+    installPhase = ''
+      mkdir -p $out/share/freenet
+      cp lib/bcprov-jdk15on-152.jar $out/share/freenet
+      cp lib/freenet/freenet-ext.jar $out/share/freenet
+      cp dist/freenet.jar $out/share/freenet
+    '';
+  };
 
-  installPhase = ''
-    mkdir -p $out/share/freenet $out/bin
-    cp lib/bcprov-jdk15on-152.jar $out/share/freenet
-    cp lib/freenet/freenet-ext.jar $out/share/freenet
-    cp dist/freenet.jar $out/share/freenet
+in stdenv.mkDerivation {
+  name = "freenet-${version}";
+  inherit version;
 
-    cat <<EOF > $out/bin/freenet.wrapped
-    #!${stdenv.shell}
-    ${jdk.jre}/bin/java -cp $out/share/freenet/bcprov-jdk15on-152.jar:$out/share/freenet/freenet-ext.jar:$out/share/freenet/freenet.jar \\
-      -Xmx1024M freenet.node.NodeStarter
-    EOF
-    chmod +x $out/bin/freenet.wrapped
-    makeWrapper $freenetWrapper $out/bin/freenet \
-      --set FREENET_ROOT "$out" \
-      --set FREENET_SEEDNODES "${seednodes}"
+  src = substituteAll {
+    src = ./freenetWrapper;
+    inherit bash coreutils seednodes;
+    freenet = freenet-jars;
+    jre = jdk.jre;
+  };
+
+  jars = freenet-jars;
+
+  phases = [ "installPhase" ];
+
+  installPhase = ''
+    mkdir -p $out/bin
+    cp $src $out/bin/freenet
+    chmod +x $out/bin/freenet
+    ln -s ${freenet-jars}/share $out/share
   '';
 
   meta = {