yquake2: add desktop item

+43 -8
+16 -2
pkgs/games/quake2/yquake2/default.nix
··· 1 - { stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper 1 + { stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper, copyDesktopItems, makeDesktopItem 2 2 , SDL2, libGL, curl 3 3 , openalSupport ? true, openal 4 4 , Cocoa, OpenAL ··· 9 9 10 10 games = import ./games.nix { inherit stdenv lib fetchFromGitHub; }; 11 11 12 - wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2; }; 12 + wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2 copyDesktopItems makeDesktopItem; }; 13 13 14 14 yquake2 = stdenv.mkDerivation rec { 15 15 pname = "yquake2"; ··· 40 40 "WITH_SYSTEMDIR=$\{out}/share/games/quake2" 41 41 ]; 42 42 43 + nativeBuildInputs = [ copyDesktopItems ]; 44 + 43 45 enableParallelBuilding = true; 44 46 45 47 installPhase = '' 48 + runHook preInstall 46 49 # Yamagi Quake II expects all binaries (executables and libs) to be in the 47 50 # same directory. 48 51 mkdir -p $out/bin $out/lib/yquake2 $out/share/games/quake2/baseq2 ··· 50 53 ln -s $out/lib/yquake2/quake2 $out/bin/yquake2 51 54 ln -s $out/lib/yquake2/q2ded $out/bin/yq2ded 52 55 cp $src/stuff/yq2.cfg $out/share/games/quake2/baseq2 56 + install -Dm644 stuff/icon/Quake2.png $out/share/pixmaps/yamagi-quake2.png; 57 + runHook postInstall 53 58 ''; 59 + 60 + desktopItems = [ (makeDesktopItem { 61 + name = "yquake2"; 62 + exec = "yquake2"; 63 + icon = "yamagi-quake2"; 64 + desktopName = "yquake2"; 65 + comment = "Yamagi Quake II client"; 66 + categories = [ "Game" "Shooter" ]; 67 + })]; 54 68 55 69 meta = with lib; { 56 70 description = "Yamagi Quake II client";
+2
pkgs/games/quake2/yquake2/games.nix
··· 38 38 }; 39 39 40 40 installPhase = '' 41 + runHook preInstall 41 42 mkdir -p $out/lib/yquake2/${id} 42 43 cp release/* $out/lib/yquake2/${id} 44 + runHook postInstall 43 45 ''; 44 46 45 47 meta = with lib; {
+25 -6
pkgs/games/quake2/yquake2/wrapper.nix
··· 1 - { stdenv, lib, buildEnv, makeWrapper, yquake2 }: 1 + { stdenv, lib, buildEnv, makeWrapper, yquake2, copyDesktopItems, makeDesktopItem }: 2 2 3 3 { games 4 4 , name ··· 11 11 paths = [ yquake2 ] ++ games; 12 12 }; 13 13 14 - in stdenv.mkDerivation { 15 - name = "${name}-${lib.getVersion yquake2}"; 14 + in 15 + stdenv.mkDerivation { 16 + pname = name; 17 + version = lib.getVersion yquake2; 16 18 17 - nativeBuildInputs = [ makeWrapper ]; 19 + nativeBuildInputs = [ makeWrapper copyDesktopItems ]; 18 20 19 - buildCommand = '' 21 + dontUnpack = true; 22 + 23 + installPhase = '' 24 + runHook preInstall 20 25 mkdir -p $out/bin 21 26 '' + lib.concatMapStringsSep "\n" (game: '' 22 27 makeWrapper ${env}/bin/yquake2 $out/bin/yquake2-${game.title} \ 23 28 --add-flags "+set game ${game.id}" 24 29 makeWrapper ${env}/bin/yq2ded $out/bin/yq2ded-${game.title} \ 25 30 --add-flags "+set game ${game.id}" 26 - '') games; 31 + '') games + '' 32 + install -Dm644 ${yquake2}/share/pixmaps/yamagi-quake2.png $out/share/pixmaps/yamagi-quake2.png; 33 + runHook postInstall 34 + ''; 35 + 36 + desktopItems = map 37 + (game: makeDesktopItem ({ 38 + name = game.id; 39 + exec = game.title; 40 + icon = "yamagi-quake2"; 41 + desktopName = game.id; 42 + comment = game.description; 43 + categories = [ "Game" "Shooter" ]; 44 + })) 45 + games; 27 46 28 47 meta = { 29 48 inherit description;