102 lines
2.6 KiB
Nix
102 lines
2.6 KiB
Nix
|
|
{
|
||
|
|
lib,
|
||
|
|
jdk21,
|
||
|
|
openjfx21,
|
||
|
|
maven,
|
||
|
|
fetchFromGitHub,
|
||
|
|
makeDesktopItem,
|
||
|
|
copyDesktopItems,
|
||
|
|
wrapGAppsHook3,
|
||
|
|
gtk3,
|
||
|
|
}:
|
||
|
|
|
||
|
|
let
|
||
|
|
jdkWithJFX =
|
||
|
|
if jdk21.pname == "openjdk" then
|
||
|
|
jdk21.override {
|
||
|
|
enableJavaFX = true;
|
||
|
|
openjfx21 = openjfx21.override { withWebKit = true; };
|
||
|
|
}
|
||
|
|
else
|
||
|
|
throw "bad jdk variant";
|
||
|
|
in
|
||
|
|
maven.buildMavenPackage rec {
|
||
|
|
pname = "sportstracker";
|
||
|
|
version = "8.0.1";
|
||
|
|
|
||
|
|
src = fetchFromGitHub {
|
||
|
|
owner = "ssaring";
|
||
|
|
repo = "sportstracker";
|
||
|
|
rev = "SportsTracker-${version}";
|
||
|
|
hash = "sha256-5TRTZmBwu33CJieYyt4OtlzVjlfY1FLef9WwKl9iUIw=";
|
||
|
|
};
|
||
|
|
|
||
|
|
patches = [
|
||
|
|
# We use nixpkgs's JavaFX instead of the one originally fetched by Maven,
|
||
|
|
# so we don't even need to fetch it. This avoids having platform-dependent hashes.
|
||
|
|
./remove-pom-jfx.patch
|
||
|
|
./fix-maven-plugin-versions.patch
|
||
|
|
];
|
||
|
|
|
||
|
|
mvnJdk = jdkWithJFX;
|
||
|
|
mvnHash = "sha256-dAANjxM9cEEw+y3tOLHykxjdlVQh8I7pd/9k3lbkgzY=";
|
||
|
|
|
||
|
|
mvnParameters = toString [
|
||
|
|
"-Dproject.build.outputTimestamp=1980-01-01T00:00:02Z" # set fixed build timestamp for deterministic jar
|
||
|
|
"-Dtest=!BindingUtilsToggleGroupTest" # uses DISPLAY
|
||
|
|
];
|
||
|
|
|
||
|
|
nativeBuildInputs = [
|
||
|
|
copyDesktopItems
|
||
|
|
wrapGAppsHook3
|
||
|
|
];
|
||
|
|
|
||
|
|
buildInputs = [ gtk3 ];
|
||
|
|
|
||
|
|
installPhase = ''
|
||
|
|
runHook preInstall
|
||
|
|
|
||
|
|
install -Dm644 sportstracker/target/sportstracker-*.jar $out/share/sportstracker/sportstracker.jar
|
||
|
|
install -Dm644 sportstracker/target/lib/*.jar -t $out/share/sportstracker/lib
|
||
|
|
install -Dm644 sportstracker/docs/* -t $out/share/doc/sportstracker
|
||
|
|
install -Dm644 st-packager/icons/linux/SportsTracker.png -t $out/share/pixmaps
|
||
|
|
|
||
|
|
runHook postInstall
|
||
|
|
'';
|
||
|
|
|
||
|
|
desktopItems = [
|
||
|
|
(makeDesktopItem {
|
||
|
|
name = "sportstracker";
|
||
|
|
exec = "SportsTracker";
|
||
|
|
icon = "SportsTracker";
|
||
|
|
desktopName = "SportsTracker";
|
||
|
|
comment = meta.description;
|
||
|
|
terminal = false;
|
||
|
|
categories = [
|
||
|
|
"Sports"
|
||
|
|
"Utility"
|
||
|
|
];
|
||
|
|
})
|
||
|
|
];
|
||
|
|
|
||
|
|
# don't double-wrap
|
||
|
|
dontWrapGApps = true;
|
||
|
|
|
||
|
|
postFixup = ''
|
||
|
|
makeWrapper ${jdkWithJFX}/bin/java $out/bin/SportsTracker \
|
||
|
|
--add-flags "-Djava.awt.headless=true" \
|
||
|
|
--add-flags "-jar $out/share/sportstracker/sportstracker.jar" \
|
||
|
|
"''${gappsWrapperArgs[@]}"
|
||
|
|
'';
|
||
|
|
|
||
|
|
meta = {
|
||
|
|
changelog = "https://www.saring.de/sportstracker/CHANGES.txt";
|
||
|
|
description = "Desktop application for people who want to record and analyze their sporting activities";
|
||
|
|
homepage = "https://www.saring.de/sportstracker";
|
||
|
|
license = lib.licenses.gpl2Only;
|
||
|
|
mainProgram = "SportsTracker";
|
||
|
|
maintainers = with lib.maintainers; [ tomasajt ];
|
||
|
|
platforms = jdkWithJFX.meta.platforms;
|
||
|
|
};
|
||
|
|
}
|