Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / emulators / ccemux / default.nix
blob15fb0f88593f05fed4ab700feb337bafc915fa9a
1 { lib, stdenv, fetchurl, makeDesktopItem, makeWrapper, jre
2 , useCCTweaked ? true
3 }:
5 let
6   version = "unstable-2023-07-08";
7   rev = "989cfe52a0458b991e0a7d87edec81d3fef472ac";
9   baseUrl = "https://emux.cc/versions/${lib.substring 0 8 rev}/CCEmuX";
10   jar =
11     if useCCTweaked
12     then fetchurl {
13       url = "${baseUrl}-cct.jar";
14       hash = "sha256-B9Zan6wpYnUtaNbUIrXvkchPiEquMs9R2Kiqg85/VdY=";
15     }
16     else fetchurl {
17       url = "${baseUrl}-cc.jar";
18       hash = "sha256-2Z38O6z7OrHKe8GdLnexin749uJzQaCZglS+SwVD5YE=";
19     };
21   desktopIcon = fetchurl {
22     url = "https://github.com/CCEmuX/CCEmuX/raw/${rev}/src/main/resources/img/icon.png";
23     hash = "sha256-gqWURXaOFD/4aZnjmgtKb0T33NbrOdyRTMmLmV42q+4=";
24   };
25   desktopItem =  makeDesktopItem {
26     name = "CCEmuX";
27     exec = "ccemux";
28     icon = desktopIcon;
29     comment = "A modular ComputerCraft emulator";
30     desktopName = "CCEmuX";
31     genericName = "ComputerCraft Emulator";
32     categories = [ "Emulator" ];
33   };
36 stdenv.mkDerivation rec {
37   pname = "ccemux";
38   inherit version;
40   src = jar;
41   dontUnpack = true;
43   nativeBuildInputs = [ makeWrapper ];
44   buildInputs = [ jre ];
46   installPhase = ''
47     runHook preInstall
49     mkdir -p $out/{bin,share/ccemux}
50     cp -r ${desktopItem}/share/applications $out/share/applications
52     install -D ${src} $out/share/ccemux/ccemux.jar
53     install -D ${desktopIcon} $out/share/pixmaps/ccemux.png
55     makeWrapper ${jre}/bin/java $out/bin/ccemux \
56       --add-flags "-jar $out/share/ccemux/ccemux.jar"
58     runHook postInstall
59   '';
61   meta = with lib; {
62     description = "A modular ComputerCraft emulator";
63     homepage = "https://github.com/CCEmuX/CCEmuX";
64     sourceProvenance = with sourceTypes; [ binaryBytecode ];
65     license = licenses.mit;
66     maintainers = with maintainers; [ CrazedProgrammer viluon ];
67   };