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
-
{ stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper
2
, SDL2, libGL, curl
3
, openalSupport ? true, openal
4
, Cocoa, OpenAL
···
9
10
games = import ./games.nix { inherit stdenv lib fetchFromGitHub; };
11
12
-
wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2; };
13
14
yquake2 = stdenv.mkDerivation rec {
15
pname = "yquake2";
···
40
"WITH_SYSTEMDIR=$\{out}/share/games/quake2"
41
];
42
0
0
43
enableParallelBuilding = true;
44
45
installPhase = ''
0
46
# Yamagi Quake II expects all binaries (executables and libs) to be in the
47
# same directory.
48
mkdir -p $out/bin $out/lib/yquake2 $out/share/games/quake2/baseq2
···
50
ln -s $out/lib/yquake2/quake2 $out/bin/yquake2
51
ln -s $out/lib/yquake2/q2ded $out/bin/yq2ded
52
cp $src/stuff/yq2.cfg $out/share/games/quake2/baseq2
0
0
53
'';
0
0
0
0
0
0
0
0
0
54
55
meta = with lib; {
56
description = "Yamagi Quake II client";
···
1
+
{ stdenv, lib, fetchFromGitHub, buildEnv, makeWrapper, copyDesktopItems, makeDesktopItem
2
, SDL2, libGL, curl
3
, openalSupport ? true, openal
4
, Cocoa, OpenAL
···
9
10
games = import ./games.nix { inherit stdenv lib fetchFromGitHub; };
11
12
+
wrapper = import ./wrapper.nix { inherit stdenv lib buildEnv makeWrapper yquake2 copyDesktopItems makeDesktopItem; };
13
14
yquake2 = stdenv.mkDerivation rec {
15
pname = "yquake2";
···
40
"WITH_SYSTEMDIR=$\{out}/share/games/quake2"
41
];
42
43
+
nativeBuildInputs = [ copyDesktopItems ];
44
+
45
enableParallelBuilding = true;
46
47
installPhase = ''
48
+
runHook preInstall
49
# Yamagi Quake II expects all binaries (executables and libs) to be in the
50
# same directory.
51
mkdir -p $out/bin $out/lib/yquake2 $out/share/games/quake2/baseq2
···
53
ln -s $out/lib/yquake2/quake2 $out/bin/yquake2
54
ln -s $out/lib/yquake2/q2ded $out/bin/yq2ded
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
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
+
})];
68
69
meta = with lib; {
70
description = "Yamagi Quake II client";
+2
pkgs/games/quake2/yquake2/games.nix
···
38
};
39
40
installPhase = ''
0
41
mkdir -p $out/lib/yquake2/${id}
42
cp release/* $out/lib/yquake2/${id}
0
43
'';
44
45
meta = with lib; {
···
38
};
39
40
installPhase = ''
41
+
runHook preInstall
42
mkdir -p $out/lib/yquake2/${id}
43
cp release/* $out/lib/yquake2/${id}
44
+
runHook postInstall
45
'';
46
47
meta = with lib; {
+25
-6
pkgs/games/quake2/yquake2/wrapper.nix
···
1
-
{ stdenv, lib, buildEnv, makeWrapper, yquake2 }:
2
3
{ games
4
, name
···
11
paths = [ yquake2 ] ++ games;
12
};
13
14
-
in stdenv.mkDerivation {
15
-
name = "${name}-${lib.getVersion yquake2}";
0
0
16
17
-
nativeBuildInputs = [ makeWrapper ];
18
19
-
buildCommand = ''
0
0
0
20
mkdir -p $out/bin
21
'' + lib.concatMapStringsSep "\n" (game: ''
22
makeWrapper ${env}/bin/yquake2 $out/bin/yquake2-${game.title} \
23
--add-flags "+set game ${game.id}"
24
makeWrapper ${env}/bin/yq2ded $out/bin/yq2ded-${game.title} \
25
--add-flags "+set game ${game.id}"
26
-
'') games;
0
0
0
0
0
0
0
0
0
0
0
0
0
0
27
28
meta = {
29
inherit description;
···
1
+
{ stdenv, lib, buildEnv, makeWrapper, yquake2, copyDesktopItems, makeDesktopItem }:
2
3
{ games
4
, name
···
11
paths = [ yquake2 ] ++ games;
12
};
13
14
+
in
15
+
stdenv.mkDerivation {
16
+
pname = name;
17
+
version = lib.getVersion yquake2;
18
19
+
nativeBuildInputs = [ makeWrapper copyDesktopItems ];
20
21
+
dontUnpack = true;
22
+
23
+
installPhase = ''
24
+
runHook preInstall
25
mkdir -p $out/bin
26
'' + lib.concatMapStringsSep "\n" (game: ''
27
makeWrapper ${env}/bin/yquake2 $out/bin/yquake2-${game.title} \
28
--add-flags "+set game ${game.id}"
29
makeWrapper ${env}/bin/yq2ded $out/bin/yq2ded-${game.title} \
30
--add-flags "+set game ${game.id}"
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;
46
47
meta = {
48
inherit description;