about summary refs log tree commit diff
path: root/pkgs/games
diff options
context:
space:
mode:
authorFelix Bühler <Stunkymonkey@users.noreply.github.com>2024-04-08 20:21:11 +0200
committerGitHub <noreply@github.com>2024-04-08 20:21:11 +0200
commite5c04366192c897bd6a9fddc00ccff63ad3966f3 (patch)
treed43227bf6f8351fa4aa8e03a0b18bfc6081a93ad /pkgs/games
parentd054e50a3fd987c07e1f99a4c87ae1f69163596c (diff)
parentb390d53ee8cd1eb9cf6ee37af67ca80a9f1de2f5 (diff)
Merge pull request #286107 from Stunkymonkey/yquake2-desktop-item
yquake2*: add desktop item
Diffstat (limited to 'pkgs/games')
-rw-r--r--pkgs/games/quake2/yquake2/default.nix18
-rw-r--r--pkgs/games/quake2/yquake2/games.nix2
-rw-r--r--pkgs/games/quake2/yquake2/wrapper.nix31
3 files changed, 43 insertions, 8 deletions
diff --git a/pkgs/games/quake2/yquake2/default.nix b/pkgs/games/quake2/yquake2/default.nix
index 9a3597937d8ca..b37c4f5e6a0e2 100644
--- a/pkgs/games/quake2/yquake2/default.nix
+++ b/pkgs/games/quake2/yquake2/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper
+{ stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper, copyDesktopItems, makeDesktopItem
 , SDL2, libGL, curl
 , openalSupport ? true, openal
 , Cocoa, OpenAL
@@ -9,7 +9,7 @@ let
 
   games = import ./games.nix { inherit stdenv lib fetchFromGitHub; };
 
-  wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2; };
+  wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2 copyDesktopItems makeDesktopItem; };
 
   yquake2 = stdenv.mkDerivation rec {
     pname = "yquake2";
@@ -40,9 +40,12 @@ let
       "WITH_SYSTEMDIR=$\{out}/share/games/quake2"
     ];
 
+    nativeBuildInputs = [ copyDesktopItems ];
+
     enableParallelBuilding = true;
 
     installPhase = ''
+      runHook preInstall
       # Yamagi Quake II expects all binaries (executables and libs) to be in the
       # same directory.
       mkdir -p $out/bin $out/lib/yquake2 $out/share/games/quake2/baseq2
@@ -50,8 +53,19 @@ let
       ln -s $out/lib/yquake2/quake2 $out/bin/yquake2
       ln -s $out/lib/yquake2/q2ded $out/bin/yq2ded
       cp $src/stuff/yq2.cfg $out/share/games/quake2/baseq2
+      install -Dm644 stuff/icon/Quake2.png $out/share/pixmaps/yamagi-quake2.png;
+      runHook postInstall
     '';
 
+    desktopItems = [ (makeDesktopItem {
+      name = "yquake2";
+      exec = "yquake2";
+      icon = "yamagi-quake2";
+      desktopName = "yquake2";
+      comment = "Yamagi Quake II client";
+      categories = [ "Game" "Shooter" ];
+    })];
+
     meta = with lib; {
       description = "Yamagi Quake II client";
       homepage = "https://www.yamagi.org/quake2/";
diff --git a/pkgs/games/quake2/yquake2/games.nix b/pkgs/games/quake2/yquake2/games.nix
index c78689971a63e..aca5ffb5e3f55 100644
--- a/pkgs/games/quake2/yquake2/games.nix
+++ b/pkgs/games/quake2/yquake2/games.nix
@@ -38,8 +38,10 @@ let
     };
 
     installPhase = ''
+      runHook preInstall
       mkdir -p $out/lib/yquake2/${id}
       cp release/* $out/lib/yquake2/${id}
+      runHook postInstall
     '';
 
     meta = with lib; {
diff --git a/pkgs/games/quake2/yquake2/wrapper.nix b/pkgs/games/quake2/yquake2/wrapper.nix
index 4850dff99dcdc..fafc1d3eaebd8 100644
--- a/pkgs/games/quake2/yquake2/wrapper.nix
+++ b/pkgs/games/quake2/yquake2/wrapper.nix
@@ -1,4 +1,4 @@
-{ stdenv, lib, buildEnv, makeWrapper, yquake2 }:
+{ stdenv, lib, buildEnv, makeWrapper, yquake2, copyDesktopItems, makeDesktopItem }:
 
 { games
 , name
@@ -11,19 +11,38 @@ let
     paths = [ yquake2 ] ++ games;
   };
 
-in stdenv.mkDerivation {
-  name = "${name}-${lib.getVersion yquake2}";
+in
+stdenv.mkDerivation {
+  pname = name;
+  version = lib.getVersion yquake2;
 
-  nativeBuildInputs = [ makeWrapper ];
+  nativeBuildInputs = [ makeWrapper copyDesktopItems ];
 
-  buildCommand = ''
+  dontUnpack = true;
+
+  installPhase = ''
+    runHook preInstall
     mkdir -p $out/bin
   '' + lib.concatMapStringsSep "\n" (game: ''
     makeWrapper ${env}/bin/yquake2 $out/bin/yquake2-${game.title} \
       --add-flags "+set game ${game.id}"
     makeWrapper ${env}/bin/yq2ded $out/bin/yq2ded-${game.title} \
       --add-flags "+set game ${game.id}"
-  '') games;
+  '') games + ''
+    install -Dm644 ${yquake2}/share/pixmaps/yamagi-quake2.png $out/share/pixmaps/yamagi-quake2.png;
+    runHook postInstall
+  '';
+
+  desktopItems = map
+    (game: makeDesktopItem ({
+      name = game.id;
+      exec = game.title;
+      icon = "yamagi-quake2";
+      desktopName = game.id;
+      comment = game.description;
+      categories = [ "Game" "Shooter" ];
+    }))
+    games;
 
   meta = {
     inherit description;