summary refs log tree commit diff
path: root/pkgs/applications/misc/freeplane/default.nix
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
committerAlyssa Ross <hi@alyssa.is>2021-08-04 10:43:07 +0000
commit62614cbef7da005c1eda8c9400160f6bcd6546b8 (patch)
treec2630f69080637987b68acb1ee8676d2681fe304 /pkgs/applications/misc/freeplane/default.nix
parentd9c82ed3044c72cecf01c6ea042489d30914577c (diff)
parente24069138dfec3ef94f211f1da005bb5395adc11 (diff)
downloadnixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.gz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.bz2
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.lz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.xz
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.tar.zst
nixpkgs-62614cbef7da005c1eda8c9400160f6bcd6546b8.zip
Merge branch 'nixpkgs-update' into master
Diffstat (limited to 'pkgs/applications/misc/freeplane/default.nix')
-rw-r--r--pkgs/applications/misc/freeplane/default.nix117
1 files changed, 117 insertions, 0 deletions
diff --git a/pkgs/applications/misc/freeplane/default.nix b/pkgs/applications/misc/freeplane/default.nix
new file mode 100644
index 00000000000..f9c04fedfdd
--- /dev/null
+++ b/pkgs/applications/misc/freeplane/default.nix
@@ -0,0 +1,117 @@
+{ stdenv, lib, fetchpatch, fetchFromGitHub, makeWrapper, writeText, runtimeShell, jdk11, perl, gradle_5, which }:
+
+let
+  pname = "freeplane";
+  version = "1.8.11";
+
+  src = fetchFromGitHub {
+    owner = pname;
+    repo = pname;
+    rev = "release-${version}";
+    sha256 = "07xjx9pf62dvy8lx6vnbwwcn1zqy89cmdmwy792k7gb12wz81nnc";
+  };
+
+  deps = stdenv.mkDerivation {
+    name = "${pname}-deps";
+    inherit src;
+
+    nativeBuildInputs = [ jdk11 perl gradle_5 ];
+
+    buildPhase = ''
+      GRADLE_USER_HOME=$PWD gradle -Dorg.gradle.java.home=${jdk11} --no-daemon jar
+    '';
+
+    # Mavenize dependency paths
+    # e.g. org.codehaus.groovy/groovy/2.4.0/{hash}/groovy-2.4.0.jar -> org/codehaus/groovy/groovy/2.4.0/groovy-2.4.0.jar
+    installPhase = ''
+      find ./caches/modules-2 -type f -regex '.*\.\(jar\|pom\)' \
+        | perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
+        | sh
+    '';
+
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = "0r7f6713m0whh5hlk1id7z9j5v9494r41sivn9fzl63q70kzz92g";
+  };
+
+  # Point to our local deps repo
+  gradleInit = writeText "init.gradle" ''
+    logger.lifecycle 'Replacing Maven repositories with ${deps}...'
+    gradle.projectsLoaded {
+      rootProject.allprojects {
+        buildscript {
+          repositories {
+            clear()
+            maven { url '${deps}' }
+          }
+        }
+        repositories {
+          clear()
+          maven { url '${deps}' }
+        }
+      }
+    }
+    settingsEvaluated { settings ->
+      settings.pluginManagement {
+        repositories {
+          maven { url '${deps}' }
+        }
+      }
+    }
+  '';
+
+  # downloaded from unicode.org and twemoji.maxcdn.com by code in freeplane/emoji.gradle
+  # the below hash is for versions of freeplane that use twemoji 12.1.4, and emoji 12.1
+  emoji = stdenv.mkDerivation rec {
+    name = "${pname}-emoji";
+    inherit src;
+
+    nativeBuildInputs = [ jdk11 gradle_5 ];
+
+    buildPhase = ''
+      GRADLE_USER_HOME=$PWD gradle -Dorg.gradle.java.home=${jdk11} --no-daemon --offline --init-script ${gradleInit} emojiGraphicsClasses emojiListClasses
+    '';
+
+    installPhase = ''
+      mkdir -p $out/emoji/txt $out/resources/images
+      cp freeplane/build/emoji/txt/emojilist.txt $out/emoji/txt
+      cp -r freeplane/build/emoji/resources/images/emoji/. $out/resources/images/emoji
+    '';
+
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+    outputHash = "0zikbakbr2fhyv4h4h52ajhznjka0hg6hiqfy1528a39i6psipn3";
+  };
+
+in stdenv.mkDerivation rec {
+  inherit pname version src;
+
+  nativeBuildInputs = [ makeWrapper jdk11 gradle_5 ];
+
+  buildPhase = ''
+    mkdir -p -- ./freeplane/build/emoji/{txt,resources/images}
+    cp ${emoji}/emoji/txt/emojilist.txt ./freeplane/build/emoji/txt/emojilist.txt
+    cp -r ${emoji}/resources/images/emoji ./freeplane/build/emoji/resources/images/emoji
+    GRADLE_USER_HOME=$PWD gradle -Dorg.gradle.java.home=${jdk11} --no-daemon --offline --init-script ${gradleInit} -x test -x :freeplane:downloadEmoji build
+  '';
+
+  installPhase = ''
+    runHook preInstall
+    mkdir -p $out/bin $out/share
+
+    cp -a ./BIN/. $out/share/${pname}
+    makeWrapper $out/share/${pname}/${pname}.sh $out/bin/${pname} \
+      --set FREEPLANE_BASE_DIR $out/share/${pname} \
+      --set JAVA_HOME ${jdk11} \
+      --prefix PATH : ${lib.makeBinPath [ jdk11 which ]}
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Mind-mapping software";
+    homepage = "https://freeplane.org/";
+    license = licenses.gpl2Plus;
+    platforms = platforms.linux;
+    maintainers = with maintainers; [ chaduffy ];
+  };
+}