155 lines
3 KiB
Nix
155 lines
3 KiB
Nix
|
{
|
||
|
lib,
|
||
|
SDL2,
|
||
|
SDL2_image,
|
||
|
fetchFromGitHub,
|
||
|
gettext,
|
||
|
glib,
|
||
|
gtk3,
|
||
|
libGLU,
|
||
|
libdrm,
|
||
|
libepoxy,
|
||
|
libpcap,
|
||
|
libsamplerate,
|
||
|
libslirp,
|
||
|
mesa,
|
||
|
meson,
|
||
|
ninja,
|
||
|
openssl,
|
||
|
perl,
|
||
|
pkg-config,
|
||
|
python3Packages,
|
||
|
stdenv,
|
||
|
vte,
|
||
|
which,
|
||
|
wrapGAppsHook3,
|
||
|
}:
|
||
|
|
||
|
stdenv.mkDerivation (finalAttrs: {
|
||
|
pname = "xemu";
|
||
|
version = "0.7.132";
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "xemu-project";
|
||
|
repo = "xemu";
|
||
|
rev = "v${finalAttrs.version}";
|
||
|
fetchSubmodules = true;
|
||
|
hash = "sha256-C9g2IXuI2eQjt04viat0ESOTeKCvQ3CUdjLpZ92NFDs=";
|
||
|
};
|
||
|
|
||
|
nativeBuildInputs =
|
||
|
[
|
||
|
SDL2
|
||
|
meson
|
||
|
ninja
|
||
|
perl
|
||
|
pkg-config
|
||
|
which
|
||
|
wrapGAppsHook3
|
||
|
]
|
||
|
++ (with python3Packages; [
|
||
|
python
|
||
|
pyyaml
|
||
|
]);
|
||
|
|
||
|
buildInputs = [
|
||
|
SDL2
|
||
|
SDL2_image
|
||
|
gettext
|
||
|
glib
|
||
|
gtk3
|
||
|
libGLU
|
||
|
libdrm
|
||
|
libepoxy
|
||
|
libpcap
|
||
|
libsamplerate
|
||
|
libslirp
|
||
|
mesa
|
||
|
openssl
|
||
|
vte
|
||
|
];
|
||
|
|
||
|
configureFlags = [
|
||
|
"--disable-strip"
|
||
|
"--meson=meson"
|
||
|
"--target-list=i386-softmmu"
|
||
|
"--disable-werror"
|
||
|
];
|
||
|
|
||
|
buildFlags = [ "qemu-system-i386" ];
|
||
|
|
||
|
separateDebugInfo = true;
|
||
|
|
||
|
dontUseMesonConfigure = true;
|
||
|
|
||
|
setOutputFlags = false;
|
||
|
|
||
|
strictDeps = true;
|
||
|
|
||
|
postPatch = ''
|
||
|
patchShebangs .
|
||
|
substituteInPlace ./scripts/xemu-version.sh \
|
||
|
--replace 'date -u' "date -d @$SOURCE_DATE_EPOCH '+%Y-%m-%d %H:%M:%S'"
|
||
|
'';
|
||
|
|
||
|
preConfigure =
|
||
|
''
|
||
|
configureFlagsArray+=("--extra-cflags=-DXBOX=1 -Wno-error=redundant-decls")
|
||
|
''
|
||
|
+
|
||
|
# When the data below can't be obtained through git, the build process tries
|
||
|
# to run `XEMU_COMMIT=$(cat XEMU_COMMIT)` (and similar)
|
||
|
''
|
||
|
echo '${finalAttrs.version}' > XEMU_VERSION
|
||
|
'';
|
||
|
|
||
|
preBuild = ''
|
||
|
cd build
|
||
|
substituteInPlace ./build.ninja --replace /usr/bin/env $(which env)
|
||
|
'';
|
||
|
|
||
|
installPhase =
|
||
|
let
|
||
|
installIcon = resolution: ''
|
||
|
install -Dm644 -T ../ui/icons/xemu_${resolution}.png \
|
||
|
$out/share/icons/hicolor/${resolution}/apps/xemu.png
|
||
|
'';
|
||
|
in
|
||
|
''
|
||
|
runHook preInstall
|
||
|
|
||
|
install -Dm755 -T qemu-system-i386 $out/bin/xemu
|
||
|
''
|
||
|
+ (lib.concatMapStringsSep "\n" installIcon [
|
||
|
"16x16"
|
||
|
"24x24"
|
||
|
"32x32"
|
||
|
"48x48"
|
||
|
"128x128"
|
||
|
"256x256"
|
||
|
"512x512"
|
||
|
])
|
||
|
+ "\n"
|
||
|
+ ''
|
||
|
install -Dm644 -T ../ui/xemu.desktop $out/share/applications/xemu.desktop
|
||
|
|
||
|
runHook postInstall
|
||
|
'';
|
||
|
|
||
|
meta = {
|
||
|
homepage = "https://xemu.app/";
|
||
|
description = "Original Xbox emulator";
|
||
|
longDescription = ''
|
||
|
A free and open-source application that emulates the original Microsoft
|
||
|
Xbox game console, enabling people to play their original Xbox games on
|
||
|
Windows, macOS, and Linux systems.
|
||
|
'';
|
||
|
changelog = "https://github.com/xemu-project/xemu/releases/tag/v${finalAttrs.version}";
|
||
|
license = lib.licenses.gpl2Plus;
|
||
|
mainProgram = "xemu";
|
||
|
maintainers = with lib.maintainers; [ AndersonTorres ];
|
||
|
platforms = lib.platforms.linux;
|
||
|
};
|
||
|
})
|
||
|
# TODO: investigate failure when using __structuredAttrs
|