summary refs log tree commit diff
path: root/pkgs/misc/emulators/kega-fusion/default.nix
diff options
context:
space:
mode:
authorTuomas Tynkkynen <tuomas@tuxera.com>2018-03-13 23:04:18 +0200
committerTuomas Tynkkynen <tuomas@tuxera.com>2018-03-13 23:04:18 +0200
commit2fec9c6e297e02718db6be53d645524f0052a7bc (patch)
tree93e73a98dfaa40b290a6e15cf7f61054e5dc59e0 /pkgs/misc/emulators/kega-fusion/default.nix
parente9961bf9a9f7410c2891c7e86c21ed6388c70d78 (diff)
parentba816ee08721d0c2f5f7e6652091bed085ac7687 (diff)
downloadnixlib-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.nix78
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" ];
+  };
+}