Merge pull request #288072 from lucasew/86box-roms

_86Box: bring roms together
This commit is contained in:
Doron Behar 2024-03-27 12:57:09 +02:00 committed by GitHub
commit 285d456c6d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 28 additions and 14 deletions

View File

@ -6,16 +6,17 @@
, enableNewDynarec ? enableDynarec && stdenv.hostPlatform.isAarch
, enableVncRenderer ? false
, unfreeEnableDiscord ? false
, unfreeEnableRoms ? false
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "86Box";
version = "4.1";
src = fetchFromGitHub {
owner = "86Box";
repo = "86Box";
rev = "v${version}";
rev = "v${finalAttrs.version}";
hash = "sha256-JYOJFXiUTLRs6AEMYNx88PwcVw13ChQzV1ZE5OtX6Ds=";
};
@ -48,38 +49,46 @@ stdenv.mkDerivation rec {
++ lib.optional (!enableDynarec) "-DDYNAREC=OFF"
++ lib.optional (!unfreeEnableDiscord) "-DDISCORD=OFF";
postInstall = lib.optional stdenv.isLinux ''
postInstall = lib.optionalString stdenv.isLinux ''
install -Dm644 -t $out/share/applications $src/src/unix/assets/net.86box.86Box.desktop
for size in 48 64 72 96 128 192 256 512; do
install -Dm644 -t $out/share/icons/hicolor/"$size"x"$size"/apps \
$src/src/unix/assets/"$size"x"$size"/net.86box.86Box.png
done;
''
+ lib.optionalString unfreeEnableRoms ''
mkdir -p $out/share/86Box
ln -s ${finalAttrs.passthru.roms} $out/share/86Box/roms
'';
passthru = {
roms = fetchFromGitHub {
owner = "86Box";
repo = "roms";
rev = "v${finalAttrs.version}";
hash = "sha256-1HtoizO0QIGNjQTW0clzRp40h1ulw55+iTYz12UJSms=";
};
};
# Some libraries are loaded dynamically, but QLibrary doesn't seem to search
# the runpath, so use a wrapper instead.
postFixup = let
preFixup = let
libPath = lib.makeLibraryPath ([
libpcap
] ++ lib.optional unfreeEnableDiscord discord-gamesdk);
libPathVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
in
''
wrapProgram $out/bin/86Box \
"''${qtWrapperArgs[@]}" \
--prefix ${libPathVar} : "${libPath}"
in ''
makeWrapperArgs+=(--prefix ${libPathVar} : "${libPath}")
'';
# Do not wrap twice.
dontWrapQtApps = true;
meta = with lib; {
description = "Emulator of x86-based machines based on PCem.";
mainProgram = "86Box";
homepage = "https://86box.net/";
license = with licenses; [ gpl2Only ] ++ optional unfreeEnableDiscord unfree;
license = with licenses; [ gpl2Only ]
++ optional (unfreeEnableDiscord || unfreeEnableRoms) unfree;
maintainers = [ maintainers.jchw ];
platforms = platforms.linux;
};
}
})

View File

@ -2621,6 +2621,11 @@ with pkgs;
_86Box = callPackage ../applications/emulators/86box { };
_86Box-with-roms = _86Box.override {
unfreeEnableRoms = true;
unfreeEnableDiscord = true;
};
attract-mode = callPackage ../applications/emulators/attract-mode { };
basiliskii = callPackage ../applications/emulators/basiliskii { };