diff options
author | Tuomas Tynkkynen <tuomas@tuxera.com> | 2018-03-13 23:04:18 +0200 |
---|---|---|
committer | Tuomas Tynkkynen <tuomas@tuxera.com> | 2018-03-13 23:04:18 +0200 |
commit | 2fec9c6e297e02718db6be53d645524f0052a7bc (patch) | |
tree | 93e73a98dfaa40b290a6e15cf7f61054e5dc59e0 /pkgs/misc/emulators/kega-fusion/default.nix | |
parent | e9961bf9a9f7410c2891c7e86c21ed6388c70d78 (diff) | |
parent | ba816ee08721d0c2f5f7e6652091bed085ac7687 (diff) | |
download | nixlib-2fec9c6e297e02718db6be53d645524f0052a7bc.tar nixlib-2fec9c6e297e02718db6be53d645524f0052a7bc.tar.gz nixlib-2fec9c6e297e02718db6be53d645524f0052a7bc.tar.bz2 nixlib-2fec9c6e297e02718db6be53d645524f0052a7bc.tar.lz nixlib-2fec9c6e297e02718db6be53d645524f0052a7bc.tar.xz nixlib-2fec9c6e297e02718db6be53d645524f0052a7bc.tar.zst nixlib-2fec9c6e297e02718db6be53d645524f0052a7bc.zip |
Merge remote-tracking branch 'upstream/master' into staging
Conflicts: pkgs/development/tools/build-managers/conan/default.nix
Diffstat (limited to 'pkgs/misc/emulators/kega-fusion/default.nix')
-rw-r--r-- | pkgs/misc/emulators/kega-fusion/default.nix | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/pkgs/misc/emulators/kega-fusion/default.nix b/pkgs/misc/emulators/kega-fusion/default.nix new file mode 100644 index 000000000000..bdc372c7ca23 --- /dev/null +++ b/pkgs/misc/emulators/kega-fusion/default.nix @@ -0,0 +1,78 @@ +{ stdenv, lib, writeText, fetchurl, upx, libGLU, glib, gtk2, alsaLib, libSM, libX11, gdk_pixbuf, pango, libXinerama, mpg123 }: + +let + libPath = lib.makeLibraryPath [ stdenv.cc.cc libGLU glib gtk2 alsaLib libSM libX11 gdk_pixbuf pango libXinerama ]; + +in stdenv.mkDerivation rec { + name = "kega-fusion-${version}"; + version = "3.63x"; + + src = fetchurl { + url = "http://www.carpeludum.com/download/Fusion363x.tar.gz"; + sha256 = "14s6czy20h5khyy7q95hd7k77v17ssafv9l6lafkiysvj2nmw94g"; + }; + + plugins = fetchurl { + url = "http://www.carpeludum.com/download/PluginsLinux.tar.gz"; + sha256 = "0d623cvh6n5ijj3wb64g93mxx2xbichsn7hj7brbb0ndw5cs70qj"; + }; + + runner = writeText "kega-fusion" '' + #!${stdenv.shell} -ex + + kega_libdir="@out@/lib/kega-fusion" + kega_localdir="$HOME/.Kega Fusion" + + # create local plugins directory if not present + mkdir -p "$kega_localdir/Plugins" + + # create links for every included plugin + if [ $(ls -1A $kega_libdir/plugins | wc -l) -gt 0 ]; then + for i in $kega_libdir/plugins/*; do + if [ ! -e "$kega_localdir/Plugins/$(basename "$i")" ]; then + ln -sf "$i" "$kega_localdir/Plugins/" + fi + done + fi + + # copy configuration file if not present + if ! [ -f "$kega_localdir/Fusion.ini" ]; then + cat > "$kega_localdir/Fusion.ini" <<EOF + ALSADeviceName=default + libmpg123path=${lib.getLib mpg123}/lib/libmpg123.so.0 + EOF + else + sed -i 's,^\(libmpg123path=\).*,\1${lib.getLib mpg123}/lib/libmpg123.so.0,' "$kega_localdir/Fusion.ini" + fi + + # here we go! + exec "$kega_libdir/Fusion" "$@" + ''; + + dontStrip = true; + dontPatchELF = true; + + nativeBuildInputs = [ upx ]; + + installPhase = '' + upx -d Fusion + install -Dm755 Fusion "$out/lib/kega-fusion/Fusion" + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" --set-rpath "${libPath}" "$out/lib/kega-fusion/Fusion" + + tar -xaf $plugins + mkdir -p "$out/lib/kega-fusion/plugins" + cp -r Plugins/*.rpi "$out/lib/kega-fusion/plugins" + + mkdir -p "$out/bin" + substitute "$runner" "$out/bin/kega-fusion" --subst-var out + chmod +x "$out/bin/kega-fusion" + ''; + + meta = with stdenv.lib; { + description = "Sega SG1000, SC3000, SF7000, Master System, Game Gear, Genesis/Megadrive, SVP, Pico, SegaCD/MegaCD and 32X emulator"; + homepage = http://www.carpeludum.com/kega-fusion/; + maintainers = with maintainers; [ abbradar ]; + license = licenses.unfreeRedistributable; + platforms = [ "i686-linux" ]; + }; +} |