Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
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;
|
|
};
|
|
}
|