11 maven.buildMavenPackage rec {
15 src = fetchFromGitHub {
16 owner = "protegeproject";
19 hash = "sha256-Q3MHa7nCeF31n7JPltcemFBc/sJwGA9Ev0ymjQhY/U0=";
23 mvnHash = "sha256-kemP2gDv1CYuaoK0fwzBxdLTusarPasf2jCDQj/HPYE=";
26 # Pin built-in Maven plugins to avoid checksum variations on Maven updates
27 ./enforce-plugin-versions.patch
28 # Avoid building platform-dependent builds which embed their own JREs
29 ./platform-independent-only.patch
42 mkdir -p $out/bin $out/share/protege
44 # Copy the application directory whole into the output, as it is used by the
45 # launcher script as a reference point to look for default configuration
46 mv protege-desktop/target/protege-${version}-platform-independent/Protege-${version} $out/Protege
48 # Place a wrapper for the launcher script into a default /bin location
49 makeWrapper $out/Protege/run.sh $out/bin/protege \
50 --set JAVA_HOME ${jdk11.home}
52 # Link all jars from within the standard /share/protege directory
53 ln -s -t $out/share/protege $out/Protege/bundles/*
55 # Generate and copy icons to where they can be found
56 icoFileToHiColorTheme $out/Protege/app/Protege.ico protege $out
64 desktopName = "Protege Desktop";
65 genericName = "Ontology Editor";
67 comment = meta.description;
68 categories = [ "Development" ];
74 homepage = "https://protege.stanford.edu/";
75 downloadPage = "https://protege.stanford.edu/software.php#desktop-protege";
76 description = "A free and open-source OWL 2 ontology editor";
78 Protégé Desktop is a feature rich ontology editing environment with full
79 support for the OWL 2 Web Ontology Language, and direct in-memory
80 connections to description logic reasoners.
82 maintainers = with lib.maintainers; [ nessdoor ];
83 license = with lib.licenses; [ bsd2 ];
84 # TODO Protege is able to run on Darwin as well, but I (@nessdoor) had no
85 # way of testing it nor any experience in packaging Darwin apps, so I
86 # will leave the task to someone who has the right tools and knowledge.
87 platforms = lib.platforms.unix;
88 mainProgram = "protege";
89 sourceProvenance = with lib.sourceTypes; [ fromSource binaryBytecode ];