tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
yquake2: add desktop item
Felix Buehler
2 years ago
b390d53e
2de2b929
+43
-8
3 changed files
expand all
collapse all
unified
split
pkgs
games
quake2
yquake2
default.nix
games.nix
wrapper.nix
+16
-2
pkgs/games/quake2/yquake2/default.nix
···
1
1
-
{ stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper
1
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
12
-
wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2; };
12
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
43
+
nativeBuildInputs = [ copyDesktopItems ];
44
44
+
43
45
enableParallelBuilding = true;
44
46
45
47
installPhase = ''
48
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
56
+
install -Dm644 stuff/icon/Quake2.png $out/share/pixmaps/yamagi-quake2.png;
57
57
+
runHook postInstall
53
58
'';
59
59
+
60
60
+
desktopItems = [ (makeDesktopItem {
61
61
+
name = "yquake2";
62
62
+
exec = "yquake2";
63
63
+
icon = "yamagi-quake2";
64
64
+
desktopName = "yquake2";
65
65
+
comment = "Yamagi Quake II client";
66
66
+
categories = [ "Game" "Shooter" ];
67
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
41
+
runHook preInstall
41
42
mkdir -p $out/lib/yquake2/${id}
42
43
cp release/* $out/lib/yquake2/${id}
44
44
+
runHook postInstall
43
45
'';
44
46
45
47
meta = with lib; {
+25
-6
pkgs/games/quake2/yquake2/wrapper.nix
···
1
1
-
{ stdenv, lib, buildEnv, makeWrapper, yquake2 }:
1
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
14
-
in stdenv.mkDerivation {
15
15
-
name = "${name}-${lib.getVersion yquake2}";
14
14
+
in
15
15
+
stdenv.mkDerivation {
16
16
+
pname = name;
17
17
+
version = lib.getVersion yquake2;
16
18
17
17
-
nativeBuildInputs = [ makeWrapper ];
19
19
+
nativeBuildInputs = [ makeWrapper copyDesktopItems ];
18
20
19
19
-
buildCommand = ''
21
21
+
dontUnpack = true;
22
22
+
23
23
+
installPhase = ''
24
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
26
-
'') games;
31
31
+
'') games + ''
32
32
+
install -Dm644 ${yquake2}/share/pixmaps/yamagi-quake2.png $out/share/pixmaps/yamagi-quake2.png;
33
33
+
runHook postInstall
34
34
+
'';
35
35
+
36
36
+
desktopItems = map
37
37
+
(game: makeDesktopItem ({
38
38
+
name = game.id;
39
39
+
exec = game.title;
40
40
+
icon = "yamagi-quake2";
41
41
+
desktopName = game.id;
42
42
+
comment = game.description;
43
43
+
categories = [ "Game" "Shooter" ];
44
44
+
}))
45
45
+
games;
27
46
28
47
meta = {
29
48
inherit description;