summaryrefslogtreecommitdiffstats
path: root/pkgs/tools
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools')
-rw-r--r--pkgs/tools/misc/plantuml-server/default.nix58
1 files changed, 58 insertions, 0 deletions
diff --git a/pkgs/tools/misc/plantuml-server/default.nix b/pkgs/tools/misc/plantuml-server/default.nix
new file mode 100644
index 000000000000..11db08dd9735
--- /dev/null
+++ b/pkgs/tools/misc/plantuml-server/default.nix
@@ -0,0 +1,58 @@
+{ stdenv, fetchFromGitHub, maven, jdk }:
+
+let
+ version = "1.2020.14";
+
+ src = fetchFromGitHub {
+ owner = "plantuml";
+ repo = "plantuml-server";
+ rev = "v${version}";
+ sha256 = "08g6ddpkly5yhjhw7gpsanyspar1752jy9cypwxsqrdzqrv738b8";
+ };
+
+ # perform fake build to make a fixed-output derivation out of the files downloaded from maven central
+ deps = stdenv.mkDerivation {
+ name = "plantuml-server-${version}-deps";
+ inherit src;
+ buildInputs = [ jdk maven ];
+ buildPhase = ''
+ while mvn package -Dmaven.repo.local=$out/.m2; [ $? = 1 ]; do
+ echo "timeout, restart maven to continue downloading"
+ done
+ '';
+ # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside
+ installPhase = ''find $out/.m2 -type f -regex '.+\(\.lastUpdated\|resolver-status\.properties\|_remote\.repositories\)' -delete'';
+ outputHashAlgo = "sha256";
+ outputHashMode = "recursive";
+ outputHash = "1wwgyjalhlj5azggs9vvsrr54pg7gl8p36pgf6pk12rsszzl7a97";
+ };
+in
+
+stdenv.mkDerivation rec {
+ pname = "plantuml-server";
+ inherit version;
+ inherit src;
+
+ buildInputs = [ jdk maven ];
+
+ buildPhase = ''
+ # 'maven.repo.local' must be writable so copy it out of nix store
+ cp -R $src repo
+ chmod +w -R repo
+ cd repo
+ mvn package --offline -Dmaven.repo.local=$(cp -dpR ${deps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2
+ '';
+
+ installPhase = ''
+ mkdir -p "$out/webapps"
+ cp "target/plantuml.war" "$out/webapps/plantuml.war"
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A web application to generate UML diagrams on-the-fly.";
+ homepage = "https://plantuml.com/";
+ license = licenses.gpl3;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ truh ];
+ };
+}