{ stdenv, lib, copyDesktopItems, makeDesktopItem, makeWrapper, jre, fetchzip, }: let desktopItem = makeDesktopItem { name = "ugs"; exec = "ugs"; comment = "A cross-platform G-Code sender for GRBL, Smoothieware, TinyG and G2core."; desktopName = "Universal-G-Code-Sender"; categories = [ "Game" ]; }; in stdenv.mkDerivation (finalAttrs: { pname = "ugs"; version = "2.1.24"; src = fetchzip { url = "https://github.com/winder/Universal-G-Code-Sender/releases/download/v${finalAttrs.version}/UniversalGcodeSender.zip"; hash = "sha256-YDoH2romuozMWDBhZu5vW+XHHzqLJi3qYedQX2gzsGM="; }; dontUnpack = true; nativeBuildInputs = [ copyDesktopItems makeWrapper ]; installPhase = '' runHook preInstall makeWrapper ${jre}/bin/java $out/bin/ugs \ --prefix PATH : ${lib.makeBinPath [ jre ]} \ --add-flags "-jar ${finalAttrs.src}/UniversalGcodeSender.jar" runHook postInstall ''; desktopItems = [ desktopItem ]; meta = { description = "Cross-platform G-Code sender for GRBL, Smoothieware, TinyG and G2core"; homepage = "https://github.com/winder/Universal-G-Code-Sender"; maintainers = with lib.maintainers; [ matthewcroughan ]; sourceProvenance = with lib.sourceTypes; [ binaryBytecode ]; license = lib.licenses.gpl3; platforms = lib.platforms.all; mainProgram = "ugs"; }; })