push sheeet
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s

This commit is contained in:
Dark Steveneq
2025-10-09 14:15:47 +02:00
commit 646b892680
49168 changed files with 5897842 additions and 0 deletions

View File

@@ -0,0 +1,133 @@
{
stdenv,
lib,
fetchFromGitHub,
buildEnv,
makeWrapper,
copyDesktopItems,
makeDesktopItem,
SDL2,
libGL,
curl,
openalSupport ? true,
openal,
}:
let
mkFlag = b: if b then "yes" else "no";
games = import ./games.nix { inherit stdenv lib fetchFromGitHub; };
wrapper = import ./wrapper.nix {
inherit
stdenv
lib
buildEnv
makeWrapper
yquake2
copyDesktopItems
makeDesktopItem
;
};
yquake2 = stdenv.mkDerivation rec {
pname = "yquake2";
version = "8.60";
src = fetchFromGitHub {
owner = "yquake2";
repo = "yquake2";
rev = "QUAKE2_${builtins.replaceStrings [ "." ] [ "_" ] version}";
sha256 = "sha256-XD0Fnx3TZwZUvjLOpzM5oWoIQFykDuBOddQXudkiyB0=";
};
postPatch = ''
substituteInPlace src/client/curl/qcurl.c \
--replace "\"libcurl.so.3\", \"libcurl.so.4\"" "\"${curl.out}/lib/libcurl.so\", \"libcurl.so.3\", \"libcurl.so.4\""
''
+ lib.optionalString (openalSupport && !stdenv.hostPlatform.isDarwin) ''
substituteInPlace Makefile \
--replace "\"libopenal.so.1\"" "\"${openal}/lib/libopenal.so.1\""
'';
buildInputs = [
SDL2
libGL
curl
]
++ lib.optional openalSupport openal;
makeFlags = [
"WITH_OPENAL=${mkFlag openalSupport}"
"WITH_SYSTEMWIDE=yes"
"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
cp -r release/* $out/lib/yquake2
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/";
license = licenses.gpl2Plus;
platforms = platforms.unix;
maintainers = with maintainers; [ tadfisher ];
};
};
in
{
inherit yquake2;
yquake2-ctf = wrapper {
games = [ games.ctf ];
name = "yquake2-ctf";
inherit (games.ctf) description;
};
yquake2-ground-zero = wrapper {
games = [ games.ground-zero ];
name = "yquake2-ground-zero";
inherit (games.ground-zero) description;
};
yquake2-the-reckoning = wrapper {
games = [ games.the-reckoning ];
name = "yquake2-the-reckoning";
inherit (games.the-reckoning) description;
};
yquake2-all-games = wrapper {
games = lib.attrValues games;
name = "yquake2-all-games";
description = "Yamagi Quake II with all add-on games";
};
}

View File

@@ -0,0 +1,68 @@
{
stdenv,
lib,
fetchFromGitHub,
}:
let
games = {
ctf = {
id = "ctf";
version = "1.07";
description = "'Capture The Flag' for Yamagi Quake II";
sha256 = "0i9bwhjvq6yhalrsbzjambh27fdzrzgswqz3jgfn9qw6k1kjvlin";
};
ground-zero = {
id = "rogue";
version = "2.07";
description = "'Ground Zero' for Yamagi Quake II";
sha256 = "1m2r4vgfdxpsi0lkf32liwf1433mdhhmjxiicjwzqjlkncjyfcb1";
};
the-reckoning = {
id = "xatrix";
version = "2.08";
description = "'The Reckoning' for Yamagi Quake II";
sha256 = "1wp9fg1q8nly2r9hh4394r1h4dxyni3lvdy7g419cz5s8hhn5msr";
};
};
toDrv =
title: data:
stdenv.mkDerivation rec {
inherit (data)
id
version
description
sha256
;
inherit title;
pname = "yquake2-${title}";
src = fetchFromGitHub {
inherit sha256;
owner = "yquake2";
repo = data.id;
rev = "${lib.toUpper id}_${builtins.replaceStrings [ "." ] [ "_" ] version}";
};
installPhase = ''
runHook preInstall
mkdir -p $out/lib/yquake2/${id}
cp release/* $out/lib/yquake2/${id}
runHook postInstall
'';
meta = with lib; {
inherit (data) description;
homepage = "https://www.yamagi.org/quake2/";
license = licenses.unfree;
platforms = platforms.unix;
maintainers = with maintainers; [ tadfisher ];
};
};
in
lib.mapAttrs toDrv games

View File

@@ -0,0 +1,68 @@
{
stdenv,
lib,
buildEnv,
makeWrapper,
yquake2,
copyDesktopItems,
makeDesktopItem,
}:
{
games,
name,
description,
}:
let
env = buildEnv {
name = "${name}-env";
paths = [ yquake2 ] ++ games;
};
in
stdenv.mkDerivation {
pname = name;
version = lib.getVersion yquake2;
nativeBuildInputs = [
makeWrapper
copyDesktopItems
];
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
+ ''
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;
};
}