Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 104 lines 2.5 kB view raw
1{ 2 lib, 3 stdenv, 4 fetchurl, 5 fetchFromGitHub, 6 jdk_headless, 7 jre, 8 gradle_8, 9 bash, 10 coreutils, 11 replaceVars, 12 nixosTests, 13 writeText, 14}: 15 16let 17 gradle = gradle_8; 18 jdk = jdk_headless; 19 20 freenet_ext = fetchurl { 21 url = "https://github.com/freenet/fred/releases/download/build01495/freenet-ext.jar"; 22 hash = "sha256-MvKz1r7t9UE36i+aPr72dmbXafCWawjNF/19tZuk158="; 23 }; 24 25 seednodes = fetchFromGitHub { 26 name = "freenet-seednodes"; 27 owner = "hyphanet"; 28 repo = "seedrefs"; 29 rev = "9df1bf93ab64aba634bdfc5f4d0e960571ce4ba5"; 30 hash = "sha256-nvwJvKw5IPhItPe4k/jnOGaa8H4DtOi8XxKFOKFMAuY="; 31 postFetch = '' 32 cat $out/* > $out/seednodes.fref 33 ''; 34 }; 35 36in 37stdenv.mkDerivation rec { 38 pname = "freenet"; 39 version = "01501"; 40 41 src = fetchFromGitHub { 42 owner = "freenet"; 43 repo = "fred"; 44 tag = "build${version}"; 45 hash = "sha256-XtcTQlgUNv6IQD89oelCyjb9r6wIbT3hCH+QHkjtgP8="; 46 }; 47 48 nativeBuildInputs = [ 49 gradle 50 jdk 51 ]; 52 53 wrapper = replaceVars ./freenetWrapper { 54 inherit 55 bash 56 coreutils 57 jre 58 seednodes 59 ; 60 # replaced in installPhase 61 CLASSPATH = null; 62 }; 63 64 mitmCache = gradle.fetchDeps { 65 inherit pname; 66 data = ./deps.json; 67 }; 68 69 # using reproducible archives breaks the build 70 gradleInitScript = writeText "empty-init-script.gradle" ""; 71 72 gradleFlags = [ "-Dorg.gradle.java.home=${jdk}" ]; 73 74 gradleBuildTask = "jar"; 75 76 installPhase = '' 77 runHook preInstall 78 79 install -Dm644 build/libs/freenet.jar $out/share/freenet/freenet.jar 80 ln -s ${freenet_ext} $out/share/freenet/freenet-ext.jar 81 mkdir -p $out/bin 82 install -Dm755 ${wrapper} $out/bin/freenet 83 export CLASSPATH="$(find ${mitmCache} -name "*.jar"| sort | grep -v bcprov-jdk15on-1.48.jar|tr $'\n' :):$out/share/freenet/freenet-ext.jar:$out/share/freenet/freenet.jar" 84 substituteInPlace $out/bin/freenet \ 85 --subst-var-by CLASSPATH "$CLASSPATH" 86 87 runHook postInstall 88 ''; 89 90 passthru.tests = { 91 inherit (nixosTests) freenet; 92 }; 93 94 meta = { 95 description = "Decentralised and censorship-resistant network"; 96 homepage = "https://freenetproject.org/"; 97 sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; 98 license = lib.licenses.gpl2Plus; 99 maintainers = with lib.maintainers; [ nagy ]; 100 platforms = with lib.platforms; linux; 101 changelog = "https://github.com/freenet/fred/blob/build${version}/NEWS.md"; 102 mainProgram = "freenet"; 103 }; 104}