snes9x: init at 1.61
This is done by modifying the current `snes9x-gtk` derivation, including a new `withGtk` option that when enabled will build the `snes9x-gtk`, but when disabled will build `snes9x` instead. `snes9x` has less dependencies than `snes9x-gtk`, having only X11 as a major dependency and a minor one in ALSA. However, the only audio backend supported is ALSA, so audio is only available on Linux. Still, this has less dependencies than the GTK version, so it should be useful as a minimal version for cross-compilation cases or when porting to new devices. This also builds in macOS, however as I said before, shouldn't have any sound there.
This commit is contained in:
parent
205157b077
commit
62905f6706
3 changed files with 125 additions and 38 deletions
|
@ -1,37 +0,0 @@
|
|||
{ lib, stdenv, fetchFromGitHub, meson, ninja, pkg-config, wrapGAppsHook, alsa-lib
|
||||
, SDL2, zlib, gtkmm3, libXv, libepoxy, minizip, pulseaudio, portaudio }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "snes9x-gtk";
|
||||
version = "1.61";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "snes9xgit";
|
||||
repo = "snes9x";
|
||||
rev = version;
|
||||
fetchSubmodules = true;
|
||||
sha256 = "1kay7aj30x0vn8rkylspdycydrzsc0aidjbs0dd238hr5hid723b";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ meson ninja pkg-config wrapGAppsHook ];
|
||||
buildInputs = [ alsa-lib SDL2 zlib gtkmm3 libXv libepoxy minizip pulseaudio portaudio ];
|
||||
|
||||
preConfigure = "cd gtk";
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://www.snes9x.com";
|
||||
description = "Super Nintendo Entertainment System (SNES) emulator";
|
||||
|
||||
longDescription = ''
|
||||
Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES)
|
||||
emulator. It basically allows you to play most games designed for the SNES
|
||||
and Super Famicom Nintendo game systems on your PC or Workstation; which
|
||||
includes some real gems that were only ever released in Japan.
|
||||
'';
|
||||
|
||||
# see https://github.com/snes9xgit/snes9x/blob/master/LICENSE for exact details
|
||||
license = licenses.unfreeRedistributable;
|
||||
maintainers = with maintainers; [ qknight xfix ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
120
pkgs/applications/emulators/snes9x/default.nix
Normal file
120
pkgs/applications/emulators/snes9x/default.nix
Normal file
|
@ -0,0 +1,120 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, alsa-lib
|
||||
, fetchFromGitHub
|
||||
, gtkmm3
|
||||
, libepoxy
|
||||
, libpng
|
||||
, libX11
|
||||
, libXv
|
||||
, libXext
|
||||
, libXinerama
|
||||
, meson
|
||||
, minizip
|
||||
, ninja
|
||||
, pkg-config
|
||||
, portaudio
|
||||
, pulseaudio
|
||||
, SDL2
|
||||
, wrapGAppsHook
|
||||
, zlib
|
||||
, withGtk ? false
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname =
|
||||
if withGtk then
|
||||
"snes9x-gtk"
|
||||
else
|
||||
"snes9x";
|
||||
version = "1.61";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "snes9xgit";
|
||||
repo = "snes9x";
|
||||
rev = version;
|
||||
fetchSubmodules = true;
|
||||
sha256 = "1kay7aj30x0vn8rkylspdycydrzsc0aidjbs0dd238hr5hid723b";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
]
|
||||
++ lib.optionals withGtk [
|
||||
meson
|
||||
ninja
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libX11
|
||||
libXext
|
||||
libXv
|
||||
minizip
|
||||
zlib
|
||||
]
|
||||
# on non-Linux platforms this will build without sound support on X11 build
|
||||
++ lib.optionals stdenv.isLinux [
|
||||
alsa-lib
|
||||
pulseaudio
|
||||
]
|
||||
++ lib.optionals (!withGtk) [
|
||||
libpng
|
||||
libXinerama
|
||||
]
|
||||
++ lib.optionals withGtk [
|
||||
gtkmm3
|
||||
libepoxy
|
||||
portaudio
|
||||
SDL2
|
||||
];
|
||||
|
||||
configureFlags =
|
||||
lib.optional stdenv.hostPlatform.sse4_1Support "--enable-sse41"
|
||||
++ lib.optional stdenv.hostPlatform.avx2Support "--enable-avx2"
|
||||
++ lib.optional stdenv.hostPlatform.isAarch64 "--enable-neon";
|
||||
|
||||
installPhase = lib.optionalString (!withGtk) ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm755 snes9x -t "$out/bin/"
|
||||
install -Dm644 snes9x.conf.default -t "$out/share/doc/${pname}/"
|
||||
install -Dm644 ../docs/{control-inputs,controls,snapshots}.txt -t \
|
||||
"$out/share/doc/${pname}/"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
preConfigure =
|
||||
if withGtk then
|
||||
"cd gtk"
|
||||
else
|
||||
"cd unix";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with lib;
|
||||
let
|
||||
interface = if withGtk then "GTK" else "X11";
|
||||
in
|
||||
{
|
||||
homepage = "https://www.snes9x.com";
|
||||
description = "Super Nintendo Entertainment System (SNES) emulator, ${interface} version";
|
||||
|
||||
longDescription = ''
|
||||
Snes9x is a portable, freeware Super Nintendo Entertainment System (SNES)
|
||||
emulator. It basically allows you to play most games designed for the SNES
|
||||
and Super Famicom Nintendo game systems on your PC or Workstation; which
|
||||
includes some real gems that were only ever released in Japan.
|
||||
|
||||
Version build with ${interface} interface.
|
||||
'';
|
||||
|
||||
license = licenses.unfreeRedistributable // {
|
||||
url = "https://github.com/snes9xgit/snes9x/blob/${version}/LICENSE";
|
||||
};
|
||||
maintainers = with maintainers; [ qknight xfix thiagokokada ];
|
||||
platforms = platforms.unix;
|
||||
broken = (withGtk && stdenv.isDarwin);
|
||||
};
|
||||
}
|
|
@ -1338,7 +1338,11 @@ with pkgs;
|
|||
|
||||
simplenes = callPackage ../applications/emulators/simplenes { };
|
||||
|
||||
snes9x-gtk = callPackage ../applications/emulators/snes9x-gtk { };
|
||||
snes9x = callPackage ../applications/emulators/snes9x { };
|
||||
|
||||
snes9x-gtk = callPackage ../applications/emulators/snes9x {
|
||||
withGtk = true;
|
||||
};
|
||||
|
||||
stella = callPackage ../applications/emulators/stella { };
|
||||
|
||||
|
|
Loading…
Reference in a new issue