7e47f3658e
GitOrigin-RevId: 1925c603f17fc89f4c8f6bf6f631a802ad85d784
160 lines
3 KiB
Nix
160 lines
3 KiB
Nix
{
|
||
lib,
|
||
stdenv,
|
||
fetchurl,
|
||
fetchpatch2,
|
||
alsa-lib,
|
||
boost,
|
||
curl,
|
||
ffmpeg_6,
|
||
icoutils,
|
||
libGLU,
|
||
libmad,
|
||
libogg,
|
||
libpng,
|
||
libsndfile,
|
||
libvorbis,
|
||
lua,
|
||
makeDesktopItem,
|
||
makeWrapper,
|
||
miniupnpc,
|
||
openal,
|
||
pkg-config,
|
||
SDL2,
|
||
SDL2_image,
|
||
SDL2_net,
|
||
SDL2_ttf,
|
||
speex,
|
||
unzip,
|
||
zlib,
|
||
zziplib,
|
||
testers,
|
||
}:
|
||
|
||
stdenv.mkDerivation (finalAttrs: {
|
||
outputs = [
|
||
"out"
|
||
"icons"
|
||
];
|
||
pname = "alephone";
|
||
version = "1.10";
|
||
|
||
src = fetchurl {
|
||
url =
|
||
let
|
||
date = "20240822";
|
||
in
|
||
"https://github.com/Aleph-One-Marathon/alephone/releases/download/release-${date}/AlephOne-${date}.tar.bz2";
|
||
hash = "sha256-Es2Uo0RIJHYeO/60XiHVLJe9Eoan8DREtAI2KGjuLaM=";
|
||
};
|
||
|
||
nativeBuildInputs = [
|
||
pkg-config
|
||
icoutils
|
||
];
|
||
|
||
buildInputs = [
|
||
alsa-lib
|
||
boost
|
||
curl
|
||
ffmpeg_6
|
||
libGLU
|
||
libmad
|
||
libogg
|
||
libpng
|
||
libsndfile
|
||
libvorbis
|
||
lua
|
||
miniupnpc
|
||
openal
|
||
SDL2
|
||
SDL2_image
|
||
SDL2_net
|
||
SDL2_ttf
|
||
speex
|
||
zlib
|
||
zziplib
|
||
];
|
||
|
||
configureFlags = [ "--with-boost-libdir=${boost.out}/lib" ];
|
||
makeFlags = [ "AR:=$(AR)" ];
|
||
|
||
enableParallelBuilding = true;
|
||
|
||
postInstall = ''
|
||
mkdir $icons
|
||
icotool -x -i 5 -o $icons Resources/Windows/*.ico
|
||
pushd $icons
|
||
for x in *_5_48x48x32.png; do
|
||
mv $x ''${x%_5_48x48x32.png}.png
|
||
done
|
||
popd
|
||
'';
|
||
|
||
passthru.tests.version =
|
||
# test that the version is correct
|
||
testers.testVersion { package = finalAttrs.finalPackage; };
|
||
|
||
meta = {
|
||
description = "Aleph One is the open source continuation of Bungie’s Marathon 2 game engine";
|
||
mainProgram = "alephone";
|
||
homepage = "https://alephone.lhowon.org/";
|
||
license = [ lib.licenses.gpl3 ];
|
||
maintainers = with lib.maintainers; [ ehmry ];
|
||
platforms = lib.platforms.linux;
|
||
};
|
||
|
||
passthru.makeWrapper =
|
||
{
|
||
pname,
|
||
desktopName,
|
||
version,
|
||
zip,
|
||
meta,
|
||
icon ? finalAttrs.finalPackage.icons + "/alephone.png",
|
||
...
|
||
}@extraArgs:
|
||
stdenv.mkDerivation (
|
||
{
|
||
inherit pname version;
|
||
|
||
desktopItem = makeDesktopItem {
|
||
name = desktopName;
|
||
exec = pname;
|
||
genericName = pname;
|
||
categories = [ "Game" ];
|
||
comment = meta.description;
|
||
inherit desktopName icon;
|
||
};
|
||
|
||
src = zip;
|
||
|
||
nativeBuildInputs = [
|
||
makeWrapper
|
||
unzip
|
||
];
|
||
|
||
dontConfigure = true;
|
||
dontBuild = true;
|
||
|
||
installPhase = ''
|
||
mkdir -p $out/bin $out/data/$pname $out/share/applications
|
||
cp -a * $out/data/$pname
|
||
cp $desktopItem/share/applications/* $out/share/applications
|
||
makeWrapper ${finalAttrs.finalPackage}/bin/alephone $out/bin/$pname \
|
||
--add-flags $out/data/$pname
|
||
'';
|
||
}
|
||
// extraArgs
|
||
// {
|
||
meta =
|
||
finalAttrs.finalPackage.meta
|
||
// {
|
||
license = lib.licenses.free;
|
||
mainProgram = pname;
|
||
hydraPlatforms = [ ];
|
||
}
|
||
// meta;
|
||
}
|
||
);
|
||
})
|