diff options
author | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
---|---|---|
committer | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
commit | c4625b175f8200f643fd6e11010932ea44c78433 (patch) | |
tree | bce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/misc/emulators | |
parent | 49f735974dd103039ddc4cb576bb76555164a9e7 (diff) | |
parent | d661aa56a8843e991261510c1bb28fdc2f6975ae (diff) |
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie
git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7
git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/misc/emulators')
98 files changed, 6749 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/atari++/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/atari++/default.nix new file mode 100644 index 000000000000..9d7a477be61d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/atari++/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, libSM, libX11, libICE, SDL, alsaLib, gcc-unwrapped, libXext }: + +stdenv.mkDerivation rec { + pname = "atari++"; + version = "1.83"; + + src = fetchurl { + url = "http://www.xl-project.com/download/${pname}_${version}.tar.gz"; + sha256 = "04fm2ic2qi4a52mi72wcaxyrpll4k8vvchx3qrik8rhg3jrxgm47"; + }; + + buildInputs = [ libSM libX11 SDL libICE alsaLib gcc-unwrapped libXext ]; + + postFixup = '' + patchelf --set-rpath ${stdenv.lib.makeLibraryPath buildInputs} "$out/bin/atari++" + ''; + + meta = with stdenv.lib; { + homepage = "http://www.xl-project.com/"; + description = "An enhanced, cycle-accurated Atari emulator"; + longDescription = '' + The Atari++ Emulator is a Unix based emulator of the Atari eight + bit computers, namely the Atari 400 and 800, the Atari 400XL, + 800XL and 130XE, and the Atari 5200 game console. The emulator + is auto-configurable and will compile on a variety of systems + (Linux, Solaris, Irix). + ''; + maintainers = [ maintainers.AndersonTorres ]; + license = licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/atari800/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/atari800/default.nix new file mode 100644 index 000000000000..6c846e2f0ab3 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/atari800/default.nix @@ -0,0 +1,43 @@ +{ stdenv, fetchFromGitHub, autoreconfHook +, unzip, zlib, SDL, readline, libGLU, libGL, libX11 }: + +with stdenv.lib; +stdenv.mkDerivation rec { + pname = "atari800"; + version = "4.2.0"; + + src = fetchFromGitHub { + owner = "atari800"; + repo = "atari800"; + rev = "ATARI800_${replaceChars ["."] ["_"] version}"; + sha256 = "15l08clqqayi9izrgsz9achan6gl4x57wqsc8mad3yn0xayzz3qy"; + }; + + nativeBuildInputs = [ autoreconfHook ]; + + buildInputs = [ unzip zlib SDL readline libGLU libGL libX11 ]; + + configureFlags = [ + "--target=default" + "--with-video=sdl" + "--with-sound=sdl" + "--with-readline" + "--with-opengl" + "--with-x" + "--enable-riodevice" + ]; + + meta = { + homepage = "https://atari800.github.io/"; + description = "An Atari 8-bit emulator"; + longDescription = '' + Atari800 is the emulator of Atari 8-bit computer systems and + 5200 game console for Unix, Linux, Amiga, MS-DOS, Atari + TT/Falcon, MS-Windows, MS WinCE, Sega Dreamcast, Android and + other systems supported by the SDL library. + ''; + maintainers = [ maintainers.AndersonTorres ]; + license = licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/attract-mode/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/attract-mode/default.nix new file mode 100644 index 000000000000..ac87190b0507 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/attract-mode/default.nix @@ -0,0 +1,33 @@ +{ expat, fetchFromGitHub, ffmpeg_3, fontconfig, freetype, libarchive, libjpeg +, libGLU, libGL, openal, pkgconfig, sfml, stdenv, zlib +}: + +stdenv.mkDerivation rec { + pname = "attract-mode"; + version = "2.6.1"; + + src = fetchFromGitHub { + owner = "mickelson"; + repo = "attract"; + rev = "v${version}"; + sha256 = "16p369j0hanm0l2fiy6h9d9pn0f3qblcy9l39all6h7rfxnhp9ii"; + }; + + nativeBuildInputs = [ pkgconfig ]; + + patchPhase = '' + sed -i "s|prefix=/usr/local|prefix=$out|" Makefile + ''; + + buildInputs = [ + expat ffmpeg_3 fontconfig freetype libarchive libjpeg libGLU libGL openal sfml zlib + ]; + + meta = with stdenv.lib; { + description = "A frontend for arcade cabinets and media PCs"; + homepage = "http://attractmode.org"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ hrdinka ]; + platforms = with platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/blastem/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/blastem/default.nix new file mode 100644 index 000000000000..f4cef93141da --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/blastem/default.nix @@ -0,0 +1,50 @@ +{ stdenv, fetchurl, fetchFromGitHub, pkgconfig, SDL2, glew, xcftools, python, pillow, makeWrapper }: + +let + vasm = + stdenv.mkDerivation { + pname = "vasm"; + version = "1.8c"; + src = fetchFromGitHub { + owner = "mbitsnbites"; + repo = "vasm"; + rev = "244f8bbbdf64ae603f9f6c09a3067943837459ec"; + sha256 = "0x4y5q7ygxfjfy2wxijkps9khsjjfb169sbda410vaw0m88wqj5p"; + }; + makeFlags = [ "CPU=m68k" "SYNTAX=mot" ]; + installPhase = '' + mkdir -p $out/bin + cp vasmm68k_mot $out/bin + ''; + }; +in +stdenv.mkDerivation { + pname = "blastem"; + version = "0.5.1"; + src = fetchurl { + url = "https://www.retrodev.com/repos/blastem/archive/3d48cb0c28be.tar.gz"; + sha256 = "07wzbmzp0y8mh59jxg81q17gqagz3psxigxh8dmzsipgg68y6a8r"; + }; + buildInputs = [ pkgconfig SDL2 glew xcftools python pillow vasm makeWrapper ]; + preBuild = '' + patchShebangs img2tiles.py + ''; + postBuild = '' + make menu.bin + ''; + installPhase = '' + mkdir -p $out/bin $out/share/blastem + cp -r {blastem,menu.bin,default.cfg,rom.db,shaders} $out/share/blastem/ + makeWrapper $out/share/blastem/blastem $out/bin/blastem + ''; + + meta = { + homepage = "https://www.retrodev.com/blastem/"; + description = "The fast and accurate Genesis emulator"; + maintainers = with stdenv.lib.maintainers; [ puffnfresh ]; + license = stdenv.lib.licenses.gpl3; + platforms = stdenv.lib.platforms.linux; + # Makefile:140: *** aarch64 is not a supported architecture. Stop. + badPlatforms = [ "aarch64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/bsod/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/bsod/default.nix new file mode 100644 index 000000000000..56b85227cda4 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/bsod/default.nix @@ -0,0 +1,31 @@ +{stdenv, fetchurl, ncurses}: + +stdenv.mkDerivation { + name = "bsod-0.1"; + + src = fetchurl { + url = "https://www.vanheusden.com/bsod/bsod-0.1.tgz"; + sha256 = "0hqwacazyq5rhc04j8w8w0j0dgb6ca8k66c9lxf6bsyi6wvbhvmd"; + }; + + buildInputs = [ ncurses ]; + + installPhase = '' + mkdir -p $out/bin + cp bsod $out/bin + ''; + + meta = { + description = "Blue Screen Of Death emulator for Unix"; + longDescription = " + This program will let you UNIX user experience the authentic + microsoft windows experience. Bsod displays the famous windows xp + blue screen of death on the console. Errors and drivers causing the + error are selected randomly from a large set of examples."; + homepage = "http://www.vanheusden.com/bsod/"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.unix; + maintainers = [ stdenv.lib.maintainers.antono ]; + }; + +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/caprice32/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/caprice32/default.nix new file mode 100644 index 000000000000..8694d4d2d5ae --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/caprice32/default.nix @@ -0,0 +1,47 @@ +{ stdenv, fetchFromGitHub, desktop-file-utils, libpng +, pkgconfig, SDL, freetype, zlib }: + +stdenv.mkDerivation rec { + + pname = "caprice32"; + version = "4.6.0"; + + src = fetchFromGitHub { + repo = "caprice32"; + rev = "v${version}"; + owner = "ColinPitrat"; + sha256 = "0hng5krwgc1h9bz1xlkp2hwnvas965nd7sb3z9mb2m6x9ghxlacz"; + }; + + nativeBuildInputs = [ desktop-file-utils pkgconfig ]; + buildInputs = [ libpng SDL freetype zlib ]; + + makeFlags = [ + "APP_PATH=${placeholder "out"}/share/caprice32" + "RELEASE=1" + "DESTDIR=${placeholder "out"}" + "prefix=/" + ]; + + postInstall = '' + mkdir -p $out/share/icons/ + mv $out/share/caprice32/resources/freedesktop/caprice32.png $out/share/icons/ + mv $out/share/caprice32/resources/freedesktop/emulators.png $out/share/icons/ + + desktop-file-install --dir $out/share/applications \ + $out/share/caprice32/resources/freedesktop/caprice32.desktop + + desktop-file-install --dir $out/share/desktop-directories \ + $out/share/caprice32/resources/freedesktop/Emulators.directory + + install -Dm644 $out/share/caprice32/resources/freedesktop/caprice32.menu -t $out/etc/xdg/menus/applications-merged/ + ''; + + meta = with stdenv.lib; { + description = "A complete emulation of CPC464, CPC664 and CPC6128"; + homepage = "https://github.com/ColinPitrat/caprice32"; + license = licenses.gpl2; + maintainers = [ maintainers.genesis ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/ccemux/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ccemux/default.nix new file mode 100644 index 000000000000..2313a63dc698 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ccemux/default.nix @@ -0,0 +1,67 @@ +{ stdenv, fetchurl, makeDesktopItem, makeWrapper, jre +, useCCTweaked ? true +}: + +let + version = "1.1.1"; + rev = "af12e2e4da586275ba931eae8f40a2201251bf59"; + + baseUrl = "https://emux.cc/versions/${stdenv.lib.substring 0 8 rev}/CCEmuX"; + jar = + if useCCTweaked + then fetchurl { + url = "${baseUrl}-cct.jar"; + sha256 = "0d9gzi1h5vz32fp4lfn7dam189jcm7bwbqwmlpj0c47p8l0d4lsv"; + } + else fetchurl { + url = "${baseUrl}-cc.jar"; + sha256 = "0ky5vxh8m1v98zllifxif8xxd25j2xdp19hjnj4xlkck71lbnb34"; + }; + + desktopIcon = fetchurl { + url = "https://github.com/CCEmuX/CCEmuX/raw/${rev}/src/main/resources/img/icon.png"; + sha256 = "1vmb6rg9k2y99j8xqfgbsvfgfi3g985rmqwrd7w3y54ffr2r99c2"; + }; + desktopItem = makeDesktopItem { + name = "CCEmuX"; + exec = "ccemux"; + icon = desktopIcon; + comment = "A modular ComputerCraft emulator"; + desktopName = "CCEmuX"; + genericName = "ComputerCraft Emulator"; + categories = "Emulator;"; + }; +in + +stdenv.mkDerivation rec { + pname = "ccemux"; + inherit version; + + src = jar; + dontUnpack = true; + + nativeBuildInputs = [ makeWrapper ]; + buildInputs = [ jre ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/{bin,share/ccemux} + cp -r ${desktopItem}/share/applications $out/share/applications + + install -D ${src} $out/share/ccemux/ccemux.jar + install -D ${desktopIcon} $out/share/pixmaps/ccemux.png + + makeWrapper ${jre}/bin/java $out/bin/ccemux \ + --add-flags "-jar $out/share/ccemux/ccemux.jar" + + runHook postInstall + ''; + + meta = with stdenv.lib; { + description = "A modular ComputerCraft emulator"; + homepage = "https://github.com/CCEmuX/CCEmuX"; + license = licenses.mit; + maintainers = with maintainers; [ CrazedProgrammer ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/analyzer.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/analyzer.nix new file mode 100644 index 000000000000..246dbb7dd350 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/analyzer.nix @@ -0,0 +1,21 @@ +{ callPackage, makeWrapper, gobject-introspection, cmake +, python3Packages, gtk3, glib, libxml2, gnuplot, gnome3, gdk-pixbuf, librsvg, intltool, libmirage }: +let pkg = import ./base.nix { + version = "3.2.3"; + pkgName = "image-analyzer"; + pkgSha256 = "17yfjmf65s77214qassz6l01cjcni4cv06nzfsm7qrzw172fmci4"; +}; +in callPackage pkg { + buildInputs = [ glib gtk3 libxml2 gnuplot libmirage makeWrapper + gnome3.adwaita-icon-theme gdk-pixbuf librsvg intltool + python3Packages.python python3Packages.pygobject3 python3Packages.matplotlib ]; + drvParams = { + nativeBuildInputs = [ gobject-introspection cmake ]; + postFixup = '' + wrapProgram $out/bin/image-analyzer \ + --set PYTHONPATH "$PYTHONPATH" \ + --set GI_TYPELIB_PATH "$GI_TYPELIB_PATH" \ + --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/base.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/base.nix new file mode 100644 index 000000000000..f493faaac54f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/base.nix @@ -0,0 +1,37 @@ +{ pkgName, version, pkgSha256 }: +{ stdenv, fetchurl, cmake, pkgconfig, buildInputs, drvParams ? {} }: +let name = "${pkgName}-${version}"; +in stdenv.mkDerivation ({ + inherit name buildInputs; + src = fetchurl { + url = "mirror://sourceforge/cdemu/${name}.tar.bz2"; + sha256 = pkgSha256; + }; + nativeBuildInputs = [ pkgconfig cmake ]; + setSourceRoot = '' + mkdir build + cd build + sourceRoot="`pwd`" + ''; + configurePhase = '' + cmake ../${name} -DCMAKE_INSTALL_PREFIX=$out -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_RPATH=ON + ''; + meta = with stdenv.lib; { + description = "A suite of tools for emulating optical drives and discs"; + longDescription = '' + CDEmu consists of: + + - a kernel module implementing a virtual drive-controller + - libmirage which is a software library for interpreting optical disc images + - a daemon which emulates the functionality of an optical drive+disc + - textmode and GTK clients for controlling the emulator + - an image analyzer to view the structure of image files + + Optical media emulated by CDemu can be mounted within Linux. Automounting is also allowed. + ''; + homepage = "http://cdemu.sourceforge.net/"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with stdenv.lib.maintainers; [ bendlas ]; + }; +} // drvParams) diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/client.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/client.nix new file mode 100644 index 000000000000..087b15cecd16 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/client.nix @@ -0,0 +1,16 @@ +{ callPackage, python3Packages, intltool, makeWrapper }: +let pkg = import ./base.nix { + version = "3.2.3"; + pkgName = "cdemu-client"; + pkgSha256 = "1bvc2m63fx03rbp3ihgl2n7k24lwg5ydwkmr84gsjfcxp46q10zq"; +}; +in callPackage pkg { + buildInputs = [ python3Packages.python python3Packages.dbus-python python3Packages.pygobject3 + intltool makeWrapper ]; + drvParams = { + postFixup = '' + wrapProgram $out/bin/cdemu \ + --set PYTHONPATH "$PYTHONPATH" + ''; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/daemon.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/daemon.nix new file mode 100644 index 000000000000..db6ed7ddb47a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/daemon.nix @@ -0,0 +1,9 @@ +{ callPackage, glib, libao, intltool, libmirage }: +let pkg = import ./base.nix { + version = "3.2.3"; + pkgName = "cdemu-daemon"; + pkgSha256 = "022xzgwmncswb9md71w3ly3mjkdfc93lbij2llp2jamq8grxjjxr"; +}; +in callPackage pkg { + buildInputs = [ glib libao libmirage intltool ]; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/gui.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/gui.nix new file mode 100644 index 000000000000..599531950a21 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/gui.nix @@ -0,0 +1,23 @@ +{ callPackage, makeWrapper, gobject-introspection, cmake +, python3Packages, gtk3, glib, libnotify, intltool, gnome3, gdk-pixbuf, librsvg }: +let + pkg = import ./base.nix { + version = "3.2.3"; + pkgName = "gcdemu"; + pkgSha256 = "19vy1awha8s7cfja3a6npaf3rfy3pl3cbsh4vd609q9jz4v4lyg4"; + }; + inherit (python3Packages) python pygobject3; +in callPackage pkg { + buildInputs = [ python pygobject3 gtk3 glib libnotify intltool makeWrapper + gnome3.adwaita-icon-theme gdk-pixbuf librsvg ]; + drvParams = { + nativeBuildInputs = [ gobject-introspection cmake ]; + postFixup = '' + wrapProgram $out/bin/gcdemu \ + --set PYTHONPATH "$PYTHONPATH" \ + --set GI_TYPELIB_PATH "$GI_TYPELIB_PATH" \ + --prefix XDG_DATA_DIRS : "$out/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH" + ''; + # TODO AppIndicator + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/libmirage.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/libmirage.nix new file mode 100644 index 000000000000..cc3118ace151 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/libmirage.nix @@ -0,0 +1,18 @@ +{ callPackage, gobject-introspection, cmake, pkgconfig +, glib, libsndfile, zlib, bzip2, lzma, libsamplerate, intltool +, pcre, utillinux, libselinux, libsepol }: + +let pkg = import ./base.nix { + version = "3.2.3"; + pkgName = "libmirage"; + pkgSha256 = "08mfvqyk3833ksfd47i4j3ppmrw5ry219km6h7lywdh9hm9x14yf"; +}; +in callPackage pkg { + buildInputs = [ glib libsndfile zlib bzip2 lzma libsamplerate intltool ]; + drvParams = { + PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_GIRDIR = "${placeholder "out"}/share/gir-1.0"; + PKG_CONFIG_GOBJECT_INTROSPECTION_1_0_TYPELIBDIR = "${placeholder "out"}/lib/girepository-1.0"; + nativeBuildInputs = [ cmake gobject-introspection pkgconfig ]; + propagatedBuildInputs = [ pcre utillinux libselinux libsepol ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/vhba.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/vhba.nix new file mode 100644 index 000000000000..9723e53a8fdb --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/cdemu/vhba.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, kernel }: + +stdenv.mkDerivation rec { + pname = "vhba"; + version = "20190831"; + + src = fetchurl { + url = "mirror://sourceforge/cdemu/vhba-module-${version}.tar.bz2"; + sha256 = "1ybbk6l06n0y11n5wnfmvdz0baizmq55l458ywimghdyz0n7g0ws"; + }; + + makeFlags = [ "KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" "INSTALL_MOD_PATH=$(out)" ]; + nativeBuildInputs = kernel.moduleBuildDependencies; + + hardeningDisable = [ "pic" ]; + + meta = with stdenv.lib; { + description = "Provides a Virtual (SCSI) HBA"; + homepage = "http://cdemu.sourceforge.net/about/vhba/"; + platforms = platforms.linux; + license = licenses.gpl2Plus; + maintainers = with stdenv.lib.maintainers; [ bendlas ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/citra/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/citra/default.nix new file mode 100644 index 000000000000..efe4770a7b00 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/citra/default.nix @@ -0,0 +1,32 @@ +{ stdenv, mkDerivation, lib, fetchgit, cmake, SDL2, qtbase, qtmultimedia, boost }: + +mkDerivation { + pname = "citra"; + version = "2020-03-21"; + + # Submodules + src = fetchgit { + url = "https://github.com/citra-emu/citra"; + rev = "8722b970c52f2c0d8e82561477edb62a53ae9dbb"; + sha256 = "0c1zn1f84h4f6n6p0aqz905yvv5qpdmkj2z58yla6bfgbzabfyrj"; + }; + + enableParallelBuilding = true; + nativeBuildInputs = [ cmake ]; + buildInputs = [ SDL2 qtbase qtmultimedia boost ]; + + preConfigure = '' + # Trick configure system. + sed -n 's,^ *path = \(.*\),\1,p' .gitmodules | while read path; do + mkdir "$path/.git" + done + ''; + + meta = with stdenv.lib; { + homepage = "https://citra-emu.org"; + description = "An open-source emulator for the Nintendo 3DS"; + license = licenses.gpl2; + maintainers = with maintainers; [ abbradar ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/darcnes/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/darcnes/default.nix new file mode 100644 index 000000000000..3ea98c571e8d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/darcnes/default.nix @@ -0,0 +1,24 @@ +{ stdenv, fetchurl, libX11, libXt, libXext, libXaw }: + +stdenv.mkDerivation rec { + pname = "darcnes"; + version = "9b0401"; + + src = fetchurl { + url = "https://web.archive.org/web/20130511081532/http://www.dridus.com/~nyef/darcnes/download/dn${version}.tgz"; + sha256 = "05a7mh51rg7ydb414m3p5mm05p4nz2bgvspqzwm3bhbj7zz543k3"; + }; + + patches = [ ./label.patch ]; + + buildInputs = [ libX11 libXt libXext libXaw ]; + installPhase = "install -Dt $out/bin darcnes"; + + meta = { + homepage = "https://web.archive.org/web/20130502171725/http://www.dridus.com/~nyef/darcnes/"; + description = "Sega Master System, Game Gear, SG-1000, NES, ColecoVision and Apple II emulator"; + # Prohibited commercial use, credit required. + license = stdenv.lib.licenses.free; + platforms = [ "i686-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/darcnes/label.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/darcnes/label.patch new file mode 100644 index 000000000000..612aa1e3911e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/darcnes/label.patch @@ -0,0 +1,13 @@ +http://gentoo-overlays.zugaina.org/funtoo/portage/games-emulation/darcnes/files/darcnes-0401-exec-stack.patch + +diff -Naur old/video_x.c new/video_x.c +--- old/video_x.c 2004-09-04 01:26:41.102187277 +0200 ++++ new/video_x.c 2004-09-04 01:27:51.586427427 +0200 +@@ -366,6 +366,7 @@ + } + + default: ++ break; + } + } + diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/01_use_system_tinyxml.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/01_use_system_tinyxml.patch new file mode 100644 index 000000000000..8cec26026e7f --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/01_use_system_tinyxml.patch @@ -0,0 +1,231 @@ +From: Evgeni Golov <evgeni@debian.org> +Subject: use the system tinyxml instead of the embedded copy +Last-Update: 2015-08-09 + +diff --git a/src/Makefile.am b/src/Makefile.am +index 7b9e263..bc7ba8c 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -81,12 +81,6 @@ libdesmume_a_SOURCES = \ + utils/libfat/mem_allocate.h \ + utils/libfat/partition.cpp \ + utils/libfat/partition.h \ +- utils/tinyxml/tinystr.cpp \ +- utils/tinyxml/tinystr.h \ +- utils/tinyxml/tinyxml.cpp \ +- utils/tinyxml/tinyxml.h \ +- utils/tinyxml/tinyxmlerror.cpp \ +- utils/tinyxml/tinyxmlparser.cpp \ + utils/glcorearb.h \ + addons/slot2_auto.cpp addons/slot2_mpcf.cpp addons/slot2_paddle.cpp addons/slot2_gbagame.cpp addons/slot2_none.cpp addons/slot2_rumblepak.cpp addons/slot2_guitarGrip.cpp addons/slot2_expMemory.cpp addons/slot2_piano.cpp addons/slot2_passme.cpp addons/slot1_none.cpp addons/slot1_r4.cpp addons/slot1_retail_nand.cpp addons/slot1_retail_auto.cpp addons/slot1_retail_mcrom.cpp addons/slot1_retail_mcrom_debug.cpp addons/slot1comp_mc.cpp addons/slot1comp_mc.h addons/slot1comp_rom.h addons/slot1comp_rom.cpp addons/slot1comp_protocol.h addons/slot1comp_protocol.cpp \ + cheatSystem.cpp cheatSystem.h \ +@@ -204,3 +198,4 @@ if HAVE_GDB_STUB + libdesmume_a_SOURCES += gdbstub.h + endif + libdesmume_a_LIBADD = fs-$(desmume_arch).$(OBJEXT) ++LIBS += -ltinyxml +diff --git a/src/Makefile.in b/src/Makefile.in +index 9cf26a3..d9ff7b2 100644 +--- a/src/Makefile.in ++++ b/src/Makefile.in +@@ -184,9 +184,6 @@ am__libdesmume_a_SOURCES_DIST = armcpu.cpp armcpu.h \ + utils/libfat/libfat_public_api.h utils/libfat/lock.cpp \ + utils/libfat/lock.h utils/libfat/mem_allocate.h \ + utils/libfat/partition.cpp utils/libfat/partition.h \ +- utils/tinyxml/tinystr.cpp utils/tinyxml/tinystr.h \ +- utils/tinyxml/tinyxml.cpp utils/tinyxml/tinyxml.h \ +- utils/tinyxml/tinyxmlerror.cpp utils/tinyxml/tinyxmlparser.cpp \ + utils/glcorearb.h addons/slot2_auto.cpp addons/slot2_mpcf.cpp \ + addons/slot2_paddle.cpp addons/slot2_gbagame.cpp \ + addons/slot2_none.cpp addons/slot2_rumblepak.cpp \ +@@ -324,10 +321,6 @@ am_libdesmume_a_OBJECTS = armcpu.$(OBJEXT) arm_instructions.$(OBJEXT) \ + utils/libfat/libfat.$(OBJEXT) \ + utils/libfat/libfat_public_api.$(OBJEXT) \ + utils/libfat/lock.$(OBJEXT) utils/libfat/partition.$(OBJEXT) \ +- utils/tinyxml/tinystr.$(OBJEXT) \ +- utils/tinyxml/tinyxml.$(OBJEXT) \ +- utils/tinyxml/tinyxmlerror.$(OBJEXT) \ +- utils/tinyxml/tinyxmlparser.$(OBJEXT) \ + addons/slot2_auto.$(OBJEXT) addons/slot2_mpcf.$(OBJEXT) \ + addons/slot2_paddle.$(OBJEXT) addons/slot2_gbagame.$(OBJEXT) \ + addons/slot2_none.$(OBJEXT) addons/slot2_rumblepak.$(OBJEXT) \ +@@ -475,7 +468,7 @@ LIBAGG_LIBS = @LIBAGG_LIBS@ + LIBGLADE_CFLAGS = @LIBGLADE_CFLAGS@ + LIBGLADE_LIBS = @LIBGLADE_LIBS@ + LIBOBJS = @LIBOBJS@ +-LIBS = @LIBS@ ++LIBS = @LIBS@ -ltinyxml + LIBSOUNDTOUCH_CFLAGS = @LIBSOUNDTOUCH_CFLAGS@ + LIBSOUNDTOUCH_LIBS = @LIBSOUNDTOUCH_LIBS@ + LTLIBOBJS = @LTLIBOBJS@ +@@ -625,9 +618,6 @@ libdesmume_a_SOURCES = armcpu.cpp armcpu.h arm_instructions.cpp \ + utils/libfat/libfat_public_api.h utils/libfat/lock.cpp \ + utils/libfat/lock.h utils/libfat/mem_allocate.h \ + utils/libfat/partition.cpp utils/libfat/partition.h \ +- utils/tinyxml/tinystr.cpp utils/tinyxml/tinystr.h \ +- utils/tinyxml/tinyxml.cpp utils/tinyxml/tinyxml.h \ +- utils/tinyxml/tinyxmlerror.cpp utils/tinyxml/tinyxmlparser.cpp \ + utils/glcorearb.h addons/slot2_auto.cpp addons/slot2_mpcf.cpp \ + addons/slot2_paddle.cpp addons/slot2_gbagame.cpp \ + addons/slot2_none.cpp addons/slot2_rumblepak.cpp \ +@@ -760,20 +750,6 @@ utils/libfat/lock.$(OBJEXT): utils/libfat/$(am__dirstamp) \ + utils/libfat/$(DEPDIR)/$(am__dirstamp) + utils/libfat/partition.$(OBJEXT): utils/libfat/$(am__dirstamp) \ + utils/libfat/$(DEPDIR)/$(am__dirstamp) +-utils/tinyxml/$(am__dirstamp): +- @$(MKDIR_P) utils/tinyxml +- @: > utils/tinyxml/$(am__dirstamp) +-utils/tinyxml/$(DEPDIR)/$(am__dirstamp): +- @$(MKDIR_P) utils/tinyxml/$(DEPDIR) +- @: > utils/tinyxml/$(DEPDIR)/$(am__dirstamp) +-utils/tinyxml/tinystr.$(OBJEXT): utils/tinyxml/$(am__dirstamp) \ +- utils/tinyxml/$(DEPDIR)/$(am__dirstamp) +-utils/tinyxml/tinyxml.$(OBJEXT): utils/tinyxml/$(am__dirstamp) \ +- utils/tinyxml/$(DEPDIR)/$(am__dirstamp) +-utils/tinyxml/tinyxmlerror.$(OBJEXT): utils/tinyxml/$(am__dirstamp) \ +- utils/tinyxml/$(DEPDIR)/$(am__dirstamp) +-utils/tinyxml/tinyxmlparser.$(OBJEXT): utils/tinyxml/$(am__dirstamp) \ +- utils/tinyxml/$(DEPDIR)/$(am__dirstamp) + addons/$(am__dirstamp): + @$(MKDIR_P) addons + @: > addons/$(am__dirstamp) +@@ -1035,10 +1011,6 @@ mostlyclean-compile: + -rm -f utils/libfat/partition.$(OBJEXT) + -rm -f utils/md5.$(OBJEXT) + -rm -f utils/task.$(OBJEXT) +- -rm -f utils/tinyxml/tinystr.$(OBJEXT) +- -rm -f utils/tinyxml/tinyxml.$(OBJEXT) +- -rm -f utils/tinyxml/tinyxmlerror.$(OBJEXT) +- -rm -f utils/tinyxml/tinyxmlparser.$(OBJEXT) + -rm -f utils/vfat.$(OBJEXT) + -rm -f utils/xstring.$(OBJEXT) + +@@ -1175,10 +1147,6 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@utils/libfat/$(DEPDIR)/libfat_public_api.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@utils/libfat/$(DEPDIR)/lock.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@utils/libfat/$(DEPDIR)/partition.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@utils/tinyxml/$(DEPDIR)/tinystr.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@utils/tinyxml/$(DEPDIR)/tinyxml.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@utils/tinyxml/$(DEPDIR)/tinyxmlerror.Po@am__quote@ +-@AMDEP_TRUE@@am__include@ @am__quote@utils/tinyxml/$(DEPDIR)/tinyxmlparser.Po@am__quote@ + + .c.o: + @am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@@ -1449,8 +1417,6 @@ distclean-generic: + -rm -f utils/decrypt/$(am__dirstamp) + -rm -f utils/libfat/$(DEPDIR)/$(am__dirstamp) + -rm -f utils/libfat/$(am__dirstamp) +- -rm -f utils/tinyxml/$(DEPDIR)/$(am__dirstamp) +- -rm -f utils/tinyxml/$(am__dirstamp) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -1460,7 +1426,7 @@ clean: clean-recursive + clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + + distclean: distclean-recursive +- -rm -rf ./$(DEPDIR) addons/$(DEPDIR) filter/$(DEPDIR) metaspu/$(DEPDIR) utils/$(DEPDIR) utils/AsmJit/core/$(DEPDIR) utils/AsmJit/x86/$(DEPDIR) utils/decrypt/$(DEPDIR) utils/libfat/$(DEPDIR) utils/tinyxml/$(DEPDIR) ++ -rm -rf ./$(DEPDIR) addons/$(DEPDIR) filter/$(DEPDIR) metaspu/$(DEPDIR) utils/$(DEPDIR) utils/AsmJit/core/$(DEPDIR) utils/AsmJit/x86/$(DEPDIR) utils/decrypt/$(DEPDIR) utils/libfat/$(DEPDIR) + -rm -f Makefile + distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags +@@ -1506,7 +1472,7 @@ install-ps-am: + installcheck-am: + + maintainer-clean: maintainer-clean-recursive +- -rm -rf ./$(DEPDIR) addons/$(DEPDIR) filter/$(DEPDIR) metaspu/$(DEPDIR) utils/$(DEPDIR) utils/AsmJit/core/$(DEPDIR) utils/AsmJit/x86/$(DEPDIR) utils/decrypt/$(DEPDIR) utils/libfat/$(DEPDIR) utils/tinyxml/$(DEPDIR) ++ -rm -rf ./$(DEPDIR) addons/$(DEPDIR) filter/$(DEPDIR) metaspu/$(DEPDIR) utils/$(DEPDIR) utils/AsmJit/core/$(DEPDIR) utils/AsmJit/x86/$(DEPDIR) utils/decrypt/$(DEPDIR) utils/libfat/$(DEPDIR) + -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + +diff --git a/src/cli/Makefile.am b/src/cli/Makefile.am +index 1985209..d958323 100755 +--- a/src/cli/Makefile.am ++++ b/src/cli/Makefile.am +@@ -5,7 +5,7 @@ AM_CPPFLAGS += $(SDL_CFLAGS) $(ALSA_CFLAGS) $(LIBAGG_CFLAGS) $(GLIB_CFLAGS) $(GT + + bin_PROGRAMS = desmume-cli + desmume_cli_SOURCES = main.cpp ../sndsdl.cpp ../ctrlssdl.h ../ctrlssdl.cpp ../driver.h ../driver.cpp +-desmume_cli_LDADD = ../libdesmume.a $(SDL_LIBS) $(ALSA_LIBS) $(LIBAGG_LIBS) $(GLIB_LIBS) $(GTHREAD_LIBS) $(LIBSOUNDTOUCH_LIBS) ++desmume_cli_LDADD = ../libdesmume.a $(SDL_LIBS) $(ALSA_LIBS) $(LIBAGG_LIBS) $(GLIB_LIBS) $(GTHREAD_LIBS) $(LIBSOUNDTOUCH_LIBS) -ltinyxml + if HAVE_GDB_STUB + desmume_cli_LDADD += ../gdbstub/libgdbstub.a + endif +diff --git a/src/cli/Makefile.in b/src/cli/Makefile.in +index 14efd77..f04ab7d 100644 +--- a/src/cli/Makefile.in ++++ b/src/cli/Makefile.in +@@ -311,7 +311,7 @@ AM_LDFLAGS = + desmume_cli_SOURCES = main.cpp ../sndsdl.cpp ../ctrlssdl.h ../ctrlssdl.cpp ../driver.h ../driver.cpp + desmume_cli_LDADD = ../libdesmume.a $(SDL_LIBS) $(ALSA_LIBS) \ + $(LIBAGG_LIBS) $(GLIB_LIBS) $(GTHREAD_LIBS) \ +- $(LIBSOUNDTOUCH_LIBS) $(am__append_1) ++ $(LIBSOUNDTOUCH_LIBS) -ltinyxml $(am__append_1) + all: all-recursive + + .SUFFIXES: +diff --git a/src/gtk-glade/Makefile.am b/src/gtk-glade/Makefile.am +index b667fca..c79fdac 100755 +--- a/src/gtk-glade/Makefile.am ++++ b/src/gtk-glade/Makefile.am +@@ -33,7 +33,7 @@ desmume_glade_SOURCES = \ + desmume_glade_LDADD = ../libdesmume.a \ + $(SDL_LIBS) $(GTKGLEXT_LIBS) $(LIBGLADE_LIBS) \ + $(GTHREAD_LIBS) $(ALSA_LIBS) $(LIBAGG_LIBS) \ +- $(LIBSOUNDTOUCH_LIBS) ++ $(LIBSOUNDTOUCH_LIBS) -ltinyxml + if HAVE_GDB_STUB + desmume_glade_LDADD += ../gdbstub/libgdbstub.a + endif +diff --git a/src/gtk-glade/Makefile.in b/src/gtk-glade/Makefile.in +index 5f77ec5..012aa72 100644 +--- a/src/gtk-glade/Makefile.in ++++ b/src/gtk-glade/Makefile.in +@@ -367,7 +367,7 @@ desmume_glade_SOURCES = \ + + desmume_glade_LDADD = ../libdesmume.a $(SDL_LIBS) $(GTKGLEXT_LIBS) \ + $(LIBGLADE_LIBS) $(GTHREAD_LIBS) $(ALSA_LIBS) $(LIBAGG_LIBS) \ +- $(LIBSOUNDTOUCH_LIBS) $(am__append_1) ++ $(LIBSOUNDTOUCH_LIBS) -ltinyxml $(am__append_1) + all: all-recursive + + .SUFFIXES: +diff --git a/src/gtk/Makefile.am b/src/gtk/Makefile.am +index 59cb1f2..e451102 100755 +--- a/src/gtk/Makefile.am ++++ b/src/gtk/Makefile.am +@@ -32,7 +32,7 @@ desmume_SOURCES = \ + ../filter/videofilter.cpp ../filter/videofilter.h \ + main.cpp main.h + desmume_LDADD = ../libdesmume.a \ +- $(SDL_LIBS) $(GTK_LIBS) $(GTHREAD_LIBS) $(ALSA_LIBS) $(LIBAGG_LIBS) $(LIBSOUNDTOUCH_LIBS) ++ $(SDL_LIBS) $(GTK_LIBS) $(GTHREAD_LIBS) $(ALSA_LIBS) $(LIBAGG_LIBS) $(LIBSOUNDTOUCH_LIBS) -ltinyxml + if HAVE_GDB_STUB + desmume_LDADD += ../gdbstub/libgdbstub.a + endif +diff --git a/src/gtk/Makefile.in b/src/gtk/Makefile.in +index e1a2c37..75f392f 100644 +--- a/src/gtk/Makefile.in ++++ b/src/gtk/Makefile.in +@@ -382,7 +382,7 @@ desmume_SOURCES = \ + + desmume_LDADD = ../libdesmume.a $(SDL_LIBS) $(GTK_LIBS) \ + $(GTHREAD_LIBS) $(ALSA_LIBS) $(LIBAGG_LIBS) \ +- $(LIBSOUNDTOUCH_LIBS) $(am__append_1) $(am__append_2) \ ++ $(LIBSOUNDTOUCH_LIBS) -ltinyxml $(am__append_1) $(am__append_2) \ + $(am__append_3) + UPDATE_DESKTOP = \ + appsdir=$(DESTDIR)$(datadir)/applications ; \ +diff --git a/src/utils/advanscene.cpp b/src/utils/advanscene.cpp +index 8d8f370..09c35bb 100755 +--- a/src/utils/advanscene.cpp ++++ b/src/utils/advanscene.cpp +@@ -19,7 +19,7 @@ + #include <time.h>
+
+ #define TIXML_USE_STL
+-#include "tinyxml/tinyxml.h"
++#include <tinyxml.h>
+
+ #include "advanscene.h"
+ #include "../common.h"
diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/default.nix new file mode 100644 index 000000000000..27c1a2cb9c31 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/default.nix @@ -0,0 +1,57 @@ +{ stdenv, fetchurl, fetchpatch +, pkgconfig, libtool, intltool +, libXmu +, lua +, tinyxml +, agg, alsaLib, soundtouch, openal +, desktop-file-utils +, gtk2, gtkglext, libglade +, libGLU, libpcap, SDL, zziplib }: + +with stdenv.lib; +stdenv.mkDerivation rec { + + pname = "desmume"; + version = "0.9.11"; + + src = fetchurl { + url = "mirror://sourceforge/project/desmume/desmume/${version}/${pname}-${version}.tar.gz"; + sha256 = "15l8wdw3q61fniy3h93d84dnm6s4pyadvh95a0j6d580rjk4pcrs"; + }; + + patches = [ + ./gcc6_fixes.patch + ./gcc7_fixes.patch + ./01_use_system_tinyxml.patch + ]; + + CXXFLAGS = "-fpermissive"; + + buildInputs = + [ pkgconfig libtool intltool libXmu lua agg alsaLib soundtouch + openal desktop-file-utils gtk2 gtkglext libglade + libGLU libpcap SDL zziplib tinyxml ]; + + configureFlags = [ + "--disable-glade" # Failing on compile step + "--enable-openal" + "--enable-glx" + "--enable-hud" + "--enable-wifi" ]; + + meta = { + description = "An open-source Nintendo DS emulator"; + longDescription = '' + DeSmuME is a freeware emulator for the NDS roms & Nintendo DS + Lite games created by YopYop156. It supports many homebrew nds + rom demoes as well as a handful of Wireless Multiboot demo nds + roms. DeSmuME is also able to emulate nearly all of the + commercial nds rom titles which other DS Emulators aren't. + ''; + homepage = "http://www.desmume.com"; + license = licenses.gpl1Plus; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} +# TODO: investigate glade diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/gcc6_fixes.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/gcc6_fixes.patch new file mode 100644 index 000000000000..6eb9576f649b --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/gcc6_fixes.patch @@ -0,0 +1,59 @@ +From: zeromus +Origin: upstream, https://sourceforge.net/p/desmume/code/5514, https://sourceforge.net/p/desmume/code/5517, https://sourceforge.net/p/desmume/code/5430 +Subject: fix GCC6 issues +Bug: https://sourceforge.net/p/desmume/bugs/1570/ +Bug-Debian: http://bugs.debian.org/811691 + +Index: desmume/src/MMU_timing.h +=================================================================== +--- desmume/src/MMU_timing.h (revision 5513) ++++ desmume/src/MMU_timing.h (revision 5517) +@@ -155,8 +155,8 @@ + enum { ASSOCIATIVITY = 1 << ASSOCIATIVESHIFT };
+ enum { BLOCKSIZE = 1 << BLOCKSIZESHIFT };
+ enum { TAGSHIFT = SIZESHIFT - ASSOCIATIVESHIFT };
+- enum { TAGMASK = (u32)(~0 << TAGSHIFT) };
+- enum { BLOCKMASK = ((u32)~0 >> (32 - TAGSHIFT)) & (u32)(~0 << BLOCKSIZESHIFT) };
++ enum { TAGMASK = (u32)(~0U << TAGSHIFT) };
++ enum { BLOCKMASK = ((u32)~0U >> (32 - TAGSHIFT)) & (u32)(~0U << BLOCKSIZESHIFT) };
+ enum { WORDSIZE = sizeof(u32) };
+ enum { WORDSPERBLOCK = (1 << BLOCKSIZESHIFT) / WORDSIZE };
+ enum { DATAPERWORD = WORDSIZE * ASSOCIATIVITY };
+Index: desmume/src/ctrlssdl.cpp +=================================================================== +--- desmume/src/ctrlssdl.cpp (revision 5513) ++++ desmume/src/ctrlssdl.cpp (revision 5517) +@@ -200,7 +200,7 @@ + break; + case SDL_JOYAXISMOTION: + /* Dead zone of 50% */ +- if( (abs(event.jaxis.value) >> 14) != 0 ) ++ if( ((u32)abs(event.jaxis.value) >> 14) != 0 ) + { + key = ((event.jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event.jaxis.axis & 127) << 1); + if (event.jaxis.value > 0) { +@@ -370,7 +370,7 @@ + Note: button constants have a 1bit offset. */ + case SDL_JOYAXISMOTION: + key_code = ((event->jaxis.which & 15) << 12) | JOY_AXIS << 8 | ((event->jaxis.axis & 127) << 1); +- if( (abs(event->jaxis.value) >> 14) != 0 ) ++ if( ((u32)abs(event->jaxis.value) >> 14) != 0 ) + { + if (event->jaxis.value > 0) + key_code |= 1; +Index: desmume/src/wifi.cpp +=================================================================== +--- desmume/src/wifi.cpp (revision 5429) ++++ desmume/src/wifi.cpp (revision 5430) +@@ -320,9 +320,9 @@ + + #if (WIFI_LOGGING_LEVEL >= 1) + #if WIFI_LOG_USE_LOGC +- #define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) LOGC(8, "WIFI: "__VA_ARGS__); ++ #define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) LOGC(8, "WIFI: " __VA_ARGS__); + #else +- #define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) printf("WIFI: "__VA_ARGS__); ++ #define WIFI_LOG(level, ...) if(level <= WIFI_LOGGING_LEVEL) printf("WIFI: " __VA_ARGS__); + #endif + #else + #define WIFI_LOG(level, ...) {} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/gcc7_fixes.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/gcc7_fixes.patch new file mode 100644 index 000000000000..a4934ff6e611 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/desmume/gcc7_fixes.patch @@ -0,0 +1,18 @@ +From e1f7039f1b06add4fb75b2f8774000b8f05574af Mon Sep 17 00:00:00 2001 +From: rogerman <rogerman@users.sf.net> +Date: Mon, 17 Aug 2015 21:15:04 +0000 +Subject: Fix bug with libfat string handling. + +diff --git a/src/utils/libfat/directory.cpp b/src/utils/libfat/directory.cpp +index 765d7ae5..b6d7f01f 100644 +--- a/src/utils/libfat/directory.cpp ++++ b/src/utils/libfat/directory.cpp +@@ -139,7 +139,7 @@ static size_t _FAT_directory_mbstoucs2 (ucs2_t* dst, const char* src, size_t len + int bytes; + size_t count = 0; + +- while (count < len-1 && src != '\0') { ++ while (count < len-1 && *src != '\0') { + bytes = mbrtowc (&tempChar, src, MB_CUR_MAX, &ps); + if (bytes > 0) { + *dst = (ucs2_t)tempChar; diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/dlx/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/dlx/default.nix new file mode 100644 index 000000000000..215f2ee46f9c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/dlx/default.nix @@ -0,0 +1,31 @@ +{ stdenv, fetchurl, unzip }: + +stdenv.mkDerivation { + name = "dlx-2012.07.08"; + + src = fetchurl { + url = "https://www.davidviner.com/zip/dlx/dlx.zip"; + sha256 = "0q5hildq2xcig7yrqi26n7fqlanyssjirm7swy2a9icfxpppfpkn"; + }; + + buildInputs = [ unzip ]; + + makeFlags = [ "LINK=gcc" "CFLAGS=-O2" ]; + + hardeningDisable = [ "format" ]; + + installPhase = '' + mkdir -p $out/include/dlx $out/share/dlx/{examples,doc} $out/bin + mv -v masm mon dasm $out/bin/ + mv -v *.i auto.a $out/include/dlx/ + mv -v *.a *.m $out/share/dlx/examples/ + mv -v README.txt MANUAL.TXT $out/share/dlx/doc/ + ''; + + meta = { + homepage = "http://www.davidviner.com/dlx.php"; + description = "DLX Simulator"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/dolphin-emu/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/dolphin-emu/default.nix new file mode 100644 index 000000000000..0053079d992c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/dolphin-emu/default.nix @@ -0,0 +1,120 @@ +{ stdenv +, lib +, fetchpatch +, pkgconfig +, cmake +, bluez +, ffmpeg_3 +, libao +, gtk2 +, glib +, libGLU +, libGL +, gettext +, libpthreadstubs +, libXrandr +, libXext +, readline +, openal +, libXdmcp +, portaudio +, fetchFromGitHub +, libusb1 +, libevdev +, wxGTK30 +, soundtouch +, miniupnpc +, mbedtls +, curl +, lzo +, sfml +, libpulseaudio ? null +}: + +stdenv.mkDerivation rec { + pname = "dolphin-emu"; + version = "5.0"; + + src = fetchFromGitHub { + owner = "dolphin-emu"; + repo = "dolphin"; + rev = version; + sha256 = "07mlfnh0hwvk6xarcg315x7z2j0qbg9g7cm040df9c8psiahc3g6"; + }; + + patches = [ + # Fix build with soundtouch 2.1.2 + (fetchpatch { + url = "https://src.fedoraproject.org/rpms/dolphin-emu/raw/a1b91fdf94981e12c8889a02cba0ec2267d0f303/f/dolphin-emu-5.0-soundtouch-exception-fix.patch"; + name = "dolphin-emu-5.0-soundtouch-exception-fix.patch"; + sha256 = "0yd3l46nja5qiknnl30ryad98f3v8911jwnr67hn61dzx2kwbbaw"; + }) + # Fix build with gcc 8 + (fetchpatch { + url = "https://salsa.debian.org/games-team/dolphin-emu/raw/9b7b4aeac1b60dcf28bdcafbed6bc498b2aeb0ad/debian/patches/03_gcc8.patch"; + name = "03_gcc8.patch"; + sha256 = "1da95gb8c95kd5cjhdvg19cv2z863lj3va5gx3bqc7g8r36glqxr"; + }) + ]; + + postPatch = '' + substituteInPlace Source/Core/VideoBackends/OGL/RasterFont.cpp \ + --replace " CHAR_WIDTH " " CHARWIDTH " + ''; + + cmakeFlags = [ + "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include" + "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include" + "-DGTK2_INCLUDE_DIRS=${gtk2.dev}/include/gtk-2.0" + "-DENABLE_LTO=True" + ]; + + enableParallelBuilding = true; + + nativeBuildInputs = [ + pkgconfig + cmake + ]; + + buildInputs = [ + bluez + ffmpeg_3 + libao + libGLU + libGL + gtk2 + glib + gettext + libpthreadstubs + libXrandr + libXext + readline + openal + libevdev + libXdmcp + portaudio + libpulseaudio + libevdev + libXdmcp + portaudio + libusb1 + libpulseaudio + wxGTK30 + soundtouch + miniupnpc + mbedtls + curl + lzo + sfml + ]; + + meta = with lib; { + homepage = "https://dolphin-emu.org/"; + description = "Gamecube/Wii/Triforce emulator for x86_64 and ARMv8"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ MP2E ashkitten ]; + # x86_32 is an unsupported platform. + # Enable generic build if you really want a JIT-less binary. + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/dolphin-emu/master.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/dolphin-emu/master.nix new file mode 100644 index 000000000000..3865a4a70602 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/dolphin-emu/master.nix @@ -0,0 +1,87 @@ +{ lib, stdenv, fetchFromGitHub, makeDesktopItem, pkgconfig, cmake +, wrapQtAppsHook, qtbase, bluez, ffmpeg_3, libao, libGLU, libGL, pcre, gettext +, libXrandr, libusb1, lzo, libpthreadstubs, libXext, libXxf86vm, libXinerama +, libSM, libXdmcp, readline, openal, udev, libevdev, portaudio, curl, alsaLib +, miniupnpc, enet, mbedtls, soundtouch, sfml +, vulkan-loader ? null, libpulseaudio ? null + +# - Inputs used for Darwin +, CoreBluetooth, ForceFeedback, IOKit, OpenGL, libpng, hidapi }: + +let + desktopItem = makeDesktopItem { + name = "dolphin-emu-master"; + exec = "dolphin-emu-master"; + icon = "dolphin-emu"; + comment = "A Wii/GameCube Emulator"; + desktopName = "Dolphin Emulator (master)"; + genericName = "Wii/GameCube Emulator"; + categories = "Game;Emulator;"; + startupNotify = "false"; + }; +in stdenv.mkDerivation rec { + pname = "dolphin-emu"; + version = "5.0-11824"; + + src = fetchFromGitHub { + owner = "dolphin-emu"; + repo = "dolphin"; + rev = "1b97f081b8eff9012132a4124537968bdb0e03e0"; + sha256 = "1v96hcn34040vjsw83k8p0r0nb8rrdcz80h4ngirxzm36b3l7w6m"; + }; + + enableParallelBuilding = true; + nativeBuildInputs = [ cmake pkgconfig ] + ++ lib.optional stdenv.isLinux wrapQtAppsHook; + + buildInputs = [ + curl ffmpeg_3 libao libGLU libGL pcre gettext libpthreadstubs libpulseaudio + libXrandr libXext libXxf86vm libXinerama libSM readline openal libXdmcp lzo + portaudio libusb1 libpng hidapi miniupnpc enet mbedtls soundtouch sfml + qtbase + ] ++ lib.optionals stdenv.isLinux [ + bluez udev libevdev alsaLib vulkan-loader + ] ++ lib.optionals stdenv.isDarwin [ + CoreBluetooth OpenGL ForceFeedback IOKit + ]; + + cmakeFlags = [ + "-DUSE_SHARED_ENET=ON" + "-DENABLE_LTO=ON" + "-DDOLPHIN_WC_REVISION=${src.rev}" + "-DDOLPHIN_WC_DESCRIBE=${version}" + "-DDOLPHIN_WC_BRANCH=master" + ] ++ lib.optionals stdenv.isDarwin [ + "-DOSX_USE_DEFAULT_SEARCH_PATH=True" + ]; + + qtWrapperArgs = lib.optionals stdenv.isLinux [ + "--prefix LD_LIBRARY_PATH : ${vulkan-loader}/lib" + ]; + + # - Allow Dolphin to use nix-provided libraries instead of building them + postPatch = '' + sed -i -e 's,DISTRIBUTOR "None",DISTRIBUTOR "NixOS",g' CMakeLists.txt + '' + lib.optionalString stdenv.isDarwin '' + sed -i -e 's,if(NOT APPLE),if(true),g' CMakeLists.txt + sed -i -e 's,if(LIBUSB_FOUND AND NOT APPLE),if(LIBUSB_FOUND),g' \ + CMakeLists.txt + ''; + + postInstall = '' + cp -r ${desktopItem}/share/applications $out/share + ln -sf $out/bin/dolphin-emu $out/bin/dolphin-emu-master + ''; + + meta = with lib; { + homepage = "https://dolphin-emu.org"; + description = "Gamecube/Wii/Triforce emulator for x86_64 and ARMv8"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ MP2E ashkitten ]; + branch = "master"; + # x86_32 is an unsupported platform. + # Enable generic build if you really want a JIT-less binary. + broken = stdenv.isDarwin; + platforms = [ "x86_64-linux" "x86_64-darwin" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/dosbox/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/dosbox/default.nix new file mode 100644 index 000000000000..160c8733ff5c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/dosbox/default.nix @@ -0,0 +1,46 @@ +{ stdenv, lib, fetchurl, makeDesktopItem, SDL, SDL_net, SDL_sound, libGLU, libGL, libpng, graphicsmagick }: + +stdenv.mkDerivation rec { + name = "dosbox-0.74-3"; + + src = fetchurl { + url = "mirror://sourceforge/dosbox/${name}.tar.gz"; + sha256 = "02i648i50dwicv1vaql15rccv4g8h5blf5g6inv67lrfxpbkvlf0"; + }; + + hardeningDisable = [ "format" ]; + + buildInputs = [ SDL SDL_net SDL_sound libGLU libGL libpng ]; + + nativeBuildInputs = [ graphicsmagick ]; + + configureFlags = lib.optional stdenv.isDarwin "--disable-sdltest"; + + desktopItem = makeDesktopItem { + name = "dosbox"; + exec = "dosbox"; + icon = "dosbox"; + comment = "x86 emulator with internal DOS"; + desktopName = "DOSBox"; + genericName = "DOS emulator"; + categories = "Emulator;"; + }; + + postInstall = '' + mkdir -p $out/share/applications + cp ${desktopItem}/share/applications/* $out/share/applications + + mkdir -p $out/share/icons/hicolor/256x256/apps + gm convert src/dosbox.ico $out/share/icons/hicolor/256x256/apps/dosbox.png + ''; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "http://www.dosbox.com/"; + description = "A DOS emulator"; + platforms = platforms.unix; + maintainers = with maintainers; [ matthewbauer ]; + license = licenses.gpl2; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/emu2/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/emu2/default.nix new file mode 100644 index 000000000000..fb13b602b6a6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/emu2/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchFromGitHub }: + +stdenv.mkDerivation rec { + pname = "emu2"; + version = "unstable-2020-06-04"; + + src = fetchFromGitHub { + owner = "dmsc"; + repo = "emu2"; + rev = "f9599d347aab07d9281400ec8b214aabd187fbcd"; + sha256 = "0d8fb3wp477kfi0p4mmr69lxsbgb4gl9pqmm68g9ixzrfch837v4"; + }; + + makeFlags = [ "PREFIX=$(out)" ]; + + meta = with stdenv.lib; { + homepage = "https://github.com/dmsc/emu2/"; + description = "A simple text-mode x86 + DOS emulator"; + platforms = platforms.linux; + maintainers = with maintainers; [ dramaturg ]; + license = licenses.gpl2; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/emulationstation/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/emulationstation/default.nix new file mode 100644 index 000000000000..af83d4b9f34b --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/emulationstation/default.nix @@ -0,0 +1,39 @@ +{ stdenv, fetchFromGitHub, pkgconfig, cmake, curl, boost, eigen +, freeimage, freetype, libGLU, libGL, SDL2, alsaLib, libarchive +, fetchpatch }: + +stdenv.mkDerivation { + pname = "emulationstation"; + version = "2.0.1a"; + + src = fetchFromGitHub { + owner = "Aloshi"; + repo = "EmulationStation"; + rev = "646bede3d9ec0acf0ae378415edac136774a66c5"; + sha256 = "0cm0sq2wri2l9cvab1l0g02za59q7klj0h3p028vr96n6njj4w9v"; + }; + + patches = [ + (fetchpatch { + url = "https://github.com/Aloshi/EmulationStation/commit/49ccd8fc7a7b1dfd974fc57eb13317c42842f22c.patch"; + sha256 = "1v5d81l7bav0k5z4vybrc3rjcysph6lkm5pcfr6m42wlz7jmjw0p"; + }) + ]; + + nativeBuildInputs = [ pkgconfig cmake ]; + buildInputs = [ alsaLib boost curl eigen freeimage freetype libarchive libGLU libGL SDL2 ]; + + installPhase = '' + install -D ../emulationstation $out/bin/emulationstation + ''; + + enableParallelBuilding = true; + + meta = { + description = "A flexible emulator front-end supporting keyboardless navigation and custom system themes"; + homepage = "https://emulationstation.org"; + maintainers = [ stdenv.lib.maintainers.edwtjo ]; + license = stdenv.lib.licenses.mit; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/epsxe/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/epsxe/default.nix new file mode 100644 index 000000000000..493cf4c26287 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/epsxe/default.nix @@ -0,0 +1,52 @@ +{ stdenv, fetchurl, alsaLib, curl, gdk-pixbuf, glib, gtk3, libGLU, libGL, + libX11, openssl_1_0_2, ncurses5, SDL, SDL_ttf, unzip, zlib, wrapGAppsHook, autoPatchelfHook }: + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "epsxe"; + version = "2.0.5"; + + src = let + version2 = replaceStrings ["."] [""] version; + platform = "linux" + (optionalString stdenv.is64bit "_x64"); + in fetchurl { + url = "https://www.epsxe.com/files/ePSXe${version2}${platform}.zip"; + sha256 = if stdenv.is64bit + then "16fa9qc2xhaz1f6294m0b56s5l86cbmclwm9w3mqnch0yjsrvab0" + else "1677lclam557kp8jwvchdrk27zfj50fqx2q9i3bcx26d9k61q3kl"; + }; + + nativeBuildInputs = [ unzip wrapGAppsHook autoPatchelfHook ]; + sourceRoot = "."; + + buildInputs = [ + alsaLib + curl + gdk-pixbuf + glib + gtk3 + libX11 + libGLU libGL + openssl_1_0_2 + ncurses5 + SDL + SDL_ttf + stdenv.cc.cc.lib + zlib + ]; + + dontStrip = true; + + installPhase = '' + install -D ${if stdenv.is64bit then "epsxe_x64" else "ePSXe"} $out/bin/epsxe + ''; + + meta = { + homepage = "http://epsxe.com/"; + description = "Enhanced PSX (PlayStation 1) emulator"; + license = licenses.unfree; + maintainers = with maintainers; [ yegortimoshenko ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/fakenes/build.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fakenes/build.patch new file mode 100644 index 000000000000..90799d977a14 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fakenes/build.patch @@ -0,0 +1,84 @@ +diff --git a/build/openal.cbd b/build/openal.cbd +index d18e62d..74af061 100644 +--- a/build/openal.cbd ++++ b/build/openal.cbd +@@ -23,7 +23,7 @@ CFLAGS += ' -DUSE_OPENAL' + # -- + + do ifplat unix +- LDFLAGS += ' `openal-config --libs`' ++ LDFLAGS += ' -lopenal' + else + LDFLAGS += ' -lOpenAL32' + done +diff --git a/build/alleggl.cbd b/build/alleggl.cbd +index e2708ff..e826371 100644 +--- a/build/alleggl.cbd ++++ b/build/alleggl.cbd +@@ -22,7 +22,7 @@ CFLAGS += ' -DUSE_ALLEGROGL' + + # -- + +-LIBAGL = agl ++LIBAGL = alleggl + + ifopt debug LIBAGL = 'agld' + +diff --git a/src/apu.cpp b/src/apu.cpp +index af59f1c..893a798 100644 +--- a/src/apu.cpp ++++ b/src/apu.cpp +@@ -1930,7 +1930,7 @@ static void amplify(real& sample) + gain -= releaseRate; + } + +- real output = (1.0 / max(gain, EPSILON)); ++ real output = (1.0 / MAX(gain, EPSILON)); + output = fixf(output, apu_agc_gain_floor, apu_agc_gain_ceiling); + sample *= output; + } +diff --git a/src/audio.cpp b/src/audio.cpp +index b9650dc..c21c05e 100644 +--- a/src/audio.cpp ++++ b/src/audio.cpp +@@ -7,6 +7,7 @@ + You must read and accept the license prior to use. */ + + #include <allegro.h> ++#include <cstdio> + #include <cstdlib> + #include <cstring> + #include <vector> +@@ -234,7 +235,7 @@ void audio_update(void) + const unsigned queuedFrames = (audioQueue.size() / audio_channels); + if(queuedFrames > 0) { + // Determine how many frames we want to make room for. +- const unsigned framesToAdd = min(queuedFrames, audio_buffer_size_frames); ++ const unsigned framesToAdd = MIN(queuedFrames, audio_buffer_size_frames); + // Make room for the frames in the buffer. + const unsigned framesToMove = (audioBufferedFrames - framesToAdd); + if(framesToMove > 0) { +@@ -258,7 +259,7 @@ void audio_update(void) + // Determine how many frames are available in the buffer. + const unsigned bufferableFrames = (audio_buffer_size_frames - audioBufferedFrames); + // Determine the number of frames to copy to the buffer. +- const unsigned framesToCopy = min(queuedFrames, bufferableFrames); ++ const unsigned framesToCopy = MIN(queuedFrames, bufferableFrames); + + // Copy frames to the buffer. + for(unsigned frame = 0; frame < framesToCopy; frame++) { +diff --git a/src/include/common.h b/src/include/common.h +index be28795..e2d21d1 100644 +--- a/src/include/common.h ++++ b/src/include/common.h +@@ -41,8 +41,10 @@ extern "C" { + #define true TRUE + #define false FALSE + ++/* + #define min(x,y) MIN((x),(y)) + #define max(x,y) MAX((x),(y)) ++*/ + + #define true_or_false(x) ((x) ? true : false) + diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/fakenes/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fakenes/default.nix new file mode 100644 index 000000000000..d7c8a185a090 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fakenes/default.nix @@ -0,0 +1,32 @@ +{stdenv, fetchurl, allegro, openal, libGLU, libGL, zlib, hawknl, freeglut, libX11, + libXxf86vm, libXcursor, libXpm }: + +stdenv.mkDerivation { + name = "fakenes-0.5.9b3"; + src = fetchurl { + url = "mirror://sourceforge/fakenes/fakenes-0.5.9-beta3.tar.gz"; + sha256 = "026h67s4pzc1vma59pmzk02iy379255qbai2q74wln9bxqcpniy4"; + }; + + buildInputs = [ allegro openal libGLU libGL zlib hawknl freeglut libX11 + libXxf86vm libXcursor libXpm ]; + + hardeningDisable = [ "format" ]; + + installPhase = '' + mkdir -p $out/bin + cp fakenes $out/bin + ''; + + NIX_LDFLAGS = "-lX11 -lXxf86vm -lXcursor -lXpm"; + + patches = [ ./build.patch ]; + + meta = { + homepage = "http://fakenes.sourceforge.net/"; + license = stdenv.lib.licenses.gpl2Plus; + description = "Portable Open Source NES Emulator"; + platforms = stdenv.lib.platforms.linux; + broken = true; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/fceux/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fceux/default.nix new file mode 100644 index 000000000000..0d4b4cd35762 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fceux/default.nix @@ -0,0 +1,40 @@ +{stdenv, fetchFromGitHub, scons, zlib, SDL, lua5_1, pkgconfig}: + +stdenv.mkDerivation { + pname = "fceux-unstable"; + version = "2020-01-29"; + + src = fetchFromGitHub { + owner = "TASVideos"; + repo = "fceux"; + rev = "fb8d46d9697cb24b0ebe79d84eedf282f69ab337"; + sha256 = "0gpz411dzfwx9mr34yi4zb1hphd5hha1nvwgzxki0sviwafca992"; + }; + + nativeBuildInputs = [ pkgconfig scons ]; + buildInputs = [ + zlib SDL lua5_1 + ]; + + sconsFlags = "OPENGL=false GTK=false CREATE_AVI=false LOGO=false"; + prefixKey = "--prefix="; + + # sed allows scons to find libraries in nix. + # mkdir is a hack to make scons succeed. It still doesn't + # actually put the files in there due to a bug in the SConstruct file. + # OPENGL doesn't work because fceux dlopens the library. + preBuild = '' + sed -e 's/env *= *Environment *.*/&; env['"'"'ENV'"'"']=os.environ;/' -i SConstruct + export CC="gcc" + export CXX="g++" + mkdir -p "$out" "$out/share/applications" "$out/share/pixmaps" + ''; + + meta = { + description = "A Nintendo Entertainment System (NES) Emulator"; + license = stdenv.lib.licenses.gpl2; + maintainers = [ stdenv.lib.maintainers.scubed2 ]; + homepage = "http://www.fceux.com/"; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/firebird-emu/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/firebird-emu/default.nix new file mode 100644 index 000000000000..888cfea0204e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/firebird-emu/default.nix @@ -0,0 +1,38 @@ +{ mkDerivation, stdenv, fetchFromGitHub, qmake, qtbase, qtdeclarative }: + +mkDerivation rec { + pname = "firebird-emu"; + version = "1.4"; + + src = fetchFromGitHub { + owner = "nspire-emus"; + repo = "firebird"; + rev = "v${version}"; + sha256 = "0pdca6bgnmzfgf5kp83as99y348gn4plzbxnqxjs61vp489baahq"; + fetchSubmodules = true; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ qmake ]; + + buildInputs = [ qtbase qtdeclarative ]; + + makeFlags = [ "INSTALL_ROOT=$(out)" ]; + + # Attempts to install to /usr/bin and /usr/share/applications, which Nix does + # not use. + prePatch = '' + substituteInPlace firebird.pro \ + --replace '/usr/' '/' + ''; + + meta = { + homepage = "https://github.com/nspire-emus/firebird"; + description = "Third-party multi-platform emulator of the ARM-based TI-Nspireâ„¢ calculators"; + license = stdenv.lib.licenses.gpl3; + maintainers = with stdenv.lib.maintainers; [ pneumaticat ]; + # Only tested on Linux, but likely possible to build on, e.g. macOS + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/fs-uae/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fs-uae/default.nix new file mode 100644 index 000000000000..214c1e6e75b8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fs-uae/default.nix @@ -0,0 +1,32 @@ +{ stdenv, fetchurl, pkgconfig +, gettext, gtk2, SDL2, zlib, glib, openal, libGLU, libGL, lua, freetype, libmpeg2, zip }: + +with stdenv.lib; +stdenv.mkDerivation rec { + + pname = "fs-uae"; + version = "3.0.5"; + + src = fetchurl { + url = "https://fs-uae.net/stable/${version}/${pname}-${version}.tar.gz"; + sha256 = "1qwzhp34wy7bnd3c0plv11rg9fs5m92rh3ffnr9pn6ng0cpc8vpj"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gettext gtk2 SDL2 zlib glib openal libGLU libGL lua freetype libmpeg2 zip ]; + + meta = { + description = "An accurate, customizable Amiga Emulator"; + longDescription = '' + FS-UAE integrates the most accurate Amiga emulation code available + from WinUAE. FS-UAE emulates A500, A500+, A600, A1200, A1000, A3000 + and A4000 models, but you can tweak the hardware configuration and + create customized Amigas. + ''; + license = licenses.gpl2Plus; + homepage = "https://fs-uae.net"; + maintainers = with stdenv.lib; [ maintainers.AndersonTorres ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} +# TODO: testing and Python GUI support diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/fuse-emulator/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fuse-emulator/default.nix new file mode 100644 index 000000000000..e2334a62a134 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/fuse-emulator/default.nix @@ -0,0 +1,29 @@ +{ lib, stdenv, fetchurl, perl, pkgconfig, wrapGAppsHook +, SDL, bzip2, glib, gtk3, libgcrypt, libpng, libspectrum, libxml2, zlib +}: + +stdenv.mkDerivation rec { + pname = "fuse-emulator"; + version = "1.5.7"; + + src = fetchurl { + url = "mirror://sourceforge/${pname}/fuse-${version}.tar.gz"; + sha256 = "0kaynjr28w42n3iha60mgr7nxm49w8j0v49plyrc7ka24qzmiqph"; + }; + + nativeBuildInputs = [ perl pkgconfig wrapGAppsHook ]; + + buildInputs = [ SDL bzip2 glib gtk3 libgcrypt libpng libspectrum libxml2 zlib ]; + + configureFlags = [ "--enable-desktop-integration" ]; + + enableParallelBuilding = true; + + meta = with lib; { + homepage = "http://fuse-emulator.sourceforge.net/"; + description = "ZX Spectrum emulator"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + maintainers = with maintainers; [ orivej ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/gens-gs/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/gens-gs/default.nix new file mode 100644 index 000000000000..a9449808d527 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/gens-gs/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, pkgconfig, gtk2, SDL, nasm, zlib, libpng, libGLU, libGL }: + +stdenv.mkDerivation { + name = "gens-gs-7"; + + src = fetchurl { + url = "http://retrocdn.net/images/6/6d/Gens-gs-r7.tar.gz"; + sha256 = "1ha5s6d3y7s9aq9f4zmn9p88109c3mrj36z2w68jhiw5xrxws833"; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 SDL nasm zlib libpng libGLU libGL ]; + + # Work around build failures on recent GTK. + # See http://ubuntuforums.org/showthread.php?p=10535837 + NIX_CFLAGS_COMPILE = "-UGTK_DISABLE_DEPRECATED -UGSEAL_ENABLE"; + + meta = with stdenv.lib; { + homepage = "https://segaretro.org/Gens/GS"; + description = "A Genesis/Mega Drive emulator"; + platforms = [ "i686-linux" ]; + license = licenses.gpl2Plus; + maintainers = [ maintainers.eelco ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/gxemul/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/gxemul/default.nix new file mode 100644 index 000000000000..8671056d14eb --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/gxemul/default.nix @@ -0,0 +1,35 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "gxemul"; + version = "0.6.2"; + + src = fetchurl { + url = "http://gavare.se/gxemul/src/gxemul-${version}.tar.gz"; + sha256 = "0iqmazfn7ss5n27m1a9n9nps3vzhag1phzb7qw0wgczycmwsq0x7"; + }; + + configurePhase = "./configure"; + + installPhase = '' + mkdir -p {$out/bin,$out/share/${pname}-${version}} + cp -r {doc,demos} $out/share/${pname}-${version} + cp gxemul $out/bin + cp -r ./man $out + ''; + + meta = with stdenv.lib; { + homepage = "http://gavare.se/gxemul/"; + description = "Gavare's experimental emulator"; + longDescription = '' + GXemul is a framework for full-system computer architecture + emulation. Several real machines have been implemented within the + framework, consisting of processors (ARM, MIPS, Motorola 88K, + PowerPC, and SuperH) and surrounding hardware components such as + framebuffers, interrupt controllers, busses, disk controllers, + and serial controllers. The emulation is working well enough to + allow several unmodified "guest" operating systems to run. + ''; + license = licenses.bsd3; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/hatari/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/hatari/default.nix new file mode 100644 index 000000000000..db1a6664c542 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/hatari/default.nix @@ -0,0 +1,23 @@ +{ stdenv, fetchurl, zlib, SDL, cmake }: + +stdenv.mkDerivation rec { + name = "hatari-2.2.1"; + + src = fetchurl { + url = "https://download.tuxfamily.org/hatari/2.2.1/${name}.tar.bz2"; + sha256 = "0q3g23vnx58w666723v76ilh9j353md3sn48cmlq9gkll8qfzbqi"; + }; + + # For pthread_cancel + cmakeFlags = [ "-DCMAKE_EXE_LINKER_FLAGS=-lgcc_s" ]; + + buildInputs = [ zlib SDL cmake ]; + + meta = { + homepage = "http://hatari.tuxfamily.org/"; + description = "Atari ST/STE/TT/Falcon emulator"; + license = stdenv.lib.licenses.gpl2Plus; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/higan/0001-change-flags.diff b/infra/libkookie/nixpkgs/pkgs/misc/emulators/higan/0001-change-flags.diff new file mode 100644 index 000000000000..745bba5d518d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/higan/0001-change-flags.diff @@ -0,0 +1,25 @@ +diff -Naur higan-110-old/higan/GNUmakefile higan-110-new/higan/GNUmakefile +--- higan-110-old/higan/GNUmakefile 2020-04-15 11:06:00.279935557 -0300 ++++ higan-110-new/higan/GNUmakefile 2020-04-15 11:08:32.982417291 -0300 +@@ -11,7 +11,7 @@ + include $(nall.path)/GNUmakefile + + ifeq ($(platform),local) +- flags += -march=native ++ flags += + endif + + ifeq ($(platform),windows) +diff -Naur higan-110-old/nall/GNUmakefile higan-110-new/nall/GNUmakefile +--- higan-110-old/nall/GNUmakefile 2020-04-15 11:06:00.396935154 -0300 ++++ higan-110-new/nall/GNUmakefile 2020-04-15 11:10:37.738011488 -0300 +@@ -127,7 +127,8 @@ + + # linux settings + ifeq ($(platform),linux) +- options += -ldl ++ flags += $(CXXFLAGS) ++ options += $(LDFLAGS) -ldl + endif + + # bsd settings diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/higan/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/higan/default.nix new file mode 100644 index 000000000000..e735bdb38eed --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/higan/default.nix @@ -0,0 +1,135 @@ +{ stdenv, fetchFromGitHub +, pkgconfig +, libX11, libXv +, udev +, libGLU, libGL, SDL2 +, libao, openal, libpulseaudio +, alsaLib +, gtk2, gtksourceview +, runtimeShell +# Darwin dependencies +, libicns, Carbon, Cocoa, OpenGL, OpenAL}: + +let + inherit (stdenv.lib) optionals; +in +stdenv.mkDerivation rec { + + pname = "higan"; + version = "110"; + + src = fetchFromGitHub { + owner = "higan-emu"; + repo = "higan"; + rev = "v${version}"; + sha256 = "11rvm53c3p2f6zk8xbyv2j51xp8zmqnch7zravhj3fk590qrjrr2"; + }; + + patches = [ ./0001-change-flags.diff ]; + postPatch = '' + sed '1i#include <cmath>' -i higan/fc/ppu/ppu.cpp + + for file in icarus/GNUmakefile higan/target-higan/GNUmakefile; do + substituteInPlace "$file" \ + --replace 'sips -s format icns data/$(name).png --out out/$(name).app/Contents/Resources/$(name).icns' \ + 'png2icns out/$(name).app/Contents/Resources/$(name).icns data/$(name).png' + done + ''; + + nativeBuildInputs = [ pkgconfig ] + ++ optionals stdenv.isDarwin [ libicns ]; + + buildInputs = [ SDL2 libao ] + ++ optionals stdenv.isLinux [ alsaLib udev libpulseaudio openal + gtk2 gtksourceview libX11 libXv + libGLU libGL ] + ++ optionals stdenv.isDarwin [ Carbon Cocoa OpenGL OpenAL ]; + + buildPhase = '' + make compiler=c++ -C higan openmp=true target=higan + make compiler=c++ -C genius openmp=true + make compiler=c++ -C icarus openmp=true + ''; + + installPhase = (if stdenv.isDarwin then '' + mkdir "$out" + mv higan/out/higan.app "$out"/ + mv icarus/out/icarus.app "$out"/ + mv genius/out/genius.app "$out"/ + '' else '' + install -dm 755 "$out"/bin "$out"/share/applications "$out"/share/pixmaps + + install -m 755 higan/out/higan -t "$out"/bin/ + install -m 644 higan/target-higan/resource/higan.desktop \ + -t $out/share/applications/ + install -m 644 higan/target-higan/resource/higan.svg \ + $out/share/pixmaps/higan-icon.svg + install -m 644 higan/target-higan/resource/higan.png \ + $out/share/pixmaps/higan-icon.png + + install -m 755 icarus/out/icarus -t "$out"/bin/ + install -m 644 icarus/data/icarus.desktop -t $out/share/applications/ + install -m 644 icarus/data/icarus.svg $out/share/pixmaps/icarus-icon.svg + install -m 644 icarus/data/icarus.png $out/share/pixmaps/icarus-icon.png + + install -m 755 genius/out/genius -t "$out"/bin/ + install -m 644 genius/data/genius.desktop -t $out/share/applications/ + install -m 644 genius/data/genius.svg $out/share/pixmaps/genius-icon.svg + install -m 644 genius/data/genius.png $out/share/pixmaps/genius-icon.png + '') + '' + mkdir -p "$out"/share/higan "$out"/share/icarus + cp --recursive --no-dereference --preserve='links' --no-preserve='ownership' \ + higan/System/ "$out"/share/higan/ + cp --recursive --no-dereference --preserve='links' --no-preserve='ownership' \ + icarus/Database icarus/Firmware $out/share/icarus/ + ''; + + fixupPhase = let + dest = if stdenv.isDarwin + then "\\$HOME/Library/Application Support/higan" + else "\\$HOME/higan"; + in '' + # A dirty workaround, suggested by @cpages: + # we create a first-run script to populate + # $HOME with all the stuff needed at runtime + + mkdir -p "$out"/bin + cat <<EOF > $out/bin/higan-init.sh + #!${runtimeShell} + + cp --recursive --update $out/share/higan/System/ "${dest}"/ + + EOF + + chmod +x $out/bin/higan-init.sh + ''; + + meta = with stdenv.lib; { + description = "An open-source, cycle-accurate multi-system emulator"; + longDescription = '' + higan is a multi-system game console emulator. The purpose of higan is to + serve as hardware documentation in source code form: it is meant to be as + accurate and complete as possible, with code that is easy to read and + understand. + + It currently supports the following systems: + - Famicom + Famicom Disk System + - Super Famicom + Super Game Boy + - Game Boy + Game Boy Color + - Game Boy Advance + Game Boy Player + - SG-1000 + SC-3000 + - Master System + Game Gear + - Mega Drive + Mega CD + - PC Engine + SuperGrafx + - MSX + MSX2 + - ColecoVision + - Neo Geo Pocket + Neo Geo Pocket Color + - WonderSwan + WonderSwan Color + SwanCrystal + Pocket Challenge V2 + ''; + homepage = "https://byuu.org/higan/"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.unix; + }; +} +# TODO: Qt and GTK3+ support diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/kega-fusion/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/kega-fusion/default.nix new file mode 100644 index 000000000000..0b6fb0dea54d --- /dev/null +++ b/infra/libkookie/nixpkgs/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, runtimeShell }: + +let + libPath = lib.makeLibraryPath [ stdenv.cc.cc libGLU glib gtk2 alsaLib libSM libX11 gdk-pixbuf pango libXinerama ]; + +in stdenv.mkDerivation { + pname = "kega-fusion"; + 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" '' + #!${runtimeShell} -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 = "https://www.carpeludum.com/kega-fusion/"; + maintainers = with maintainers; [ abbradar ]; + license = licenses.unfreeRedistributable; + platforms = [ "i686-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/libdsk/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/libdsk/default.nix new file mode 100644 index 000000000000..6a2f94e77e6c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/libdsk/default.nix @@ -0,0 +1,19 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "libdsk"; + version = "1.5.12"; + + src = fetchurl { + url = "https://www.seasip.info/Unix/LibDsk/${pname}-${version}.tar.gz"; + sha256 = "0s2k9vkrf95pf4ydc6vazb29ysrnhdpcfjnf17lpk4nmlv1j3vyv"; + }; + + meta = with stdenv.lib; { + description = "A library for accessing discs and disc image files"; + homepage = "http://www.seasip.info/Unix/LibDsk/"; + license = licenses.gpl2Plus; + maintainers = [ maintainers.genesis ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/mame/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mame/default.nix new file mode 100644 index 000000000000..3033ce8dc7b1 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mame/default.nix @@ -0,0 +1,89 @@ +{ stdenv, mkDerivation, fetchFromGitHub, makeDesktopItem, makeWrapper +, python, pkgconfig, SDL2, SDL2_ttf, alsaLib, which, qtbase, libXinerama +, libpcap, CoreAudioKit, ForceFeedback +, installShellFiles }: + +with stdenv; + +let + majorVersion = "0"; + minorVersion = "225"; + + desktopItem = makeDesktopItem { + name = "MAME"; + exec = "mame${lib.optionalString stdenv.is64bit "64"}"; + desktopName = "MAME"; + genericName = "MAME is a multi-purpose emulation framework"; + categories = "System;Emulator;"; + }; + + dest = "$out/opt/mame"; +in mkDerivation { + pname = "mame"; + version = "${majorVersion}.${minorVersion}"; + + src = fetchFromGitHub { + owner = "mamedev"; + repo = "mame"; + rev = "mame${majorVersion}${minorVersion}"; + sha256 = "0ln5z8xp81j2af2s94dixnk9n68qpi6b3plynp3pharg6dd55yac"; + }; + + hardeningDisable = [ "fortify" ]; + NIX_CFLAGS_COMPILE = [ "-Wno-error=maybe-uninitialized" "-Wno-error=missing-braces" ]; + + makeFlags = [ + "TOOLS=1" + "USE_LIBSDL=1" + ] + ++ lib.optionals stdenv.cc.isClang [ "CC=clang" "CXX=clang++" ] + ; + + dontWrapQtApps = true; + + buildInputs = + [ SDL2 SDL2_ttf qtbase libXinerama ] + ++ lib.optional stdenv.isLinux alsaLib + ++ lib.optionals stdenv.isDarwin [ libpcap CoreAudioKit ForceFeedback ] + ; + nativeBuildInputs = [ python pkgconfig which makeWrapper installShellFiles ]; + + # by default MAME assumes that paths with stock resources + # are relative and that you run MAME changing to + # install directory, so we add absolute paths here + patches = [ + ./emuopts.patch + ]; + + postPatch = '' + substituteInPlace src/emu/emuopts.cpp \ + --subst-var-by mame ${dest} + ''; + + installPhase = '' + make -f dist.mak PTR64=${stdenv.lib.optionalString stdenv.is64bit "1"} + mkdir -p ${dest} + mv build/release/*/Release/mame/* ${dest} + + mkdir -p $out/bin + find ${dest} -maxdepth 1 -executable -type f -exec mv -t $out/bin {} \; + install -Dm755 src/osd/sdl/taputil.sh $out/bin/taputil.sh + + installManPage ${dest}/docs/man/*.1 ${dest}/docs/man/*.6 + + mv artwork plugins samples ${dest} + '' + lib.optionalString stdenv.isLinux '' + mkdir -p $out/share + ln -s ${desktopItem}/share/applications $out/share + ''; + + meta = with lib; { + description = "Is a multi-purpose emulation framework"; + homepage = "https://www.mamedev.org/"; + license = with licenses; [ bsd3 gpl2Plus ]; + platforms = platforms.unix; + # makefile needs fixes for install target + badPlatforms = [ "aarch64-linux" ]; + maintainers = with maintainers; [ gnidorah ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/mame/emuopts.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mame/emuopts.patch new file mode 100644 index 000000000000..b85291f52f74 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mame/emuopts.patch @@ -0,0 +1,29 @@ +diff --git a/src/emu/emuopts.cpp b/src/emu/emuopts.cpp +index c42fcef848..d1bddae060 100644 +--- a/src/emu/emuopts.cpp ++++ b/src/emu/emuopts.cpp +@@ -36,16 +36,16 @@ const options_entry emu_options::s_option_entries[] = + { nullptr, nullptr, OPTION_HEADER, "CORE SEARCH PATH OPTIONS" }, + { OPTION_HOMEPATH, ".", OPTION_STRING, "path to base folder for plugin data (read/write)" }, + { OPTION_MEDIAPATH ";rp;biospath;bp", "roms", OPTION_STRING, "path to ROM sets and hard disk images" }, +- { OPTION_HASHPATH ";hash_directory;hash", "hash", OPTION_STRING, "path to software definition files" }, +- { OPTION_SAMPLEPATH ";sp", "samples", OPTION_STRING, "path to audio sample sets" }, +- { OPTION_ARTPATH, "artwork", OPTION_STRING, "path to artwork files" }, +- { OPTION_CTRLRPATH, "ctrlr", OPTION_STRING, "path to controller definitions" }, +- { OPTION_INIPATH, ".;ini;ini/presets", OPTION_STRING, "path to ini files" }, +- { OPTION_FONTPATH, ".", OPTION_STRING, "path to font files" }, ++ { OPTION_HASHPATH ";hash_directory;hash", "hash;@mame@/hash", OPTION_STRING, "path to software definition files" }, ++ { OPTION_SAMPLEPATH ";sp", "samples;@mame@/samples", OPTION_STRING, "path to audio sample sets" }, ++ { OPTION_ARTPATH, "artwork;@mame@/artwork", OPTION_STRING, "path to artwork files" }, ++ { OPTION_CTRLRPATH, "ctrlr;@mame@/ctrlr", OPTION_STRING, "path to controller definitions" }, ++ { OPTION_INIPATH, ".;ini;ini/presets;@mame@/ini/presets", OPTION_STRING, "path to ini files" }, ++ { OPTION_FONTPATH, ".;@mame@", OPTION_STRING, "path to font files" }, + { OPTION_CHEATPATH, "cheat", OPTION_STRING, "path to cheat files" }, + { OPTION_CROSSHAIRPATH, "crosshair", OPTION_STRING, "path to crosshair files" }, +- { OPTION_PLUGINSPATH, "plugins", OPTION_STRING, "path to plugin files" }, +- { OPTION_LANGUAGEPATH, "language", OPTION_STRING, "path to UI translation files" }, ++ { OPTION_PLUGINSPATH, "plugins;@mame@/plugins", OPTION_STRING, "path to plugin files" }, ++ { OPTION_LANGUAGEPATH, "language;@mame@/language", OPTION_STRING, "path to UI translation files" }, + { OPTION_SWPATH, "software", OPTION_STRING, "path to loose software" }, + + // output directory options diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/mednafen/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mednafen/default.nix new file mode 100644 index 000000000000..e356e636c5a2 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mednafen/default.nix @@ -0,0 +1,74 @@ +{ stdenv, fetchurl, pkgconfig, freeglut, libGLU, libGL, libcdio, libjack2 +, libsamplerate, libsndfile, libX11, SDL2, SDL2_net, zlib, alsaLib }: + +stdenv.mkDerivation rec { + pname = "mednafen"; + version = "1.24.3"; + + src = fetchurl { + url = "https://mednafen.github.io/releases/files/${pname}-${version}.tar.xz"; + sha256 = "03zplcfvmnnv7grhacmr1zy789pb2wda36wylmzmar23g0zqbsix"; + }; + + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ + freeglut + libGLU libGL + libcdio + libjack2 + alsaLib + libsamplerate + libsndfile + libX11 + SDL2 + SDL2_net + zlib + ]; + + hardeningDisable = [ "pic" ]; + + postInstall = '' + mkdir -p $out/share/doc + mv Documentation $out/share/doc/mednafen + ''; + + meta = with stdenv.lib; { + description = "A portable, CLI-driven, SDL+OpenGL-based, multi-system emulator"; + longDescription = '' + Mednafen is a portable, utilizing OpenGL and SDL, + argument(command-line)-driven multi-system emulator. Mednafen has the + ability to remap hotkey functions and virtual system inputs to a keyboard, + a joystick, or both simultaneously. Save states are supported, as is + real-time game rewinding. Screen snapshots may be taken, in the PNG file + format, at the press of a button. Mednafen can record audiovisual movies + in the QuickTime file format, with several different lossless codecs + supported. + + The following systems are supported (refer to the emulation module + documentation for more details): + + - Apple II/II+ + - Atari Lynx + - Neo Geo Pocket (Color) + - WonderSwan + - GameBoy (Color) + - GameBoy Advance + - Nintendo Entertainment System + - Super Nintendo Entertainment System/Super Famicom + - Virtual Boy + - PC Engine/TurboGrafx 16 (CD) + - SuperGrafx + - PC-FX + - Sega Game Gear + - Sega Genesis/Megadrive + - Sega Master System + - Sega Saturn (experimental, x86_64 only) + - Sony PlayStation + ''; + homepage = "https://mednafen.github.io/"; + license = licenses.gpl2; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/mednafen/server.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mednafen/server.nix new file mode 100644 index 000000000000..9a1edc00452d --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mednafen/server.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl }: + +stdenv.mkDerivation rec { + pname = "mednafen-server"; + version = "0.5.2"; + + src = fetchurl { + url = "https://mednafen.github.io/releases/files/mednafen-server-${version}.tar.xz"; + sha256 = "0xm7dj5nwnrsv69r72rcnlw03jm0l8rmrg3s05gjfvxyqmlb36dq"; + }; + + postInstall = "install -m 644 -Dt $out/share/mednafen-server standard.conf"; + + meta = with stdenv.lib; { + description = "Netplay server for Mednafen"; + homepage = "https://mednafen.github.io/"; + license = licenses.gpl2; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/mednaffe/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mednaffe/default.nix new file mode 100644 index 000000000000..7e231c5edd3a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mednaffe/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchFromGitHub, makeWrapper, autoreconfHook, pkgconfig, wrapGAppsHook +, gtk2 ? null, gtk3 ? null, mednafen }: + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "mednaffe"; + version = "0.8.8"; + + src = fetchFromGitHub { + owner = "AmatCoder"; + repo = "mednaffe"; + rev = "${version}"; + sha256 = "15qk3a3l1phr8bap2ayh3c0vyvw2jwhny1iz1ajq2adyjpm9fhr7"; + }; + + nativeBuildInputs = [ autoreconfHook makeWrapper pkgconfig wrapGAppsHook ]; + buildInputs = [ gtk2 gtk3 mednafen ]; + + configureFlags = [ (enableFeature (gtk3 != null) "gtk3") ]; + postInstall = "wrapProgram $out/bin/mednaffe --set PATH ${mednafen}/bin"; + + meta = { + description = "GTK-based frontend for mednafen emulator"; + homepage = "https://github.com/AmatCoder/mednaffe"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ sheenobu yegortimoshenko AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/melonDS/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/melonDS/default.nix new file mode 100644 index 000000000000..94fbeba0e075 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/melonDS/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchFromGitHub, cmake, pkgconfig, SDL2, gtk3, libpcap, wrapGAppsHook }: + +stdenv.mkDerivation rec { + pname = "melonDS"; + version = "0.8.3"; + ## When updating to the release after 0.8.3, + ## - Uncomment: + ## cmakeFlags = [ "-UUNIX_PORTABLE" ]; + ## - Remove the postInstall, since cmake should then take care of installing icons, .desktop file, and romlist.bin + ## (see https://github.com/Arisotura/melonDS/pull/546) + + src = fetchFromGitHub { + owner = "Arisotura"; + repo = pname; + rev = version; + sha256 = "1lqmfwjpkdqfkns1aaxlp4yrg6i0r66mxfr4rrj7b5286k44hqwn"; + }; + + enableParallelBuilding = true; + nativeBuildInputs = [ cmake pkgconfig wrapGAppsHook ]; + buildInputs = [ SDL2 gtk3 libpcap ]; + + postInstall = '' + install -Dm644 -t $out/share/melonDS/ ../romlist.bin + install -Dm644 -t $out/share/applications/ ../flatpak/*.desktop + + for i in ../icon/melon_*.png; do + d="''${i##*_}" + d="$out/share/icons/hicolor/''${d%.png}/apps" + install -D $i "$d/net.kuribo64.melonds.png" + done + ''; + + meta = with stdenv.lib; { + homepage = "http://melonds.kuribo64.net/"; + description = "Work in progress Nintendo DS emulator"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ artemist benley ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/mgba/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mgba/default.nix new file mode 100644 index 000000000000..73845581b1bf --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mgba/default.nix @@ -0,0 +1,63 @@ +{ stdenv, fetchFromGitHub, makeDesktopItem, wrapQtAppsHook, pkgconfig +, cmake, epoxy, libzip, libelf, libedit, ffmpeg_3, SDL2, imagemagick +, qtbase, qtmultimedia, qttools, minizip }: + +let + desktopItem = makeDesktopItem { + name = "mgba"; + exec = "mgba-qt"; + icon = "mgba"; + comment = "A Game Boy Advance Emulator"; + desktopName = "mgba"; + genericName = "Game Boy Advance Emulator"; + categories = "Game;Emulator;"; + startupNotify = "false"; + }; +in stdenv.mkDerivation rec { + pname = "mgba"; + version = "0.8.3"; + + src = fetchFromGitHub { + owner = "mgba-emu"; + repo = "mgba"; + rev = version; + sha256 = "0rwlfjdr0rzbq4kaplvwsgyb8xq6nrzxss2c8xrgw9hqw3ymx4s3"; + }; + + enableParallelBuilding = true; + nativeBuildInputs = [ wrapQtAppsHook pkgconfig cmake ]; + + buildInputs = [ + epoxy libzip libelf libedit ffmpeg_3 SDL2 imagemagick + qtbase qtmultimedia qttools minizip + ]; + + postInstall = '' + cp -r ${desktopItem}/share/applications $out/share + ''; + + meta = with stdenv.lib; { + homepage = "https://mgba.io"; + description = "A modern GBA emulator with a focus on accuracy"; + + longDescription = '' + mGBA is a new Game Boy Advance emulator written in C. + + The project started in April 2013 with the goal of being fast + enough to run on lower end hardware than other emulators + support, without sacrificing accuracy or portability. Even in + the initial version, games generally play without problems. It + is loosely based on the previous GBA.js emulator, although very + little of GBA.js can still be seen in mGBA. + + Other goals include accurate enough emulation to provide a + development environment for homebrew software, a good workflow + for tool-assist runners, and a modern feature set for emulators + that older emulators may not support. + ''; + + license = licenses.mpl20; + maintainers = with maintainers; [ MP2E AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/mupen64plus/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mupen64plus/default.nix new file mode 100644 index 000000000000..621559627a75 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/mupen64plus/default.nix @@ -0,0 +1,29 @@ +{stdenv, fetchurl, boost, dash, freetype, libpng, pkgconfig, SDL, which, zlib, nasm }: + +stdenv.mkDerivation rec { + pname = "mupen64plus"; + version = "2.5.9"; + + src = fetchurl { + url = "https://github.com/mupen64plus/mupen64plus-core/releases/download/${version}/mupen64plus-bundle-src-${version}.tar.gz"; + sha256 = "1a21n4gqdvag6krwcjm5bnyw5phrlxw6m0mk73jy53iq03f3s96m"; + }; + + nativeBuildInputs = [ pkgconfig nasm ]; + buildInputs = [ boost dash freetype libpng SDL which zlib ]; + + buildPhase = '' + dash m64p_build.sh PREFIX="$out" COREDIR="$out/lib/" PLUGINDIR="$out/lib/mupen64plus" SHAREDIR="$out/share/mupen64plus" + ''; + installPhase = '' + dash m64p_install.sh DESTDIR="$out" PREFIX="" + ''; + + meta = with stdenv.lib; { + description = "A Nintendo 64 Emulator"; + license = licenses.gpl2Plus; + homepage = "http://www.mupen64plus.org/"; + maintainers = [ maintainers.sander ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/nestopia/build-fix.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/nestopia/build-fix.patch new file mode 100644 index 000000000000..a7d82ead15ca --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/nestopia/build-fix.patch @@ -0,0 +1,18 @@ +diff -wbBur rdanbrook-nestopia-f1dde9b/Makefile rdanbrook-nestopia-f1dde9b.my/Makefile +--- rdanbrook-nestopia-f1dde9b/Makefile 2013-01-20 20:10:25.000000000 +0400 ++++ rdanbrook-nestopia-f1dde9b.my/Makefile 2013-01-21 15:18:54.727577673 +0400 +@@ -197,11 +197,11 @@ + install -m 0644 NstDatabase.xml $(DATADIR) + install -m 0644 source/unix/icons/*.png $(DATADIR)/icons + install -m 0644 source/unix/icons/*.svg $(DATADIR)/icons +- install -m 0644 source/unix/icons/nestopia.svg $(PREFIX)/share/pixmaps +- xdg-desktop-menu install --novendor $(DATADIR)/nestopia.desktop ++ install -m 0644 source/unix/icons/nestopia.svg $(PREFIX)/share/pixmaps/nestopia.svg ++ install -Dm0644 $(DATADIR)/nestopia.desktop $(PREFIX)/share/applications/nestopia.desktop + + uninstall: +- xdg-desktop-menu uninstall $(DATADIR)/nestopia.desktop ++ rm $(PREFIX)/share/applications/nestopia.desktop + rm $(PREFIX)/share/pixmaps/nestopia.svg + rm $(BINDIR)/$(BIN) + rm -rf $(DATADIR) diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/nestopia/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/nestopia/default.nix new file mode 100644 index 000000000000..5050df007f6a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/nestopia/default.nix @@ -0,0 +1,72 @@ +{ stdenv, fetchFromGitHub, pkgconfig, SDL2, alsaLib, gtk3 +, makeWrapper, libGLU, libGL, libarchive, libao, unzip, xdg_utils +, epoxy, gdk-pixbuf, gnome3, wrapGAppsHook +}: + +stdenv.mkDerivation rec { + version = "1.47"; + pname = "nestopia"; + + src = fetchFromGitHub { + owner = "rdanbrook"; + repo = "nestopia"; + rev = version; + sha256 = "0frr0gvjh5mxzdhj0ii3sh671slgnzlm8naqlc4h87rx4p4sz2y2"; + }; + + # nondeterministic failures when creating directories + enableParallelBuilding = false; + + hardeningDisable = [ "format" ]; + + buildInputs = [ + SDL2 + alsaLib + epoxy + gtk3 + gdk-pixbuf + libGLU libGL + libarchive + libao + unzip + xdg_utils + gnome3.adwaita-icon-theme + ]; + + nativeBuildInputs = [ + pkgconfig + makeWrapper + wrapGAppsHook + ]; + + installPhase = '' + mkdir -p $out/{bin,share/nestopia} + make install PREFIX=$out + ''; + + preFixup = '' + for f in $out/bin/*; do + wrapProgram $f \ + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:$out/share" + done + ''; + + patches = [ + #(fetchpatch { + # url = "https://github.com/rdanbrook/nestopia/commit/f4bc74ac4954328b25e961e7afb7337377084079.patch"; + # name = "gcc6.patch"; + # sha256 = "1jy0c85xsfk9hrv5a6v0kk48d94864qb62yyni9fp93kyl33y2p4"; + #}) + ./gcc6.patch + ./build-fix.patch + ]; + + meta = { + homepage = "http://0ldsk00l.ca/nestopia/"; + description = "NES emulator with a focus on accuracy"; + license = stdenv.lib.licenses.gpl2; + platforms = stdenv.lib.platforms.linux; + maintainers = with stdenv.lib.maintainers; [ MP2E ]; + }; +} + diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/nestopia/gcc6.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/nestopia/gcc6.patch new file mode 100644 index 000000000000..65dcc72c0c25 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/nestopia/gcc6.patch @@ -0,0 +1,92 @@ +From f4bc74ac4954328b25e961e7afb7337377084079 Mon Sep 17 00:00:00 2001 +From: David Seifert <soap@gentoo.org> +Date: Sat, 31 Dec 2016 18:21:18 +0200 +Subject: [PATCH] Fix compiling in C++14 mode + +* Left shifting a negative signed is undefined behaviour +* Fix incorrect printf() specifiers found with -Wformat +--- + source/core/NstCore.hpp | 4 ++-- + source/unix/gtkui/gtkui.cpp | 2 +- + source/unix/gtkui/gtkui.h | 1 - + source/unix/gtkui/gtkui_cheats.cpp | 8 ++++---- + source/unix/video.cpp | 2 +- + 5 files changed, 8 insertions(+), 9 deletions(-) + +diff --git a/source/core/NstCore.hpp b/source/core/NstCore.hpp +index 50e20f6..420cc4a 100644 +--- a/source/core/NstCore.hpp ++++ b/source/core/NstCore.hpp +@@ -279,14 +279,14 @@ namespace Nes + template<typename T>
+ inline long signed_shl(T v,uint c)
+ {
+- enum {NATIVE = T(-7) << 1 == -14};
++ enum {NATIVE = -(T(7) << 1) == -14};
+ return Helper::ShiftSigned<T,NATIVE>::Left( v, c );
+ }
+
+ template<typename T>
+ inline long signed_shr(T v,uint c)
+ {
+- enum {NATIVE = T(-7) >> 1 == -4 || T(-7) >> 1 == -3};
++ enum {NATIVE = -(T(7) >> 1) == -4 || -(T(7) >> 1) == -3};
+ return Helper::ShiftSigned<T,NATIVE>::Right( v, c );
+ }
+
+diff --git a/source/unix/gtkui/gtkui.cpp b/source/unix/gtkui/gtkui.cpp +index 3cfeeab..d4a5e2d 100644 +--- a/source/unix/gtkui/gtkui.cpp ++++ b/source/unix/gtkui/gtkui.cpp +@@ -438,7 +438,7 @@ void gtkui_message(const char* message) { + GTK_DIALOG_DESTROY_WITH_PARENT, + GTK_MESSAGE_INFO, + GTK_BUTTONS_OK, +- message); ++ "%s", message); + gtk_dialog_run(GTK_DIALOG(messagewindow)); + gtk_widget_destroy(messagewindow); + } +diff --git a/source/unix/gtkui/gtkui_cheats.cpp b/source/unix/gtkui/gtkui_cheats.cpp +index afc01b0..e7b691a 100644 +--- a/source/unix/gtkui/gtkui_cheats.cpp ++++ b/source/unix/gtkui/gtkui_cheats.cpp +@@ -373,7 +373,7 @@ void gtkui_cheats_fill_tree(char *filename) { + else if (node.GetChild(L"address")) { // Raw + char rawbuf[11]; + snprintf(rawbuf, sizeof(rawbuf), +- "%04x %02x %02x", ++ "%04lu %02lu %02lu", + node.GetChild(L"address").GetUnsignedValue(), + node.GetChild(L"value").GetUnsignedValue(), + node.GetChild(L"compare").GetUnsignedValue()); +@@ -545,13 +545,13 @@ gboolean gtkui_cheats_scan_list(GtkTreeModel *model, GtkTreePath *path, GtkTreeI + int addr, value, compare; + char buf[5]; + +- snprintf(buf, sizeof(buf), "%c%c%c%c\0", rawcode[0], rawcode[1], rawcode[2], rawcode[3]); ++ snprintf(buf, sizeof(buf), "%c%c%c%c", rawcode[0], rawcode[1], rawcode[2], rawcode[3]); + sscanf(buf, "%x", &addr); + +- snprintf(buf, sizeof(buf), "%c%c\0", rawcode[5], rawcode[6]); ++ snprintf(buf, sizeof(buf), "%c%c", rawcode[5], rawcode[6]); + sscanf(buf, "%x", &value); + +- snprintf(buf, sizeof(buf), "%c%c\0", rawcode[8], rawcode[9]); ++ snprintf(buf, sizeof(buf), "%c%c", rawcode[8], rawcode[9]); + sscanf(buf, "%x", &compare); + + code.address = addr; +diff --git a/source/unix/video.cpp b/source/unix/video.cpp +index 3eff19d..c34bb22 100644 +--- a/source/unix/video.cpp ++++ b/source/unix/video.cpp +@@ -757,7 +757,7 @@ void video_screenshot(const char* filename) { + if (filename == NULL) { + // Set the filename + char sshotpath[512]; +- snprintf(sshotpath, sizeof(sshotpath), "%sscreenshots/%s-%d-%d.png", nstpaths.nstdir, nstpaths.gamename, time(NULL), rand() % 899 + 100); ++ snprintf(sshotpath, sizeof(sshotpath), "%sscreenshots/%s-%ld-%d.png", nstpaths.nstdir, nstpaths.gamename, time(NULL), rand() % 899 + 100); + + // Save the file + lodepng_encode32_file(sshotpath, (const unsigned char*)pixels, rendersize.w, rendersize.h); diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/np2kai/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/np2kai/default.nix new file mode 100644 index 000000000000..0ed47af8f5bf --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/np2kai/default.nix @@ -0,0 +1,196 @@ +{ stdenv +, lib +, fetchFromGitHub +, enable16Bit ? true +, enable32Bit ? true + +, enableSDL ? true +, withSDLVersion ? "2" +, SDL +, SDL_ttf +, SDL_mixer +, SDL2 +, SDL2_ttf +, SDL2_mixer + +, enableX11 ? stdenv.hostPlatform.isLinux +, automake +, autoconf +, autoconf-archive +, libtool +, pkg-config +, unzip +, gtk2 +, libusb1 +, libXxf86vm +, nasm +, libICE +, libSM + + # HAXM build succeeds but the binary segfaults, seemingly due to the missing HAXM kernel module + # Enable once there is a HAXM kernel module option in NixOS? Or somehow bind it to the system kernel having HAXM? + # Or leave it disabled by default? + # https://github.com/intel/haxm/blob/master/docs/manual-linux.md +, enableHAXM ? false +}: + +assert lib.assertMsg (enable16Bit || enable32Bit) + "Must enable 16-Bit and/or 32-Bit system variant."; +assert lib.assertMsg (enableSDL || enableX11) + "Must enable SDL and/or X11 graphics interfaces."; +assert lib.assertOneOf "withSDLVersion" withSDLVersion [ "1" "2" ]; +assert enableHAXM -> (lib.assertMsg enableX11 + "Must enable X11 graphics interface for HAXM build."); +let + inherit (lib) optional optionals optionalString; + inherit (lib.strings) concatStringsSep concatMapStringsSep; + isSDL2 = (withSDLVersion == "2"); + sdlInfix = optionalString isSDL2 "2"; + sdlDeps1 = [ + SDL + SDL_ttf + SDL_mixer + ]; + sdlDeps2 = [ + SDL2 + SDL2_ttf + SDL2_mixer + ]; + sdlDepsBuildonly = if isSDL2 then sdlDeps1 else sdlDeps2; + sdlDepsTarget = if isSDL2 then sdlDeps2 else sdlDeps1; + sdlMakefileSuffix = + if stdenv.hostPlatform.isWindows then "win" + else if stdenv.hostPlatform.isDarwin then "mac" + else "unix"; + sdlMakefiles = concatMapStringsSep " " (x: x + "." + sdlMakefileSuffix) + (optionals enable16Bit [ + "Makefile" + ] ++ optionals enable32Bit [ + "Makefile21" + ]); + sdlBuildFlags = concatStringsSep " " + (optionals enableSDL [ + "SDL_VERSION=${withSDLVersion}" + ]); + sdlBins = concatStringsSep " " + (optionals enable16Bit [ + "np2kai" + ] ++ optionals enable32Bit [ + "np21kai" + ]); + x11ConfigureFlags = concatStringsSep " " + (( + if ((enableHAXM && (enable16Bit || enable32Bit)) || (enable16Bit && enable32Bit)) then [ + "--enable-build-all" + ] else if enableHAXM then [ + "--enable-haxm" + ] else if enable32Bit then [ + "--enable-ia32" + ] else [ ] + ) ++ optionals (!isSDL2) [ + "--enable-sdl" + "--enable-sdlmixer" + "--enable-sdlttf" + + "--enable-sdl2=no" + "--enable-sdl2mixer=no" + "--enable-sdl2ttf=no" + ]); + x11BuildFlags = concatStringsSep " " [ + "SDL2_CONFIG=sdl2-config" + "SDL_CONFIG=sdl-config" + "SDL_CFLAGS=\"$(sdl${sdlInfix}-config --cflags)\"" + "SDL_LIBS=\"$(sdl${sdlInfix}-config --libs) -lSDL${sdlInfix}_mixer -lSDL${sdlInfix}_ttf\"" + ]; + x11Bins = concatStringsSep " " + (optionals enable16Bit [ + "xnp2kai" + ] ++ optionals enable32Bit [ + "xnp21kai" + ] ++ optionals enableHAXM [ + "xnp21kai_haxm" + ]); +in +stdenv.mkDerivation rec { + pname = "np2kai"; + version = "0.86rev22"; #update src.rev to commit rev accordingly + + src = fetchFromGitHub rec { + owner = "AZO234"; + repo = "NP2kai"; + rev = "4a317747724669343e4c33ebdd34783fb7043221"; + sha256 = "0kxysxhx6jyk82mx30ni0ydzmwdcbnlxlnarrlq018rsnwb4md72"; + }; + + configurePhase = '' + export GIT_VERSION=${builtins.substring 0 7 src.rev} + buildFlags="$buildFlags ''${enableParallelBuilding:+-j$NIX_BUILD_CORES -l$NIX_BUILD_CORES}" + '' + optionalString enableX11 '' + cd x11 + substituteInPlace Makefile.am \ + --replace 'GIT_VERSION :=' 'GIT_VERSION ?=' + ./autogen.sh ${x11ConfigureFlags} + ./configure ${x11ConfigureFlags} + cd .. + ''; + + nativeBuildInputs = sdlDepsBuildonly + ++ optionals enableX11 [ + automake + autoconf + autoconf-archive + libtool + pkg-config + unzip + nasm + ]; + + buildInputs = sdlDepsTarget + ++ optionals enableX11 [ + gtk2 + libICE + libSM + libusb1 + libXxf86vm + ]; + + enableParallelBuilding = true; + + buildPhase = optionalString enableSDL '' + cd sdl2 + for mkfile in ${sdlMakefiles}; do + substituteInPlace $mkfile \ + --replace 'GIT_VERSION :=' 'GIT_VERSION ?=' + echo make -f $mkfile $buildFlags ${sdlBuildFlags} clean + make -f $mkfile $buildFlags ${sdlBuildFlags} clean + make -f $mkfile $buildFlags ${sdlBuildFlags} + done + cd .. + '' + optionalString enableX11 '' + cd x11 + make $buildFlags ${x11BuildFlags} + cd .. + ''; + + installPhase = optionalString enableSDL '' + cd sdl2 + for emu in ${sdlBins}; do + install -D -m 755 $emu $out/bin/$emu + done + cd .. + '' + optionalString enableX11 '' + cd x11 + for emu in ${x11Bins}; do + install -D -m 755 $emu $out/bin/$emu + done + cd .. + ''; + + meta = with lib; { + description = "A PC-9801 series emulator"; + homepage = "https://github.com/AZO234/NP2kai"; + license = licenses.mit; + maintainers = with maintainers; [ OPNA2608 ]; + platforms = platforms.x86; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/openmsx/custom-nix.mk b/infra/libkookie/nixpkgs/pkgs/misc/emulators/openmsx/custom-nix.mk new file mode 100644 index 000000000000..9098762e40d5 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/openmsx/custom-nix.mk @@ -0,0 +1,9 @@ +# This file substitutes $sourceRoot/build/custom.mk + +VERSION_EXEC:=false +SYMLINK_FOR_BINARY:=false +INSTALL_CONTRIB:=true +INSTALL_BASE:=${out} +INSTALL_DOC_DIR:=${INSTALL_BASE}/share/doc/openmsx +INSTALL_SHARE_DIR:=${INSTALL_BASE}/share/openmsx +INSTALL_BINARY_DIR:=${INSTALL_BASE}/bin diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/openmsx/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/openmsx/default.nix new file mode 100644 index 000000000000..dc533c4f17ce --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/openmsx/default.nix @@ -0,0 +1,48 @@ +{ stdenv, fetchFromGitHub, pkgconfig +, python +, alsaLib, glew, libGL, libpng +, libogg, libtheora, libvorbis +, SDL2, SDL2_image, SDL2_ttf +, freetype, tcl, zlib +}: + +stdenv.mkDerivation rec { + pname = "openmsx"; + version = "16.0"; + + src = fetchFromGitHub { + owner = "openMSX"; + repo = "openMSX"; + rev = "RELEASE_${builtins.replaceStrings ["."] ["_"] version}"; + sha256 = "04sphn9ph378r0qv881riv90cgz58650jcqcwmi1mv6gbcb3img5"; + fetchSubmodules = true; + }; + + nativeBuildInputs = [ pkgconfig python ]; + + buildInputs = [ alsaLib glew libGL libpng + libogg libtheora libvorbis freetype + SDL2 SDL2_image SDL2_ttf tcl zlib ]; + + postPatch = '' + cp ${./custom-nix.mk} build/custom.mk + ''; + + dontAddPrefix = true; + + # Many thanks @mthuurne from OpenMSX project + # for providing support to Nixpkgs :) + TCL_CONFIG="${tcl}/lib/"; + + meta = with stdenv.lib;{ + description = "The MSX emulator that aims for perfection"; + longDescription = '' + OpenMSX is an emulator for the MSX home computer system. Its goal is + to emulate all aspects of the MSX with 100% accuracy. + ''; + homepage = "https://openmsx.org"; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.unix; + license = with licenses; [ bsd2 boost gpl2 ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/pcsx2/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/pcsx2/default.nix new file mode 100644 index 000000000000..af2cca5494e1 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/pcsx2/default.nix @@ -0,0 +1,83 @@ +{ alsaLib, cmake, fetchFromGitHub, glib, gettext, gtk2, harfbuzz, lib, libaio +, libpng, libpcap, libxml2, makeWrapper, perl, pkgconfig, portaudio +, SDL2, soundtouch, stdenv, udev, wxGTK, zlib +}: + +stdenv.mkDerivation rec { + pname = "pcsx2"; + version = "1.6.0"; + + src = fetchFromGitHub { + owner = "PCSX2"; + repo = "pcsx2"; + rev = "v${version}"; + sha256 = "0528kh3275285lvfsykycdhc35c1z8pmccl2s7dfi3va2cp4x8wa"; + }; + + postPatch = "sed '1i#include \"x86intrin.h\"' -i common/src/x86emitter/cpudetect.cpp"; + + cmakeFlags = [ + "-DCMAKE_INSTALL_PREFIX=${placeholder "out"}" + "-DDISABLE_ADVANCE_SIMD=TRUE" + "-DDISABLE_PCSX2_WRAPPER=TRUE" + "-DDOC_DIR=${placeholder "out"}/share/doc/pcsx2" + "-DGAMEINDEX_DIR=${placeholder "out"}/share/pcsx2" + "-DGLSL_SHADER_DIR=${placeholder "out"}/share/pcsx2" + "-DwxWidgets_LIBRARIES=${wxGTK}/lib" + "-DwxWidgets_INCLUDE_DIRS=${wxGTK}/include" + "-DwxWidgets_CONFIG_EXECUTABLE=${wxGTK}/bin/wx-config" + "-DPACKAGE_MODE=TRUE" + "-DPLUGIN_DIR=${placeholder "out"}/lib/pcsx2" + "-DREBUILD_SHADER=TRUE" + "-DXDG_STD=TRUE" + "-DGTK2_GLIBCONFIG_INCLUDE_DIR=${glib.out}/lib/glib-2.0/include" + "-DGTK2_GDKCONFIG_INCLUDE_DIR=${gtk2.out}/lib/gtk-2.0/include" + "-DGTK2_INCLUDE_DIRS=${gtk2.dev}/include/gtk-2.0" + "-DGTK3_API=FALSE" + ]; + + postFixup = '' + wrapProgram $out/bin/PCSX2 \ + --set __GL_THREADED_OPTIMIZATIONS 1 + ''; + + nativeBuildInputs = [ cmake makeWrapper perl pkgconfig ]; + + buildInputs = [ + alsaLib + glib + gettext + gtk2 + harfbuzz + libaio + libpcap + libpng + libxml2 + portaudio + SDL2 + soundtouch + udev + wxGTK + zlib + ]; + + meta = with stdenv.lib; { + description = "Playstation 2 emulator"; + longDescription= '' + PCSX2 is an open-source PlayStation 2 (AKA PS2) emulator. Its purpose + is to emulate the PS2 hardware, using a combination of MIPS CPU + Interpreters, Recompilers and a Virtual Machine which manages hardware + states and PS2 system memory. This allows you to play PS2 games on your + PC, with many additional features and benefits. + ''; + homepage = "https://pcsx2.net"; + maintainers = with maintainers; [ hrdinka ]; + + # PCSX2's source code is released under LGPLv3+. It However ships + # additional data files and code that are licensed differently. + # This might be solved in future, for now we should stick with + # license.free + license = licenses.free; + platforms = platforms.i686; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/pcsxr/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/pcsxr/default.nix new file mode 100644 index 000000000000..ae608f563128 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/pcsxr/default.nix @@ -0,0 +1,87 @@ +{ stdenv, fetchurl, autoreconfHook, intltool, pkgconfig, gtk3, SDL2, xorg +, wrapGAppsHook, libcdio, nasm, ffmpeg, file +, fetchpatch }: + +stdenv.mkDerivation rec { + pname = "pcsxr"; + version = "1.9.94"; + + # codeplex does not support direct downloading + src = fetchurl { + url = "mirror://debian/pool/main/p/pcsxr/pcsxr_${version}.orig.tar.xz"; + sha256 = "0q7nj0z687lmss7sgr93ij6my4dmhkm2nhjvlwx48dn2lxl6ndla"; + }; + + patches = [ + ( fetchpatch { + url = "https://salsa.debian.org/games-team/pcsxr/raw/315e56d16e36ef3011f72d0fe86190728d2ba596/debian/patches/01_fix-i386-exec-stack.patch"; + sha256 = "17497wjxd6b92bj458s2769d9bpp68ydbvmfs9gp51yhnq4zl81x"; + }) + ( fetchpatch { + url = "https://salsa.debian.org/games-team/pcsxr/raw/315e56d16e36ef3011f72d0fe86190728d2ba596/debian/patches/02_disable-ppc-auto-dynarec.patch"; + sha256 = "0v8n79z034w6cqdrzhgd9fkdpri42mzvkdjm19x4asz94gg2i2kf"; + }) + ( fetchpatch { + url = "https://salsa.debian.org/games-team/pcsxr/raw/315e56d16e36ef3011f72d0fe86190728d2ba596/debian/patches/03_fix-plugin-dir.patch"; + sha256 = "0vkl0mv6whqaz79kvvvlmlmjpynyq4lh352j3bbxcr0vjqffxvsy"; + }) + ( fetchpatch { + url = "https://salsa.debian.org/games-team/pcsxr/raw/315e56d16e36ef3011f72d0fe86190728d2ba596/debian/patches/04_update-homedir-symlinks.patch"; + sha256 = "18r6n025ybr8fljfsaqm4ap31wp8838j73lrsffi49fkis60dp4j"; + }) + ( fetchpatch { + url = "https://salsa.debian.org/games-team/pcsxr/raw/315e56d16e36ef3011f72d0fe86190728d2ba596/debian/patches/05_format-security.patch"; + sha256 = "03m4kfc9bk5669hf7ji1anild08diliapx634f9cigyxh72jcvni"; + }) + ( fetchpatch { + url = "https://salsa.debian.org/games-team/pcsxr/raw/315e56d16e36ef3011f72d0fe86190728d2ba596/debian/patches/06_warnings.patch"; + sha256 = "0iz3g9ihnhisfgrzma9l74y4lhh57na9h41bmiam1millb796g71"; + }) + ( fetchpatch { + url = "https://salsa.debian.org/games-team/pcsxr/raw/315e56d16e36ef3011f72d0fe86190728d2ba596/debian/patches/07_non-linux-ip-addr.patch"; + sha256 = "14vb9l0l4nzxcymhjjs4q57nmsncmby9qpdr7c19rly5wavm4k77"; + }) + ( fetchpatch { + url = "https://salsa.debian.org/games-team/pcsxr/raw/315e56d16e36ef3011f72d0fe86190728d2ba596/debian/patches/08_reproducible.patch"; + sha256 = "1cx9q59drsk9h6l31097lg4aanaj93ysdz5p88pg9c7wvxk1qz06"; + }) + + ./uncompress2.patch + ]; + + nativeBuildInputs = [ autoreconfHook intltool pkgconfig wrapGAppsHook ]; + buildInputs = [ + gtk3 SDL2 xorg.libXv xorg.libXtst libcdio nasm ffmpeg file + ]; + + dynarecTarget = + if stdenv.isx86_64 then "x86_64" + else if stdenv.isi686 then "x86" + else "no"; #debian patch 2 says ppc doesn't work + + configureFlags = [ + "--enable-opengl" + "--enable-ccdda" + "--enable-libcdio" + "--enable-dynarec=${dynarecTarget}" + ]; + + postInstall = '' + mkdir -p "$out/share/doc/${pname}-${version}" + cp README \ + AUTHORS \ + doc/keys.txt \ + doc/tweaks.txt \ + ChangeLog.df \ + ChangeLog \ + "$out/share/doc/${pname}-${version}" + ''; + + meta = with stdenv.lib; { + description = "Playstation 1 emulator"; + homepage = "https://pcsxr.codeplex.com/"; + maintainers = with maintainers; [ rardiol ]; + license = licenses.gpl2Plus; + platforms = platforms.all; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/pcsxr/uncompress2.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/pcsxr/uncompress2.patch new file mode 100644 index 000000000000..356868ce7a8b --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/pcsxr/uncompress2.patch @@ -0,0 +1,20 @@ +--- a/libpcsxcore/cdriso.c ++++ b/libpcsxcore/cdriso.c +@@ -1219,7 +1219,7 @@ + return ret; + } + +-static int uncompress2(void *out, unsigned long *out_size, void *in, unsigned long in_size) ++static int uncompress3(void *out, unsigned long *out_size, void *in, unsigned long in_size) + { + static z_stream z; + int ret = 0; +@@ -1298,7 +1298,7 @@ + if (is_compressed) { + cdbuffer_size_expect = sizeof(compr_img->buff_raw[0]) << compr_img->block_shift; + cdbuffer_size = cdbuffer_size_expect; +- ret = uncompress2(compr_img->buff_raw[0], &cdbuffer_size, compr_img->buff_compressed, size); ++ ret = uncompress3(compr_img->buff_raw[0], &cdbuffer_size, compr_img->buff_compressed, size); + if (ret != 0) { + SysPrintf("uncompress failed with %d for block %d, sector %d\n", + ret, block, sector); diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/ppsspp/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ppsspp/default.nix new file mode 100644 index 000000000000..effc34accf2c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ppsspp/default.nix @@ -0,0 +1,70 @@ +{ SDL2 +, cmake +, fetchFromGitHub +, ffmpeg_3 +, glew +, lib +, libzip +, mkDerivation +, pkgconfig +, python3 +, qtbase +, qtmultimedia +, snappy +, zlib +}: + +mkDerivation rec { + pname = "ppsspp"; + version = "1.10.3"; + + src = fetchFromGitHub { + owner = "hrydgard"; + repo = pname; + rev = "v${version}"; + fetchSubmodules = true; + sha256 = "sha256-W41Poq5S+opkasIGYo13SQZWQF1HjfFnH7u9DW5HNA0="; + }; + + postPatch = '' + substituteInPlace git-version.cmake --replace unknown ${src.rev} + substituteInPlace UI/NativeApp.cpp --replace /usr/share $out/share + ''; + + nativeBuildInputs = [ cmake pkgconfig python3 ]; + + buildInputs = [ + SDL2 + ffmpeg_3 + glew + libzip + qtbase + qtmultimedia + snappy + zlib + ]; + + cmakeFlags = [ + "-DOpenGL_GL_PREFERENCE=GLVND" + "-DUSE_SYSTEM_FFMPEG=ON" + "-DUSE_SYSTEM_LIBZIP=ON" + "-DUSE_SYSTEM_SNAPPY=ON" + "-DUSING_QT_UI=ON" + "-DHEADLESS=OFF" + ]; + + installPhase = '' + mkdir -p $out/share/ppsspp + install -Dm555 PPSSPPQt $out/bin/ppsspp + mv assets $out/share/ppsspp + ''; + + meta = with lib; { + description = "A HLE Playstation Portable emulator, written in C++"; + homepage = "https://www.ppsspp.org/"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.linux; + }; +} +# TODO: add SDL headless port diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/qmc2/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/qmc2/default.nix new file mode 100644 index 000000000000..1242a1ef11ac --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/qmc2/default.nix @@ -0,0 +1,41 @@ +{ stdenv +, fetchurl, qttools, pkgconfig +, minizip, zlib +, qtbase, qtsvg, qtmultimedia, qtwebkit, qttranslations, qtxmlpatterns +, rsync, SDL2, xwininfo +, utillinux +, xorg +}: + +stdenv.mkDerivation rec { + pname = "qmc2"; + version = "0.195"; + + src = fetchurl { + url = "mirror://sourceforge/project/qmc2/qmc2/${version}/${pname}-${version}.tar.gz"; + sha256 = "1dzmjlfk8pdspns6zg1jmd5fqzg8igd4q38cz4a1vf39lx74svns"; + }; + + preBuild = '' + patchShebangs scripts + ''; + + nativeBuildInputs = [ qttools pkgconfig ]; + buildInputs = [ minizip qtbase qtsvg qtmultimedia qtwebkit + qttranslations qtxmlpatterns rsync SDL2 + xwininfo zlib utillinux xorg.libxcb ]; + + makeFlags = [ "DESTDIR=$(out)" + "PREFIX=/" + "DATADIR=/share/" + "SYSCONFDIR=/etc" ]; + + meta = with stdenv.lib; { + description = "A Qt frontend for MAME/MESS"; + homepage = "https://qmc2.batcom-it.net"; + license = licenses.gpl2; + maintainers = [ maintainers.genesis ]; + platforms = platforms.linux; + broken = true; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/resim/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/resim/default.nix new file mode 100644 index 000000000000..ba7ac6212576 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/resim/default.nix @@ -0,0 +1,20 @@ +{ fetchFromGitHub, stdenv, cmake, qt4 }: + +stdenv.mkDerivation { + name = "resim"; + src = fetchFromGitHub { + owner = "itszor"; + repo = "resim"; + rev = "cdc7808ceb7ba4ac00d0d08ca646b58615059150"; + sha256 = "1743lngqxd7ai4k6cd4d1cf9h60z2pnvr2iynfs1zlpcj3w1hx0c"; + }; + nativeBuildInputs = [ cmake ]; + buildInputs = [ qt4 ]; + installPhase = '' + mkdir -pv $out/{lib,bin} + cp -v libresim/libarmsim.so $out/lib/libarmsim.so + cp -v vc4emul/vc4emul $out/bin/vc4emul + ''; + + meta.license = stdenv.lib.licenses.mit; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/cores.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/cores.nix new file mode 100644 index 000000000000..17b1679ed5ba --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/cores.nix @@ -0,0 +1,1093 @@ +{ stdenv, fetchgit, fetchFromGitHub, fetchFromGitLab, cmake, pkgconfig, makeWrapper, python27, python37, retroarch +, alsaLib, fluidsynth, curl, hidapi, libGLU, gettext, glib, gtk2, portaudio, SDL, SDL_net, SDL2, SDL2_image, libGL +, ffmpeg_3, pcre, libevdev, libpng, libjpeg, libzip, udev, libvorbis, snappy, which, hexdump +, miniupnpc, sfml, xorg, zlib, nasm, libpcap, boost, icu, openssl +, buildPackages }: + +let + + d2u = stdenv.lib.replaceChars ["-"] ["_"]; + + mkLibRetroCore = { core, src, description, license, broken ? false, ... }@a: + stdenv.lib.makeOverridable stdenv.mkDerivation ((rec { + + name = "libretro-${a.core}-${version}"; + version = "2020-03-06"; + inherit (a) src; + + buildInputs = [ zlib ] ++ a.extraBuildInputs or []; + nativeBuildInputs = [ makeWrapper ] ++ a.extraNativeBuildInputs or []; + + makefile = "Makefile.libretro"; + makeFlags = [ + "platform=${{ + linux = "unix"; + darwin = "osx"; + windows = "win"; + }.${stdenv.hostPlatform.parsed.kernel.name} or stdenv.hostPlatform.parsed.kernel.name}" + "ARCH=${{ + armv7l = "arm"; + armv6l = "arm"; + i686 = "x86"; + }.${stdenv.hostPlatform.parsed.cpu.name} or stdenv.hostPlatform.parsed.cpu.name}" + ] ++ (a.makeFlags or []); + + installPhase = '' + COREDIR="$out/lib/retroarch/cores" + mkdir -p $out/bin + mkdir -p $COREDIR + mv ${d2u a.core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary} $COREDIR + makeWrapper ${retroarch}/bin/retroarch $out/bin/retroarch-${core} \ + --add-flags "-L $COREDIR/${d2u core}_libretro${stdenv.hostPlatform.extensions.sharedLibrary} $@" + ''; + + enableParallelBuilding = true; + + passthru = { + inherit (a) core; + libretroCore = "/lib/retroarch/cores"; + }; + + meta = with stdenv.lib; { + inherit (a) description license; + broken = a.broken or false; + homepage = "https://www.libretro.com/"; + maintainers = with maintainers; [ edwtjo hrdinka MP2E ]; + platforms = platforms.unix; + }; + }) // builtins.removeAttrs a ["core" "src" "description" "license" "makeFlags"]); + + fetchRetro = { repo, rev, sha256 }: + fetchgit { + inherit rev sha256; + url = "https://github.com/libretro/${repo}.git"; + fetchSubmodules = true; + }; + +in with stdenv.lib.licenses; + +{ + + atari800 = mkLibRetroCore rec { + core = "atari800"; + src = fetchRetro { + repo = "libretro-" + core; + rev = "f9bf53b864344b8bbe8d425ed2f3c628eb10519c"; + sha256 = "0sgk93zs423pwiqzvj0x1gfwcn9gacnlrrdq53ps395k64lig6lk"; + }; + description = "Port of Atari800 to libretro"; + license = gpl2; + makefile = "Makefile"; + makeFlags = [ "GIT_VERSION=" ]; + }; + + beetle-snes = mkLibRetroCore { + core = "mednafen-snes"; + src = fetchRetro { + repo = "beetle-bsnes-libretro"; + rev = "de22d8420ea606f1b2f72afd4dda34619cf2cc20"; + sha256 = "1nd4f8frmlhp1lyxz9zpxvwwz70x0i0rrp560cn9qlm1jzdv3xvf"; + }; + description = "Port of Mednafen's SNES core to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + beetle-gba = mkLibRetroCore { + core = "mednafen-gba"; + src = fetchRetro { + repo = "beetle-gba-libretro"; + rev = "135afdbb9591655a3e016b75abba07e481f6d406"; + sha256 = "0fc0x24qn4y7pz3mp1mm1ain31aj9pznp1irr0k7hvazyklzy9g3"; + }; + description = "Port of Mednafen's GameBoy Advance core to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + beetle-lynx = mkLibRetroCore { + core = "mednafen-lynx"; + src = fetchRetro { + repo = "beetle-lynx-libretro"; + rev = "74dde204c0ec6c4bc4cd7821c14548387fbd9ce8"; + sha256 = "05kwibjr30laalqzazswvmn9smm3mwqsz1i0z1s0pj7idfdhjfw0"; + }; + description = "Port of Mednafen's Lynx core to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + beetle-ngp = mkLibRetroCore { + core = "mednafen-ngp"; + src = fetchRetro { + repo = "beetle-ngp-libretro"; + rev = "6f15532b6ad17a2d5eb9dc8241d6af62416e796b"; + sha256 = "05r8mk9rc19nzs3gpfsjr6i7pm6xx3gn3b4xs8ab7v4vcmfg4cn2"; + }; + description = "Port of Mednafen's NeoGeo Pocket core to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + beetle-pce-fast = let der = mkLibRetroCore { + core = "mednafen-pce-fast"; + src = fetchRetro { + repo = "beetle-pce-fast-libretro"; + rev = "40a42b7f43f029760c92bf0b2097e7d4b90ed29c"; + sha256 = "1gr6wg4bd4chm4c39w0c1b5zfzr05zd7234vvlmr1imk0v6m0wj6"; + }; + description = "Port of Mednafen's PC Engine core to libretro"; + license = gpl2; + makefile = "Makefile"; + }; in der.override { + name = "beetle-pce-fast-${der.version}"; + }; + + beetle-pcfx = mkLibRetroCore rec { + core = "mednafen-pcfx"; + src = fetchRetro { + repo = "beetle-pcfx-libretro"; + rev = "7bba6699d6f903bd701b0aa525d845de8427fee6"; + sha256 = "1lh7dh96fyi005fcg3xaf7r4ssgkq840p6anldlqy52vfwmglw3p"; + }; + description = "Port of Mednafen's PCFX core to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + beetle-psx = let der = (mkLibRetroCore { + core = "mednafen-psx"; + src = fetchRetro { + repo = "beetle-psx-libretro"; + rev = "0f1e7e60827cad49ebba628abdc83ad97652ab89"; + sha256 = "1j92jgddyl970v775d6gyb50l8md6yfym2fpqhfxcr4gj1b4ivwq"; + }; + description = "Port of Mednafen's PSX Engine core to libretro"; + license = gpl2; + makefile = "Makefile"; + makeFlags = [ "HAVE_HW=0" "HAVE_LIGHTREC=1" ]; + }); in der.override { + name = "beetle-psx-${der.version}"; + }; + + beetle-psx-hw = let der = (mkLibRetroCore { + core = "mednafen-psx-hw"; + src = fetchRetro { + repo = "beetle-psx-libretro"; + rev = "0f1e7e60827cad49ebba628abdc83ad97652ab89"; + sha256 = "1j92jgddyl970v775d6gyb50l8md6yfym2fpqhfxcr4gj1b4ivwq"; + }; + description = "Port of Mednafen's PSX Engine (with HW accel) core to libretro"; + license = gpl2; + extraBuildInputs = [ libGL libGLU ]; + makefile = "Makefile"; + makeFlags = [ "HAVE_VULKAN=1" "HAVE_OPENGL=1" "HAVE_HW=1" "HAVE_LIGHTREC=1" ]; + }); in der.override { + name = "beetle-psx-hw-${der.version}"; + }; + + beetle-saturn = let der = (mkLibRetroCore { + core = "mednafen-saturn"; + src = fetchRetro { + repo = "beetle-saturn-libretro"; + rev = "8a65943bb7bbc3183eeb0d57c4ac3e663f1bcc11"; + sha256 = "1f0cd9wmvarsmf4jw0p6h3lbzs6515aja7krrwapja7i4xmgbrnh"; + }; + description = "Port of Mednafen's Saturn core to libretro"; + license = gpl2; + makefile = "Makefile"; + makeFlags = [ "HAVE_HW=0" ]; + meta.platforms = [ "x86_64-linux" "aarch64-linux" ]; + }); in der.override { + name = "beetle-saturn-${der.version}"; + }; + + beetle-saturn-hw = let der = (mkLibRetroCore { + core = "mednafen-saturn-hw"; + src = fetchRetro { + repo = "beetle-saturn-libretro"; + rev = "8a65943bb7bbc3183eeb0d57c4ac3e663f1bcc11"; + sha256 = "1f0cd9wmvarsmf4jw0p6h3lbzs6515aja7krrwapja7i4xmgbrnh"; + }; + description = "Port of Mednafen's Saturn core to libretro"; + license = gpl2; + extraBuildInputs = [ libGL libGLU ]; + makefile = "Makefile"; + makeFlags = [ "HAVE_OPENGL=1" "HAVE_HW=1" ]; + meta.platforms = [ "x86_64-linux" "aarch64-linux" ]; + }); in der.override { + name = "beetle-saturn-${der.version}"; + }; + + beetle-supergrafx = mkLibRetroCore rec { + core = "mednafen-supergrafx"; + src = fetchRetro { + repo = "beetle-supergrafx-libretro"; + rev = "fadef23d59fa5ec17bc99e1e722cfd9e10535695"; + sha256 = "15rm7p5q38qy3xpyvamhphjnna8h91fsbcqnl9vhzx9cmjg0wf54"; + }; + description = "Port of Mednafen's SuperGrafx core to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + beetle-wswan = mkLibRetroCore rec { + core = "mednafen-wswan"; + src = fetchRetro { + repo = "beetle-wswan-libretro"; + rev = "5b03d1b09f70dc208387d3c8b59e12e1f0d2692f"; + sha256 = "1sm6ww3y9m85lhp74dpxbs05yxdhhqqmj2022j9s0m235z29iygc"; + }; + description = "Port of Mednafen's WonderSwan core to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + beetle-vb = mkLibRetroCore rec { + core = "mednafen-vb"; + src = fetchRetro { + repo = "beetle-vb-libretro"; + rev = "9a4e604a7320a3c6ed30601989fe0bc417fa9ad3"; + sha256 = "1gallwbqxn5qbmwxr1vxb41nncksai4rxc739a7vqvp65k5kl0qp"; + }; + description = "Port of Mednafen's VirtualBoy core to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + bluemsx = mkLibRetroCore rec { + core = "bluemsx"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "7a1d40e750860580ab7cc21fbc244b5bc6db6586"; + sha256 = "05hnkyr47djccspr8v438zimdfsgym7v0jn1hwpkqc4i5zf70981"; + }; + description = "Port of BlueMSX to libretro"; + license = gpl2; + }; + + bsnes-mercury = let bname = "bsnes-mercury"; in mkLibRetroCore { + core = bname + "-accuracy"; + src = fetchRetro { + repo = bname; + rev = "4a382621da58ae6da850f1bb003ace8b5f67968c"; + sha256 = "0z8psz24nx8497vpk2wya9vs451rzzw915lkw3qiq9bzlzg9r2wv"; + }; + description = "Fork of bsnes with HLE DSP emulation restored"; + license = gpl3; + makefile = "Makefile"; + postBuild = "cd out"; + }; + + citra = mkLibRetroCore rec { + core = "citra"; + src = fetchgit { + url = "https://github.com/libretro/citra.git"; + rev = "84f31e95160b029e6d614053705054ed6a34bb38"; + sha256 = "0gkgxpwrh0q098cpx56hprvmazi5qi448c23svwa8ar1myh8p248"; + fetchSubmodules = true; + deepClone = true; + }; + description = "Port of Citra to libretro"; + license = gpl2Plus; + extraNativeBuildInputs = [ cmake pkgconfig ]; + extraBuildInputs = [ libGLU libGL boost ]; + makefile = "Makefile"; + cmakeFlags = [ + "-DENABLE_LIBRETRO=ON" + "-DENABLE_QT=OFF" + "-DENABLE_SDL2=OFF" + "-DENABLE_WEB_SERVICE=OFF" + "-DENABLE_DISCORD_PRESENCE=OFF" + ]; + preConfigure = "sed -e '77d' -i externals/cmake-modules/GetGitRevisionDescription.cmake"; + postBuild = "cd src/citra_libretro"; + }; + + desmume = mkLibRetroCore rec { + core = "desmume"; + src = fetchRetro { + repo = core; + rev = "e8cf461f83eebb195f09e70090f57b07d1bcdd9f"; + sha256 = "0rc8s5226wn39jqs5yxi30jc1snc0p106sfym7kgi98hy5na8yab"; + }; + description = "libretro wrapper for desmume NDS emulator"; + license = gpl2; + extraBuildInputs = [ libpcap libGLU libGL xorg.libX11 ]; + preBuild = "cd desmume/src/frontend/libretro"; + makeFlags = stdenv.lib.optional stdenv.hostPlatform.isAarch32 "platform=armv-unix" + ++ stdenv.lib.optional (!stdenv.hostPlatform.isx86) "DESMUME_JIT=0"; + }; + + desmume2015 = mkLibRetroCore rec { + core = "desmume2015"; + src = fetchRetro { + repo = core; + rev = "93d5789d60f82436e20ccad05ce9cb43c6e3656e"; + sha256 = "12nii2pbnqgh7f7jkphbwjpr2hiy2mzbwpas3xyhpf9wpy3qiasg"; + }; + description = "libretro wrapper for desmume NDS emulator from 2015"; + license = gpl2; + extraBuildInputs = [ libpcap libGLU libGL xorg.libX11 ]; + makeFlags = stdenv.lib.optional stdenv.hostPlatform.isAarch32 "platform=armv-unix" + ++ stdenv.lib.optional (!stdenv.hostPlatform.isx86) "DESMUME_JIT=0"; + preBuild = "cd desmume"; + }; + + dolphin = mkLibRetroCore { + core = "dolphin"; + src = fetchRetro { + repo = "dolphin"; + rev = "1fbd59911d1b718c142d6448dee3ede98152e395"; + sha256 = "1rymsvs034l1hbxc3w8zi9lhmgka2qaj3jynjy152dccd480nnd4"; + }; + description = "Port of Dolphin to libretro"; + license = gpl2Plus; + + extraNativeBuildInputs = [ cmake curl pkgconfig ]; + extraBuildInputs = [ + libGLU libGL pcre sfml + gettext hidapi + libevdev udev + ] ++ (with xorg; [ libSM libX11 libXi libpthreadstubs libxcb xcbutil libXext libXrandr libXinerama libXxf86vm ]); + makefile = "Makefile"; + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE=Release" + "-DLIBRETRO=ON" + "-DLIBRETRO_STATIC=1" + "-DENABLE_QT=OFF" + "-DENABLE_LTO=OFF" + "-DUSE_UPNP=OFF" + "-DUSE_DISCORD_PRESENCE=OFF" + ]; + dontUseCmakeBuildDir = true; + }; + + dosbox = mkLibRetroCore rec { + core = "dosbox"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "e4ed503b14ed59d5d745396ef1cc7d52cf912328"; + sha256 = "13bx0ln9hwn6hy4sv0ivqmjgjbfq8svx15dsa24hwd8lkf0kakl4"; + }; + description = "Port of DOSBox to libretro"; + license = gpl2; + }; + + eightyone = mkLibRetroCore rec { + core = "81"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "4352130bd2363954262a804b086f86b9d13d97f9"; + sha256 = "057ynnv85imjqhgixrx7p28wn42v88vsm3fc1lp3mpcfi2bk266h"; + }; + description = "Port of EightyOne to libretro"; + license = gpl3; + }; + + fbalpha2012 = mkLibRetroCore rec { + core = "fbalpha2012"; + src = fetchRetro { + repo = core; + rev = "fa97cd2784a337f8ac774c2ce8a136aee69b5f43"; + sha256 = "1i75k0r6838hl77bjjmzvan33ka5qjrdpirmclzj20g5j97lmas7"; + }; + description = "Port of Final Burn Alpha ~2012 to libretro"; + license = "Non-commercial"; + makefile = "makefile.libretro"; + preBuild = "cd svn-current/trunk"; + }; + + fbneo = mkLibRetroCore rec { + core = "fbneo"; + src = fetchRetro { + repo = core; + rev = "cf43fdb1755f9f5c886266e86ba40d339bc8f5d7"; + sha256 = "13g3c6mbwhcf0rp95ga4klszh8dab2d4ahh2vzzlmd57r69lf2lv"; + }; + description = "Port of FBNeo to libretro"; + license = "Non-commercial"; + makefile = "Makefile"; + postPatch = '' + sed -i -e 's:-Wall:-Wall -Wno-format-security:g' src/burner/libretro/Makefile + ''; + preBuild = "cd src/burner/libretro"; + makeFlags = [ "USE_EXPERIMENTAL_FLAGS=1" ]; + }; + + fceumm = mkLibRetroCore rec { + core = "fceumm"; + src = fetchRetro { + repo = "libretro-" + core; + rev = "9ed22e5a9a1360a7f599a64283af9fe24b858e3d"; + sha256 = "0rz6iy281jpybmsz5rh06k5xvmd9id9w2q2gd0qdv9a2ylwv7s2j"; + }; + description = "FCEUmm libretro port"; + license = gpl2; + }; + + flycast = mkLibRetroCore rec { + core = "flycast"; + src = fetchRetro { + repo = core; + rev = "b12f3726d9093acb4e441b1cdcf6cd11403c8644"; + sha256 = "0nczjhdqr7svq9aflczf7rwz64bih1wqy9q0gyglb55xlslf5jqc"; + }; + description = "Flycast libretro port"; + license = gpl2; + extraBuildInputs = [ libGL libGLU ]; + makefile = "Makefile"; + makeFlags = stdenv.lib.optional stdenv.hostPlatform.isAarch64 [ "platform=arm64" ]; + meta.platforms = [ "aarch64-linux" "x86_64-linux" ]; + }; + + fmsx = mkLibRetroCore rec { + core = "fmsx"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "3de916bbf15062de1ab322432d38a1fee29d5e68"; + sha256 = "1krr4lmdiv0d7bxk37fqz5y412znb5bmxapv9g7ci6fp87sr69jq"; + }; + description = "FMSX libretro port"; + license = "Non-commercial"; + makefile = "Makefile"; + }; + + freeintv = mkLibRetroCore rec { + core = "freeintv"; + src = fetchRetro { + repo = core; + rev = "45030e10cc1a50cf7a80c5d921aa8cba0aeaca91"; + sha256 = "10lngk3p012bgrg752426701hfzsiy359h8i0vzsa64pgyjbqlag"; + }; + description = "FreeIntv libretro port"; + license = gpl3; + makefile = "Makefile"; + }; + + gambatte = mkLibRetroCore rec { + core = "gambatte"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "132f36e990dfc6effdafa6cf261373432464f9bf"; + sha256 = "19w5k9yc1cl99c5hiqbp6j54g6z06xcblpvd3x6nmhxij81yqxy7"; + }; + description = "Gambatte libretro port"; + license = gpl2; + }; + + genesis-plus-gx = mkLibRetroCore { + core = "genesis-plus-gx"; + src = fetchRetro { + repo = "Genesis-Plus-GX"; + rev = "50551066f71f8a5ea782ea3747891fd6d24ebe67"; + sha256 = "150lgdrv7idcq7jbd1jj7902rcsyixd7kfjs2m5xdinjvl22kihr"; + }; + description = "Enhanced Genesis Plus libretro port"; + license = "Non-commercial"; + }; + + gpsp = mkLibRetroCore rec { + core = "gpsp"; + src = fetchRetro { + repo = core; + rev = "3f2f57c982ffead643957db5b26931df4913596f"; + sha256 = "09fa1c623rmy1w9zx85r75viv8q1vknhbs8fn6xbss9rhpxhivwg"; + }; + description = "Port of gpSP to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + gw = mkLibRetroCore rec { + core = "gw"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "819b1dde560013003eeac86c2069c5be7af25c6d"; + sha256 = "1jhgfys8hiipvbwq3gc48d7v6wq645d10rbr4w5m6px0fk6csshk"; + }; + description = "Port of Game and Watch to libretro"; + license = stdenv.lib.licenses.zlib; + makefile = "Makefile"; + }; + + handy = mkLibRetroCore rec { + core = "handy"; + src = fetchRetro { + repo = "libretro-" + core; + rev = "c9fe65d1a2df454ee11404ac27bdc9be319dd9a2"; + sha256 = "1l1gi8z68mv2cpdy7a6wvhd86q55khj3mv3drf43ak4kj2ij8cvq"; + }; + description = "Port of Handy to libretro"; + license = "Handy-License"; + makefile = "Makefile"; + }; + + hatari = mkLibRetroCore rec { + core = "hatari"; + src = fetchRetro { + repo = core; + rev = "ec1b59c4b6c7ca7d0d23d60cfe2cb61911b11173"; + sha256 = "1pm821s2cz93xr7qx7dv0imr44bi4pvdvlnjl486p83vff9yawfg"; + }; + description = "Port of Hatari to libretro"; + license = gpl2; + extraBuildInputs = [ SDL zlib ]; + extraNativeBuildInputs = [ cmake which ]; + dontUseCmakeConfigure = true; + dontConfigure = true; + makeFlags = [ "EXTERNAL_ZLIB=1" ]; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + }; + + mame = mkLibRetroCore { + core = "mame"; + src = fetchRetro { + repo = "mame"; + rev = "ed987ad07964a938351ff3cc1ad42e02ffd2af6d"; + sha256 = "0qc66mvraffx6ws972skx3wgblich17q6z42798qn13q1a264p4j"; + }; + description = "Port of MAME to libretro"; + license = gpl2Plus; + + extraBuildInputs = [ alsaLib libGLU libGL portaudio python27 xorg.libX11 ]; + postPatch = '' + # Prevent the failure during the parallel building of: + # make -C 3rdparty/genie/build/gmake.linux -f genie.make obj/Release/src/host/lua-5.3.0/src/lgc.o + mkdir -p 3rdparty/genie/build/gmake.linux/obj/Release/src/host/lua-5.3.0/src + ''; + makefile = "Makefile.libretro"; + }; + + mame2000 = mkLibRetroCore rec { + core = "mame2000"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "e5d4a934c60adc6d42a3f87319312aad89595a15"; + sha256 = "1zn63yqyrsnsk196v5f3nm7cx41mvsm3icpis1yxbma2r3dk3f89"; + }; + description = "Port of MAME ~2000 to libretro"; + license = gpl2Plus; + makefile = "Makefile"; + makeFlags = stdenv.lib.optional (!stdenv.hostPlatform.isx86) "IS_X86=0"; + }; + + mame2003 = mkLibRetroCore rec { + core = "mame2003"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "82596014905ad38c80c9eb322ab08c625d1d92cd"; + sha256 = "17dp2rz6p7q7nr0lajn3vhk9ghngxz16f7c6c87r6wgsy4y3xw0m"; + }; + description = "Port of MAME ~2003 to libretro"; + license = gpl2Plus; + makefile = "Makefile"; + }; + + mame2003-plus = mkLibRetroCore rec { + core = "mame2003-plus"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "0134c428b75882aa474f78dbbf2c6ecde49b97b7"; + sha256 = "0jln2ys6v9hrsrkhqd87jfslwvkca425f40mf7866g6b4pz56mwc"; + }; + description = "Port of MAME ~2003+ to libretro"; + license = gpl2Plus; + makefile = "Makefile"; + }; + + mame2010 = mkLibRetroCore rec { + core = "mame2010"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "d3151837758eade73c85c28c20e7d2a8706f30c6"; + sha256 = "0hj0yhc8zs32fkzn8j341ybhvrsknv0k6x0z2fv3l9ic7swgb93i"; + }; + description = "Port of MAME ~2010 to libretro"; + license = gpl2Plus; + makefile = "Makefile"; + makeFlags = stdenv.lib.optionals stdenv.hostPlatform.isAarch64 [ "PTR64=1" "ARM_ENABLED=1" "X86_SH2DRC=0" "FORCE_DRC_C_BACKEND=1" ]; + }; + + mame2015 = mkLibRetroCore rec { + core = "mame2015"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "37333ed6fda4c798a1d6b055fe4708f9f0dcf5a7"; + sha256 = "1asldlj1ywgmhabbhaagagg5hn0359122al07802q3l57ns41l64"; + }; + description = "Port of MAME ~2015 to libretro"; + license = gpl2Plus; + extraNativeBuildInputs = [ python27 ]; + extraBuildInputs = [ alsaLib ]; + makefile = "Makefile"; + }; + + mame2016 = mkLibRetroCore rec { + core = "mame2016"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "02987af9b81a9c3294af8fb9d5a34f9826a2cf4d"; + sha256 = "0gl7irmn5d8lk7kf484vgw6kb325fq4ghwsni3il4nm5n2a8yglh"; + }; + description = "Port of MAME ~2016 to libretro"; + license = gpl2Plus; + extraNativeBuildInputs = [ python27 ]; + extraBuildInputs = [ alsaLib ]; + postPatch = '' + # Prevent the failure during the parallel building of: + # make -C 3rdparty/genie/build/gmake.linux -f genie.make obj/Release/src/host/lua-5.3.0/src/lgc.o + mkdir -p 3rdparty/genie/build/gmake.linux/obj/Release/src/host/lua-5.3.0/src + ''; + }; + + mesen = mkLibRetroCore rec { + core = "mesen"; + src = fetchFromGitHub { + owner = "SourMesen"; + repo = core; + rev = "cfc5bf6976f62ebd42ea30d5a803c138fc357509"; + sha256 = "0ihlgvzvni1yqcyi5yxdvg36q20fsqd6n67zavwfb2ph09cqv7kz"; + }; + description = "Port of Mesen to libretro"; + license = gpl3; + makefile = "Makefile"; + preBuild = "cd Libretro"; + }; + + meteor = mkLibRetroCore rec { + core = "meteor"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "3d21e3b5a7596918bee0fcaca5752ae76624c05e"; + sha256 = "0fghnxxbdrkdz6zswkd06w2r3dvr4ikvcp8jbr7nb9fc5yzn0avw"; + }; + description = "Port of Meteor to libretro"; + license = gpl3; + makefile = "Makefile"; + preBuild = "cd libretro"; + }; + + mgba = mkLibRetroCore rec { + core = "mgba"; + src = fetchRetro { + repo = core; + rev = "f87f9ef6cb38537e07dcaedeb82aecac6537d42e"; + sha256 = "0yixvnzgk7qvcfz12r5y8i85czqxbxx6bvl1c7yms8riqn9ssvb7"; + }; + description = "Port of mGBA to libretro"; + license = mpl20; + }; + + mupen64plus = mkLibRetroCore { + core = "mupen64plus-next"; + src = fetchRetro { + repo = "mupen64plus-libretro-nx"; + rev = "81a58df0263c90b10b7fc11b6deee04d47e3aa40"; + sha256 = "1brqyrsdzdq53a68q7ph01q2bx5y4m8b3ymvpp25229imm88lgkn"; + }; + description = "Libretro port of Mupen64 Plus, GL only"; + license = gpl2; + + extraBuildInputs = [ libGLU libGL libpng nasm xorg.libX11 ]; + makefile = "Makefile"; + }; + + neocd = mkLibRetroCore rec { + core = "neocd"; + src = fetchRetro { + repo = core + "_libretro"; + rev = "3825848fe7dd7e0ef859729eefcb29e2ea2956b7"; + sha256 = "018vfmjsx62zk45yx3pwisp4j133yxjbm7fnwwr244gnyms57711"; + }; + description = "NeoCD libretro port"; + license = gpl3; + makefile = "Makefile"; + }; + + nestopia = mkLibRetroCore rec { + core = "nestopia"; + src = fetchRetro { + repo = core; + rev = "70c53f08c0cc92e90d095d6558ab737ce20431ac"; + sha256 = "1hlfqml66wy6fn40f1iiy892vq9y9fj20vv3ynd2s3b3qxhwfx73"; + }; + description = "Nestopia libretro port"; + license = gpl2; + makefile = "Makefile"; + preBuild = "cd libretro"; + }; + + np2kai = mkLibRetroCore rec { + core = "np2kai"; + src = fetchFromGitHub rec { + owner = "AZO234"; + repo = "NP2kai"; + rev = "4a317747724669343e4c33ebdd34783fb7043221"; + sha256 = "0kxysxhx6jyk82mx30ni0ydzmwdcbnlxlnarrlq018rsnwb4md72"; + }; + description = "Neko Project II kai libretro port"; + license = mit; + makefile = "Makefile.libretro"; + preBuild = '' + cd sdl2 + substituteInPlace ${makefile} \ + --replace 'GIT_VERSION :=' 'GIT_VERSION ?=' + export GIT_VERSION=${builtins.substring 0 7 src.rev} + ''; + }; + + o2em = mkLibRetroCore rec { + core = "o2em"; + src = fetchRetro { + repo = "libretro-" + core; + rev = "b23a796dd3490e979ff43710317df6d43bd661e1"; + sha256 = "1pkbq7nig394zdjdic0mzdsvx8xhzamsh53xh2hzznipyj46b7z0"; + }; + description = "Port of O2EM to libretro"; + license = artistic1; + makefile = "Makefile"; + }; + + opera = mkLibRetroCore rec { + core = "opera"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "27bc2653ed469072a6a95102a8212a35fbb1e590"; + sha256 = "10cxjpsd35rb4fjc5ycs1h00gvshpn2mxxvwb6xzrfrzva0kjw1l"; + }; + description = "Opera is a port of 4DO/libfreedo to libretro"; + license = "Non-commercial"; + makefile = "Makefile"; + makeFlags = [ "CC_PREFIX=${stdenv.cc.targetPrefix}" ]; + }; + + parallel-n64 = mkLibRetroCore rec { + core = "parallel-n64"; + src = fetchRetro { + repo = core; + rev = "8fe07c62a364d0af1e22b7f75e839d42872dae7f"; + sha256 = "0p3fpldw6w4n4l60bv55c17vhqwq4q39fp36h8iqmnj7c32c61kf"; + }; + description = "Parallel Mupen64plus rewrite for libretro."; + license = gpl2; + extraBuildInputs = [ libGLU libGL libpng ]; + makefile = "Makefile"; + postPatch = stdenv.lib.optionalString stdenv.hostPlatform.isAarch64 '' + sed -i -e '1 i\CPUFLAGS += -DARM_FIX -DNO_ASM -DARM_ASM -DDONT_WANT_ARM_OPTIMIZATIONS -DARM64' Makefile \ + && sed -i -e 's,CPUFLAGS :=,,g' Makefile + ''; + }; + + pcsx_rearmed = mkLibRetroCore rec { + core = "pcsx_rearmed"; + src = fetchRetro { + repo = core; + rev = "8fda5dd0e28fe46621fb1ab57781c316143017da"; + sha256 = "0k371d0xqzqwy8ishvxssgasm36q83qj7ksn2av110n879n4knwb"; + }; + description = "Port of PCSX ReARMed with GNU lightning to libretro"; + license = gpl2; + dontConfigure = true; + }; + + picodrive = mkLibRetroCore rec { + core = "picodrive"; + src = fetchRetro { + repo = core; + rev = "600894ec6eb657586a972a9ecd268f50907a279c"; + sha256 = "1bxphwnq4b80ssmairy8sfc5cp4m6jyvrcjcj63q1vk7cs6qls7p"; + }; + description = "Fast MegaDrive/MegaCD/32X emulator"; + license = "MAME"; + + extraBuildInputs = [ libpng SDL ]; + SDL_CONFIG = "${SDL.dev}/bin/sdl-config"; + dontAddPrefix = true; + configurePlatforms = []; + makeFlags = stdenv.lib.optional stdenv.hostPlatform.isAarch64 [ "platform=aarch64" ]; + }; + + play = mkLibRetroCore { + core = "play"; + src = fetchRetro { + repo = "play-"; + rev = "884ae3b96c631f235cd18b2643d1f318fa6951fb"; + sha256 = "0m9pk20jh4y02visgzfw64bpbw93bzs15x3a3bnd19yivm34dbfc"; + }; + description = "Port of Play! to libretro"; + license = bsd2; + extraBuildInputs = [ boost ]; + extraNativeBuildInputs = [ cmake openssl curl icu libGL libGLU xorg.libX11 ]; + makefile = "Makefile"; + cmakeFlags = [ "-DBUILD_PLAY=OFF -DBUILD_LIBRETRO_CORE=ON" ]; + postBuild = "mv Source/ui_libretro/play_libretro${stdenv.hostPlatform.extensions.sharedLibrary} play_libretro${stdenv.hostPlatform.extensions.sharedLibrary}"; + }; + + ppsspp = mkLibRetroCore { + core = "ppsspp"; + src = fetchgit { + url = "https://github.com/hrydgard/ppsspp"; + rev = "bf1777f7d3702e6a0f71c7ec1fc51976e23c2327"; + sha256 = "17sym0vk72lzbh9a1501mhw98c78x1gq7k1fpy69nvvb119j37wa"; + }; + description = "ppsspp libretro port"; + license = gpl2; + extraNativeBuildInputs = [ cmake pkgconfig ]; + extraBuildInputs = [ libGLU libGL libzip ffmpeg_3 python37 snappy xorg.libX11 ]; + makefile = "Makefile"; + cmakeFlags = [ "-DLIBRETRO=ON -DUSE_SYSTEM_FFMPEG=ON -DUSE_SYSTEM_SNAPPY=ON -DUSE_SYSTEM_LIBZIP=ON -DOpenGL_GL_PREFERENCE=GLVND" ]; + postBuild = "mv lib/ppsspp_libretro${stdenv.hostPlatform.extensions.sharedLibrary} ppsspp_libretro${stdenv.hostPlatform.extensions.sharedLibrary}"; + }; + + prboom = mkLibRetroCore rec { + core = "prboom"; + src = fetchRetro { + repo = "libretro-" + core; + rev = "991016b3c7a9c8b0e49b2bc9c72f68c60800fc7b"; + sha256 = "1abv9qgfvh3x84shgyl3y90bjz77mjj17vibag7bg6i8hgjikjgq"; + }; + description = "Prboom libretro port"; + license = gpl2; + makefile = "Makefile"; + }; + + prosystem = mkLibRetroCore rec { + core = "prosystem"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "6f7e34aea89db5ba2fbf674e5ff0ad6fc68a198e"; + sha256 = "0pqkb0f51s8ma0l4m9xk2y85z2kh3fgay9g4g8fingbgqq1klvzs"; + }; + description = "Port of ProSystem to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + quicknes = mkLibRetroCore { + core = "quicknes"; + src = fetchRetro { + repo = "QuickNES_Core"; + rev = "31654810b9ebf8b07f9c4dc27197af7714364ea7"; + sha256 = "15fr5a9hv7wgndb0fpmr6ws969him41jidzir2ix9xkb0mmvcm86"; + }; + description = "QuickNES libretro port"; + license = lgpl21Plus; + makefile = "Makefile"; + }; + + sameboy = mkLibRetroCore rec { + core = "sameboy"; + src = fetchRetro { + repo = "sameboy"; + rev = "c9e547c1063fd62c40a4b7a86e7db99dc9089051"; + sha256 = "0bff6gicm24d7h270aqvgd8il6mi7j689nj5zl9ij0wc77hrrpmq"; + }; + description = "SameBoy libretro port"; + license = mit; + extraNativeBuildInputs = [ which hexdump ]; + preBuild = "cd libretro"; + makefile = "Makefile"; + }; + + scummvm = mkLibRetroCore rec { + core = "scummvm"; + src = fetchRetro { + repo = core; + rev = "de91bf9bcbf4449f91e2f50fde173496a2b52ee0"; + sha256 = "06h9xaf2b1cjk85nbslpjj0fm9iy9b2lxr1wf3i09hgs4sh6x464"; + }; + description = "Libretro port of ScummVM"; + license = gpl2; + extraBuildInputs = [ fluidsynth libjpeg libvorbis libGLU libGL SDL ]; + makefile = "Makefile"; + preConfigure = "cd backends/platform/libretro/build"; + }; + + smsplus-gx = mkLibRetroCore rec { + core = "smsplus"; + src = fetchRetro { + repo = core + "-gx"; + rev = "36c82768c03d889f1cf4b66369edac2297acba32"; + sha256 = "1f9waikyp7kp2abb76wlv9hmf2jpc76zjmfqyc7wk2pc70ljm3l4"; + }; + description = "SMS Plus GX libretro port"; + license = gpl2Plus; + }; + + snes9x = mkLibRetroCore rec { + core = "snes9x"; + src = fetchFromGitHub { + owner = "snes9xgit"; + repo = core; + rev = "6db918cfe32b157239da44096091c212fdfb3b60"; + sha256 = "0y3jhy50qdhhfglybys9m0fgk9r24ksdcgv5iqpyxy5a4cjvhv8j"; + }; + description = "Port of SNES9x git to libretro"; + license = "Non-commercial"; + makefile = "Makefile"; + preBuild = "cd libretro"; + }; + + snes9x2002 = mkLibRetroCore rec { + core = "snes9x2002"; + src = fetchRetro { + repo = core; + rev = "a869da7f22c63ee1cb316f79c6dd7691a369da3e"; + sha256 = "11lcwscnxg6sk9as2xlr4nai051qhidbsymyis4nz3r4dmgzf8j8"; + }; + description = "Optimized port/rewrite of SNES9x 1.39 to Libretro"; + license = "Non-commercial"; + makefile = "Makefile"; + }; + + snes9x2005 = mkLibRetroCore rec { + core = "snes9x2005"; + src = fetchRetro { + repo = core; + rev = "c216559b9e0dc3d7f059dcf31b813402ad47fea5"; + sha256 = "19b2rpj6i32c34ryvlna4yca84y5ypza78w4x9l17qlhp021h9pv"; + }; + description = "Optimized port/rewrite of SNES9x 1.43 to Libretro"; + license = "Non-commercial"; + makefile = "Makefile"; + makeFlags = [ "USE_BLARGG_APU=1" ]; + postBuild = "mv snes9x2005_plus_libretro${stdenv.hostPlatform.extensions.sharedLibrary} snes9x2005_libretro${stdenv.hostPlatform.extensions.sharedLibrary}"; + }; + + snes9x2010 = mkLibRetroCore rec { + core = "snes9x2010"; + src = fetchRetro { + repo = core; + rev = "ba9f2240360f8db270fb6ba5465c79c317070560"; + sha256 = "00y53sjrsp8sccpp1qqw88iawsz30g6d370cbqcxs4ya1r6awn5x"; + }; + description = "Optimized port/rewrite of SNES9x 1.52+ to Libretro"; + license = "Non-commercial"; + }; + + stella = mkLibRetroCore rec { + core = "stella"; + src = fetchFromGitHub { + owner = "stella-emu"; + repo = core; + rev = "506bb0bd0618e676b1959931dcc00a9d0f5f0f3d"; + sha256 = "09nclx0ksixngnxkkjjcyhf3d0vl4ykm8fx7m307lvag8nxj7z03"; + }; + description = "Port of Stella to libretro"; + license = gpl2; + extraBuildInputs = [ libpng pkgconfig SDL ]; + makefile = "Makefile"; + preBuild = "cd src/libretro"; + dontConfigure = true; + }; + + stella2014 = mkLibRetroCore rec { + core = "stella2014"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "fc87f2c78d3b177f4b9b19698557dce452ac3ce7"; + sha256 = "0yqzavk1w0d0ngpls32c4wlihii97fz2g6zsgadhm48apwjvn3xx"; + }; + description = "Port of Stella to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + tgbdual = mkLibRetroCore rec { + core = "tgbdual"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "9be31d373224cbf288db404afc785df41e61b213"; + sha256 = "19m3f3hj3jyg711z1xq8qn1hgsr593krl6s6hi0r6vf8p5x0zbzw"; + }; + description = "Port of TGBDual to libretro"; + license = gpl2; + makefile = "Makefile"; + }; + + tic80 = mkLibRetroCore { + core = "tic80"; + src = fetchRetro { + repo = "tic-80"; + rev = "f43bad908d5f05f2a66d5cd1d6f21b234d4abd2c"; + sha256 = "0bp34r8qqyw52alws1z4ib9j7bs4d641q6nvqszd07snp9lpvwym"; + }; + description = "Port of TIC-80 to libretro"; + license = mit; + extraNativeBuildInputs = [ cmake pkgconfig ]; + makefile = "Makefile"; + cmakeFlags = [ + "-DBUILD_LIBRETRO=ON" + "-DBUILD_DEMO_CARTS=OFF" + "-DBUILD_PRO=OFF" + "-DBUILD_PLAYER=OFF" + "-DBUILD_SDL=OFF" + "-DBUILD_SOKOL=OFF" + ]; + postBuild = "cd lib"; + }; + + vba-next = mkLibRetroCore rec { + core = "vba-next"; + src = fetchRetro { + repo = core; + rev = "019132daf41e33a9529036b8728891a221a8ce2e"; + sha256 = "0hab4rhvvcg30jifd9h9jq5q2vqk2hz5i1q456w6v2d10hl1lf15"; + }; + description = "VBA-M libretro port with modifications for speed"; + license = gpl2; + }; + + vba-m = mkLibRetroCore rec { + core = "vbam"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "7d88e045a2fe44e56b3f84846beec446b4c4b2d9"; + sha256 = "04f8adg99a36qkqhij54vkw5z18m5ld33p78lbmv8cxk7k7g7yhy"; + }; + description = "vanilla VBA-M libretro port"; + license = gpl2; + makefile = "Makefile"; + preBuild = "cd src/libretro"; + }; + + vecx = mkLibRetroCore rec { + core = "vecx"; + src = fetchRetro { + repo = "libretro-" + core; + rev = "321205271b1c6be5dbdb8d309097a5b5c2032dbd"; + sha256 = "1w54394yhf2yqmq1b8wi5y7lvixc5hpjxpyiancrdbjd0af7pdvd"; + }; + description = "Port of Vecx to libretro"; + license = gpl3; + }; + + virtualjaguar = mkLibRetroCore rec { + core = "virtualjaguar"; + src = fetchRetro { + repo = core + "-libretro"; + rev = "a162fb75926f5509f187e9bfc69958bced40b0a6"; + sha256 = "06k8xpn5y9rzmi2lwfw0v9v9pz4wvmpalycc608bw9cl39lmz10h"; + }; + description = "Port of VirtualJaguar to libretro"; + license = gpl3; + makefile = "Makefile"; + }; + + yabause = mkLibRetroCore rec { + core = "yabause"; + src = fetchRetro { + repo = core; + rev = "9be109f9032afa793d2a79b837c4cc232cea5929"; + sha256 = "0aj862bs4dmnldy62wdssj5l63ibfkbzqvkxcqa3wyvdz4i367jc"; + }; + description = "Port of Yabause to libretro"; + license = gpl2; + makefile = "Makefile"; + # Disable SSE for non-x86. DYNAREC doesn't build on either Aarch64 or x86_64. + makeFlags = stdenv.lib.optional (!stdenv.hostPlatform.isx86) "HAVE_SSE=0"; + preBuild = "cd yabause/src/libretro"; + }; + +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/default.nix new file mode 100644 index 000000000000..bfc2c338769c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/default.nix @@ -0,0 +1,63 @@ +{ stdenv, fetchFromGitHub, which, pkgconfig, makeWrapper +, ffmpeg_3, libGLU, libGL, freetype, libxml2, python3 +, libobjc, AppKit, Foundation +, alsaLib ? null +, libdrm ? null +, libpulseaudio ? null +, libv4l ? null +, libX11 ? null +, libXdmcp ? null +, libXext ? null +, libXxf86vm ? null +, mesa ? null +, SDL2 ? null +, udev ? null +, enableNvidiaCgToolkit ? false, nvidia_cg_toolkit ? null +, withVulkan ? stdenv.isLinux, vulkan-loader ? null +, fetchurl +, wayland +, libxkbcommon +}: + +with stdenv.lib; + +stdenv.mkDerivation rec { + pname = "retroarch-bare"; + version = "1.8.5"; + + src = fetchFromGitHub { + owner = "libretro"; + repo = "RetroArch"; + sha256 = "1pg8j9wvwgrzsv4xdai6i6jgdcc922v0m42rbqxvbghbksrc8la3"; + rev = "v${version}"; + }; + + nativeBuildInputs = [ pkgconfig wayland ] + ++ optional withVulkan makeWrapper; + + buildInputs = [ ffmpeg_3 freetype libxml2 libGLU libGL python3 SDL2 which ] + ++ optional enableNvidiaCgToolkit nvidia_cg_toolkit + ++ optional withVulkan vulkan-loader + ++ optionals stdenv.isDarwin [ libobjc AppKit Foundation ] + ++ optionals stdenv.isLinux [ alsaLib libdrm libpulseaudio libv4l libX11 + libXdmcp libXext libXxf86vm mesa udev + wayland libxkbcommon ]; + + enableParallelBuilding = true; + + configureFlags = stdenv.lib.optionals stdenv.isLinux [ "--enable-kms" "--enable-egl" ]; + + postInstall = optionalString withVulkan '' + wrapProgram $out/bin/retroarch --prefix LD_LIBRARY_PATH ':' ${vulkan-loader}/lib + ''; + + preFixup = "rm $out/bin/retroarch-cg2glsl"; + + meta = { + homepage = "https://libretro.com"; + description = "Multi-platform emulator frontend for libretro cores"; + license = licenses.gpl3; + platforms = platforms.all; + maintainers = with maintainers; [ MP2E edwtjo matthewbauer kolbycrouch ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/kodi-advanced-launchers.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/kodi-advanced-launchers.nix new file mode 100644 index 000000000000..d751c4f7fc43 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/kodi-advanced-launchers.nix @@ -0,0 +1,40 @@ +{ stdenv, pkgs, cores, runtimeShell }: + +assert cores != []; + +with pkgs.lib; + +let + + script = exec: '' + #!${runtimeShell} + nohup sh -c "pkill -SIGTSTP kodi" & + # https://forum.kodi.tv/showthread.php?tid=185074&pid=1622750#pid1622750 + nohup sh -c "sleep 10 && ${exec} '$@' -f;pkill -SIGCONT kodi" + ''; + scriptSh = exec: pkgs.writeScript ("kodi-"+exec.name) (script exec.path); + execs = map (core: rec { name = core.core; path = core+"/bin/retroarch-"+name;}) cores; + +in + +stdenv.mkDerivation { + pname = "kodi-retroarch-advanced-launchers"; + version = "0.2"; + + dontBuild = true; + + buildCommand = '' + mkdir -p $out/bin + ${stdenv.lib.concatMapStrings (exec: "ln -s ${scriptSh exec} $out/bin/kodi-${exec.name};") execs} + ''; + + meta = { + description = "Kodi retroarch advanced launchers"; + longDescription = '' + These retroarch launchers are intended to be used with + advanced (emulation) launcher for Kodi since device input is + otherwise caught by both Kodi and the retroarch process. + ''; + license = stdenv.lib.licenses.gpl3; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/wrapper.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/wrapper.nix new file mode 100644 index 000000000000..08ebf8ea8544 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retroarch/wrapper.nix @@ -0,0 +1,37 @@ +{ stdenv, lib, makeWrapper, retroarch, cores }: + +stdenv.mkDerivation { + pname = "retroarch"; + version = lib.getVersion retroarch; + + buildInputs = [ makeWrapper ]; + + buildCommand = '' + mkdir -p $out/lib + $(for coreDir in $cores + do + $(ln -s $coreDir/* $out/lib/.) + done) + + ln -s -t $out ${retroarch}/share + + if [ -d ${retroarch}/Applications ]; then + ln -s -t $out ${retroarch}/Applications + fi + + makeWrapper ${retroarch}/bin/retroarch $out/bin/retroarch \ + --suffix-each LD_LIBRARY_PATH ':' "$cores" \ + --add-flags "-L $out/lib/" \ + ''; + + cores = map (x: x + x.libretroCore) cores; + preferLocalBuild = true; + + meta = with retroarch.meta; { + inherit license homepage platforms maintainers; + description = description + + " (with cores: " + + lib.concatStrings (lib.intersperse ", " (map (x: ""+x.name) cores)) + + ")"; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/retrofe/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retrofe/default.nix new file mode 100644 index 000000000000..d2c904723b1e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retrofe/default.nix @@ -0,0 +1,78 @@ +{ stdenv, fetchhg, cmake, glib, gst_all_1, makeWrapper, pkgconfig +, python, SDL2, SDL2_image, SDL2_mixer, SDL2_ttf, sqlite, zlib, runtimeShell +}: + +stdenv.mkDerivation { + pname = "retrofe"; + version = "0.6.169"; + + src = fetchhg { + url = "https://bitbucket.org/teamretro/retrofe"; + rev = "8793e03"; + sha256 = "0cvsg07ff0fdqh5zgiv2fs7s6c98hn150kpxmpw5fn6jilaszwkm"; + }; + + nativeBuildInputs = [ cmake makeWrapper pkgconfig python ]; + + buildInputs = [ + glib gst_all_1.gstreamer SDL2 SDL2_image SDL2_mixer SDL2_ttf sqlite zlib + ] ++ (with gst_all_1; [ gst-libav gst-plugins-base gst-plugins-good ]); + + patches = [ ./include-paths.patch ]; + + configurePhase = '' + cmake RetroFE/Source -BRetroFE/Build -DCMAKE_BUILD_TYPE=Release \ + -DVERSION_MAJOR=0 -DVERSION_MINOR=0 -DVERSION_BUILD=0 \ + -DGSTREAMER_BASE_INCLUDE_DIRS='${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0' + ''; + + buildPhase = '' + cmake --build RetroFE/Build + python Scripts/Package.py --os=linux --build=full + ''; + + installPhase = '' + mkdir -p $out/bin + mkdir -p $out/share/retrofe + cp -r Artifacts/linux/RetroFE $out/share/retrofe/example + mv $out/share/retrofe/example/retrofe $out/bin/ + + cat > $out/bin/retrofe-init << EOF + #!${runtimeShell} + + echo "This will install retrofe's example files into this directory" + echo "Example files location: $out/share/retrofe/example/" + + while true; do + read -p "Do you want to proceed? [yn] " yn + case \$yn in + [Yy]* ) cp -r --no-preserve=all $out/share/retrofe/example/* .; break;; + [Nn]* ) exit;; + * ) echo "Please answer with yes or no.";; + esac + done + EOF + + chmod +x $out/bin/retrofe-init + + runHook postInstall + ''; + + # retrofe will look for config files in its install path ($out/bin). + # When set it will use $RETROFE_PATH instead. Sadly this behaviour isn't + # documented well. To make it behave more like as expected it's set to + # $PWD by default here. + postInstall = '' + wrapProgram "$out/bin/retrofe" \ + --prefix GST_PLUGIN_PATH : "$GST_PLUGIN_SYSTEM_PATH_1_0" \ + --run 'export RETROFE_PATH=''${RETROFE_PATH:-$PWD}' + ''; + + meta = with stdenv.lib; { + description = "A frontend for arcade cabinets and media PCs"; + homepage = "http://retrofe.com"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ hrdinka ]; + platforms = with platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/retrofe/include-paths.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retrofe/include-paths.patch new file mode 100644 index 000000000000..02eef2594ea6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/retrofe/include-paths.patch @@ -0,0 +1,11 @@ +diff -ur RetroFE.1/RetroFE/Source/CMakeLists.txt RetroFE.2/RetroFE/Source/CMakeLists.txt +--- RetroFE.1/RetroFE/Source/CMakeLists.txt 2016-02-21 14:52:36.726070602 +0100 ++++ RetroFE.2/RetroFE/Source/CMakeLists.txt 2016-02-21 14:38:43.036249029 +0100 +@@ -59,6 +59,7 @@ + set(RETROFE_INCLUDE_DIRS
+ "${GLIB2_INCLUDE_DIRS}"
+ "${GSTREAMER_INCLUDE_DIRS}"
++ "${GSTREAMER_BASE_INCLUDE_DIRS}"
+ "${SDL2_INCLUDE_DIRS}"
+ "${SDL2_IMAGE_INCLUDE_DIRS}"
+ "${SDL2_MIXER_INCLUDE_DIRS}"
diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/rpcs3/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/rpcs3/default.nix new file mode 100644 index 000000000000..f71420674e5c --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/rpcs3/default.nix @@ -0,0 +1,55 @@ +{ mkDerivation, lib, fetchgit, cmake, pkgconfig, git +, qtbase, qtquickcontrols, openal, glew, vulkan-headers, vulkan-loader, libpng +, ffmpeg, libevdev, python3 +, pulseaudioSupport ? true, libpulseaudio +, waylandSupport ? true, wayland +, alsaSupport ? true, alsaLib +}: + +let + majorVersion = "0.0.8"; + gitVersion = "9300-341fdf7eb"; # echo $(git rev-list HEAD --count)-$(git rev-parse --short HEAD) +in +mkDerivation { + pname = "rpcs3"; + version = "${majorVersion}-${gitVersion}"; + + src = fetchgit { + url = "https://github.com/RPCS3/rpcs3"; + rev = "v${majorVersion}"; + sha256 = "1qx97zkkjl6bmv5rhfyjqynbz0v8h40b2wxqnl59g287wj0yk3y1"; + }; + + preConfigure = '' + cat > ./rpcs3/git-version.h <<EOF + #define RPCS3_GIT_VERSION "${gitVersion}" + #define RPCS3_GIT_BRANCH "HEAD" + #define RPCS3_GIT_VERSION_NO_UPDATE 1 + EOF + ''; + + cmakeFlags = [ + "-DUSE_SYSTEM_LIBPNG=ON" + "-DUSE_SYSTEM_FFMPEG=ON" + "-DUSE_NATIVE_INSTRUCTIONS=OFF" + ]; + + nativeBuildInputs = [ cmake pkgconfig git ]; + + buildInputs = [ + qtbase qtquickcontrols openal glew vulkan-headers vulkan-loader libpng ffmpeg + libevdev python3 + ] ++ lib.optional pulseaudioSupport libpulseaudio + ++ lib.optional alsaSupport alsaLib + ++ lib.optional waylandSupport wayland; + + enableParallelBuilding = true; + + meta = with lib; { + description = "PS3 emulator/debugger"; + homepage = "https://rpcs3.net/"; + maintainers = with maintainers; [ abbradar nocent ]; + license = licenses.gpl2; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/default.nix new file mode 100644 index 000000000000..d1fa03898231 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/default.nix @@ -0,0 +1,106 @@ +{ stdenv, fetchFromGitHub, fetchurl, makeWrapper, makeDesktopItem, linkFarmFromDrvs +, dotnet-sdk_3, dotnetPackages, dotnetCorePackages +, SDL2, libX11, openal +, gtk3, gobject-introspection, wrapGAppsHook +}: + +let + runtimeDeps = [ + SDL2 + gtk3 + libX11 + openal + ]; +in stdenv.mkDerivation rec { + pname = "ryujinx"; + version = "1.0.5346"; + + src = fetchFromGitHub { + owner = "Ryujinx"; + repo = "Ryujinx"; + rev = "2ce59c44bcb2d789f4d6312b26cf41f36915d73c"; + sha256 = "0hk8jdacg8ryhh0mpnfjbzrrpy8gv87f4hp0hybyypglmaxz8grm"; + }; + + nativeBuildInputs = [ dotnet-sdk_3 dotnetPackages.Nuget makeWrapper wrapGAppsHook gobject-introspection ]; + + nugetDeps = linkFarmFromDrvs "${pname}-nuget-deps" (import ./deps.nix { + fetchNuGet = { name, version, sha256 }: fetchurl { + name = "nuget-${name}-${version}.nupkg"; + url = "https://www.nuget.org/api/v2/package/${name}/${version}"; + inherit sha256; + }; + }); + + patches = [ ./log.patch ]; # Without this, Ryujinx tries to write logs to the nix store. This patch makes it write to "~/.config/Ryujinx/Logs" on Linux. + + configurePhase = '' + runHook preConfigure + + export HOME=$(mktemp -d) + export DOTNET_CLI_TELEMETRY_OPTOUT=1 + export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 + + nuget sources Add -Name nixos -Source "$PWD/nixos" + nuget init "$nugetDeps" "$PWD/nixos" + + # FIXME: https://github.com/NuGet/Home/issues/4413 + mkdir -p $HOME/.nuget/NuGet + cp $HOME/.config/NuGet/NuGet.Config $HOME/.nuget/NuGet + + dotnet restore --source "$PWD/nixos" Ryujinx.sln + + runHook postConfigure + ''; + + buildPhase = '' + runHook preBuild + dotnet build Ryujinx.sln \ + --no-restore \ + --configuration Release \ + -p:Version=${version} + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + dotnet publish Ryujinx.sln \ + --no-build \ + --configuration Release \ + --no-self-contained \ + --output $out/lib/ryujinx + shopt -s extglob + + makeWrapper $out/lib/ryujinx/Ryujinx $out/bin/Ryujinx \ + --set DOTNET_ROOT "${dotnetCorePackages.netcore_3_1}" \ + --suffix LD_LIBRARY_PATH : "${stdenv.lib.makeLibraryPath runtimeDeps}" \ + ''${gappsWrapperArgs[@]} + + for i in 16 32 48 64 96 128 256 512 1024; do + install -D ${src}/Ryujinx/Ui/assets/Icon.png $out/share/icons/hicolor/''${i}x$i/apps/ryujinx.png + done + cp -r ${makeDesktopItem { + desktopName = "Ryujinx"; + name = "ryujinx"; + exec = "Ryujinx"; + icon = "ryujinx"; + comment = meta.description; + type = "Application"; + categories = "Game;"; + }}/share/applications $out/share + + runHook postInstall + ''; + + # Strip breaks the executable. + dontStrip = true; + + meta = with stdenv.lib; { + description = "Experimental Nintendo Switch Emulator written in C#"; + homepage = "https://ryujinx.org/"; + license = licenses.mit; + maintainers = [ maintainers.ivar ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/deps.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/deps.nix new file mode 100644 index 000000000000..94093e1e29c6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/deps.nix @@ -0,0 +1,1062 @@ +{ fetchNuGet }: [ + (fetchNuGet { + name = "AtkSharp"; + version = "3.22.25.56"; + sha256 = "069fm4wplxb4s1i6mdj00b22zqpz6pg9miglcj8mkf1b4lnn09g0"; + }) + (fetchNuGet { + name = "CairoSharp"; + version = "3.22.25.56"; + sha256 = "0b7p4yj88wgayh464j3rkbc4js8z57wxy3mprgvx86i3rc2v5jd9"; + }) + (fetchNuGet { + name = "Concentus"; + version = "1.1.7"; + sha256 = "0y5z444wrbhlmsqpy2sxmajl1fbf74843lvgj3y6vz260dn2q0l0"; + }) + (fetchNuGet { + name = "DiscordRichPresence"; + version = "1.0.150"; + sha256 = "0qmbi4sccia3w80q8xfvj3bw62nvz047wq198n2b2aflkf47bq79"; + }) + (fetchNuGet { + name = "FFmpeg.AutoGen"; + version = "4.3.0"; + sha256 = "03lb3xzgwxik8nljq87pr1b9bsxbsl3a4kvy0kqkw9f57n29ihvk"; + }) + (fetchNuGet { + name = "GdkSharp"; + version = "3.22.25.56"; + sha256 = "0f708dwy6i9hghxs711scwkww28lvfjd6gykk7xv921vich5xvy6"; + }) + (fetchNuGet { + name = "GioSharp"; + version = "3.22.25.56"; + sha256 = "1i7x1bakv5sq27ppl6w79c1wbvnfhf1713plc9ixaznh1fclcnwr"; + }) + (fetchNuGet { + name = "GLibSharp"; + version = "3.22.25.56"; + sha256 = "12czfm0lgjcy9hgqsiycwfv124dq619svrnsi036246i5hycj37w"; + }) + (fetchNuGet { + name = "GLWidget"; + version = "1.0.2"; + sha256 = "0nb46jiscnsywwdfy7zhx1bw4jfmca3s6l8dhbi99gc4bvp8ar7p"; + }) + (fetchNuGet { + name = "GtkSharp"; + version = "3.22.25.56"; + sha256 = "18dbn834wimdmxmgsqd81hyvjyyzgbnayzvz9f714cgw4yjkjyqs"; + }) + (fetchNuGet { + name = "GtkSharp.Dependencies"; + version = "1.1.0"; + sha256 = "1g1rhcn38ww97638rds6l5bysra43hkhv47fy71fvq89623zgyxn"; + }) + (fetchNuGet { + name = "LibHac"; + version = "0.12.0"; + sha256 = "08r9b9cdcbz6339sw8r5dfy2a8iw53df0j3xq9rygkg02xspimld"; + }) + (fetchNuGet { + name = "Microsoft.AspNetCore.App.Runtime.linux-x64"; + version = "3.1.8"; + sha256 = "140zr3nwkmf6xc52gq4iz6ycyh95fxy0jpgn637pkd9z423z8135"; + }) + (fetchNuGet { + name = "Microsoft.AspNetCore.App.Runtime.osx-x64"; + version = "3.1.8"; + sha256 = "0dkib4r4v5wqxsi6zca6x3zin1x4lha53dqbgsaiah961h1yhpp4"; + }) + (fetchNuGet { + name = "Microsoft.AspNetCore.App.Runtime.win-x64"; + version = "3.1.8"; + sha256 = "05sv39b6sc8fhh3m8kwq0lp58n8mrv5ivxa60rfqk6v6i7gs8b0f"; + }) + (fetchNuGet { + name = "Microsoft.CodeCoverage"; + version = "16.7.0"; + sha256 = "10f6y1q8w61vc8ffqd7jsndwfskkfqbdzfqswyxnrr0qkkqx29v1"; + }) + (fetchNuGet { + name = "Microsoft.CSharp"; + version = "4.0.1"; + sha256 = "0zxc0apx1gcx361jlq8smc9pfdgmyjh6hpka8dypc9w23nlsh6yj"; + }) + (fetchNuGet { + name = "Microsoft.DotNet.InternalAbstractions"; + version = "1.0.0"; + sha256 = "0mp8ihqlb7fsa789frjzidrfjc1lrhk88qp3xm5qvr7vf4wy4z8x"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.App.Host.osx-x64"; + version = "3.1.8"; + sha256 = "1ip8pgra9z6ha3yc4xqkb85cl9kx2jbwhwzdi3dp8bkqbvlirvkb"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.App.Host.win-x64"; + version = "3.1.8"; + sha256 = "1d7wlnibf9fgq57hwnjqhlh33hxg417ljf1djb9yan4xik1wl4hb"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.App.Runtime.linux-x64"; + version = "3.1.8"; + sha256 = "1bv9n9wzsqf9g8h6z10p61xkcx8ad4nnip83qv8yyfvhr4kdmbsa"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.App.Runtime.osx-x64"; + version = "3.1.8"; + sha256 = "1iabp5czrz9wmsqcl0gi8r580vlhky3aak5ndz9fw065wlsqpv7w"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.App.Runtime.win-x64"; + version = "3.1.8"; + sha256 = "010c514ls1q9gdnyj0kvknx7a0z034lfbbcxqa8cjiv0snax4pqz"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.Platforms"; + version = "1.0.1"; + sha256 = "01al6cfxp68dscl15z7rxfw9zvhm64dncsw09a1vmdkacsa2v6lr"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.Platforms"; + version = "1.1.0"; + sha256 = "08vh1r12g6ykjygq5d3vq09zylgb84l63k49jc4v8faw9g93iqqm"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.Platforms"; + version = "2.0.0"; + sha256 = "1fk2fk2639i7nzy58m9dvpdnzql4vb8yl8vr19r2fp8lmj9w2jr0"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.Platforms"; + version = "3.1.0"; + sha256 = "1gc1x8f95wk8yhgznkwsg80adk1lc65v9n5rx4yaa4bc5dva0z3j"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.Targets"; + version = "1.0.1"; + sha256 = "0ppdkwy6s9p7x9jix3v4402wb171cdiibq7js7i13nxpdky7074p"; + }) + (fetchNuGet { + name = "Microsoft.NETCore.Targets"; + version = "1.1.0"; + sha256 = "193xwf33fbm0ni3idxzbr5fdq3i2dlfgihsac9jj7whj0gd902nh"; + }) + (fetchNuGet { + name = "Microsoft.NET.Test.Sdk"; + version = "16.7.0"; + sha256 = "1vkp6b82566z2pxn9035wrh4339kz3ki17g5qlwmwdbn4br6lcfy"; + }) + (fetchNuGet { + name = "Microsoft.TestPlatform.ObjectModel"; + version = "16.7.0"; + sha256 = "0nmw80ap2rn9h4i1x7qb15n763sh3wy8hjp1i5n0av7100g0yjqz"; + }) + (fetchNuGet { + name = "Microsoft.TestPlatform.TestHost"; + version = "16.7.0"; + sha256 = "0485nv0wcwdwjhif5a7d1i0znaf9acqyawhpqcwschw827chqzrs"; + }) + (fetchNuGet { + name = "Microsoft.Win32.Primitives"; + version = "4.0.1"; + sha256 = "1n8ap0cmljbqskxpf8fjzn7kh1vvlndsa75k01qig26mbw97k2q7"; + }) + (fetchNuGet { + name = "Microsoft.Win32.Primitives"; + version = "4.3.0"; + sha256 = "0j0c1wj4ndj21zsgivsc24whiya605603kxrbiw6wkfdync464wq"; + }) + (fetchNuGet { + name = "Microsoft.Win32.Registry"; + version = "4.3.0"; + sha256 = "1gxyzxam8163vk1kb6xzxjj4iwspjsz9zhgn1w9rjzciphaz0ig7"; + }) + (fetchNuGet { + name = "Microsoft.Win32.Registry"; + version = "4.5.0"; + sha256 = "1zapbz161ji8h82xiajgriq6zgzmb1f3ar517p2h63plhsq5gh2q"; + }) + (fetchNuGet { + name = "Microsoft.Win32.Registry"; + version = "4.7.0"; + sha256 = "0bx21jjbs7l5ydyw4p6cn07chryxpmchq2nl5pirzz4l3b0q4dgs"; + }) + (fetchNuGet { + name = "Microsoft.Win32.SystemEvents"; + version = "4.5.0"; + sha256 = "0fnkv3ky12227zqg4zshx4kw2mvysq2ppxjibfw02cc3iprv4njq"; + }) + (fetchNuGet { + name = "Mono.Posix.NETStandard"; + version = "1.0.0"; + sha256 = "0xlja36hwpjm837haq15mjh2prcf68lyrmn72nvgpz8qnf9vappw"; + }) + (fetchNuGet { + name = "MsgPack.Cli"; + version = "1.0.1"; + sha256 = "1dk2bs3g16lsxcjjm7gfx6jxa4667wccw94jlh2ql7y7smvh9z8r"; + }) + (fetchNuGet { + name = "NETStandard.Library"; + version = "1.6.0"; + sha256 = "0nmmv4yw7gw04ik8ialj3ak0j6pxa9spih67hnn1h2c38ba8h58k"; + }) + (fetchNuGet { + name = "NETStandard.Library"; + version = "2.0.0"; + sha256 = "1bc4ba8ahgk15m8k4nd7x406nhi0kwqzbgjk2dmw52ss553xz7iy"; + }) + (fetchNuGet { + name = "Newtonsoft.Json"; + version = "12.0.2"; + sha256 = "0w2fbji1smd2y7x25qqibf1qrznmv4s6s0jvrbvr6alb7mfyqvh5"; + }) + (fetchNuGet { + name = "Newtonsoft.Json"; + version = "9.0.1"; + sha256 = "0mcy0i7pnfpqm4pcaiyzzji4g0c8i3a5gjz28rrr28110np8304r"; + }) + (fetchNuGet { + name = "NuGet.Frameworks"; + version = "5.0.0"; + sha256 = "18ijvmj13cwjdrrm52c8fpq021531zaz4mj4b4zapxaqzzxf2qjr"; + }) + (fetchNuGet { + name = "NUnit"; + version = "3.12.0"; + sha256 = "1880j2xwavi8f28vxan3hyvdnph4nlh5sbmh285s4lc9l0b7bdk2"; + }) + (fetchNuGet { + name = "NUnit3TestAdapter"; + version = "3.17.0"; + sha256 = "0kxc6z3b8ccdrcyqz88jm5yh5ch9nbg303v67q8sp5hhs8rl8nk6"; + }) + (fetchNuGet { + name = "OpenTK.NetStandard"; + version = "1.0.5.12"; + sha256 = "1n8j6k47189l5b6rnhyq391d84v6zkpiiqq41cccb6qizvrcgl69"; + }) + (fetchNuGet { + name = "PangoSharp"; + version = "3.22.25.56"; + sha256 = "12b0761nfsci4rvzcba4hrh5rcn6q24qaxwwz66myb82c999qj8w"; + }) + (fetchNuGet { + name = "runtime.any.System.Collections"; + version = "4.3.0"; + sha256 = "0bv5qgm6vr47ynxqbnkc7i797fdi8gbjjxii173syrx14nmrkwg0"; + }) + (fetchNuGet { + name = "runtime.any.System.Diagnostics.Tools"; + version = "4.3.0"; + sha256 = "1wl76vk12zhdh66vmagni66h5xbhgqq7zkdpgw21jhxhvlbcl8pk"; + }) + (fetchNuGet { + name = "runtime.any.System.Diagnostics.Tracing"; + version = "4.3.0"; + sha256 = "00j6nv2xgmd3bi347k00m7wr542wjlig53rmj28pmw7ddcn97jbn"; + }) + (fetchNuGet { + name = "runtime.any.System.Globalization"; + version = "4.3.0"; + sha256 = "1daqf33hssad94lamzg01y49xwndy2q97i2lrb7mgn28656qia1x"; + }) + (fetchNuGet { + name = "runtime.any.System.Globalization.Calendars"; + version = "4.3.0"; + sha256 = "1ghhhk5psqxcg6w88sxkqrc35bxcz27zbqm2y5p5298pv3v7g201"; + }) + (fetchNuGet { + name = "runtime.any.System.IO"; + version = "4.3.0"; + sha256 = "0l8xz8zn46w4d10bcn3l4yyn4vhb3lrj2zw8llvz7jk14k4zps5x"; + }) + (fetchNuGet { + name = "runtime.any.System.Reflection"; + version = "4.3.0"; + sha256 = "02c9h3y35pylc0zfq3wcsvc5nqci95nrkq0mszifc0sjx7xrzkly"; + }) + (fetchNuGet { + name = "runtime.any.System.Reflection.Extensions"; + version = "4.3.0"; + sha256 = "0zyri97dfc5vyaz9ba65hjj1zbcrzaffhsdlpxc9bh09wy22fq33"; + }) + (fetchNuGet { + name = "runtime.any.System.Reflection.Primitives"; + version = "4.3.0"; + sha256 = "0x1mm8c6iy8rlxm8w9vqw7gb7s1ljadrn049fmf70cyh42vdfhrf"; + }) + (fetchNuGet { + name = "runtime.any.System.Resources.ResourceManager"; + version = "4.3.0"; + sha256 = "03kickal0iiby82wa5flar18kyv82s9s6d4xhk5h4bi5kfcyfjzl"; + }) + (fetchNuGet { + name = "runtime.any.System.Runtime"; + version = "4.3.0"; + sha256 = "1cqh1sv3h5j7ixyb7axxbdkqx6cxy00p4np4j91kpm492rf4s25b"; + }) + (fetchNuGet { + name = "runtime.any.System.Runtime.Handles"; + version = "4.3.0"; + sha256 = "0bh5bi25nk9w9xi8z23ws45q5yia6k7dg3i4axhfqlnj145l011x"; + }) + (fetchNuGet { + name = "runtime.any.System.Runtime.InteropServices"; + version = "4.3.0"; + sha256 = "0c3g3g3jmhlhw4klrc86ka9fjbl7i59ds1fadsb2l8nqf8z3kb19"; + }) + (fetchNuGet { + name = "runtime.any.System.Text.Encoding"; + version = "4.3.0"; + sha256 = "0aqqi1v4wx51h51mk956y783wzags13wa7mgqyclacmsmpv02ps3"; + }) + (fetchNuGet { + name = "runtime.any.System.Text.Encoding.Extensions"; + version = "4.3.0"; + sha256 = "0lqhgqi0i8194ryqq6v2gqx0fb86db2gqknbm0aq31wb378j7ip8"; + }) + (fetchNuGet { + name = "runtime.any.System.Threading.Tasks"; + version = "4.3.0"; + sha256 = "03mnvkhskbzxddz4hm113zsch1jyzh2cs450dk3rgfjp8crlw1va"; + }) + (fetchNuGet { + name = "runtime.any.System.Threading.Timer"; + version = "4.3.0"; + sha256 = "0aw4phrhwqz9m61r79vyfl5la64bjxj8l34qnrcwb28v49fg2086"; + }) + (fetchNuGet { + name = "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "16rnxzpk5dpbbl1x354yrlsbvwylrq456xzpsha1n9y3glnhyx9d"; + }) + (fetchNuGet { + name = "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0hkg03sgm2wyq8nqk6dbm9jh5vcq57ry42lkqdmfklrw89lsmr59"; + }) + (fetchNuGet { + name = "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0c2p354hjx58xhhz7wv6div8xpi90sc6ibdm40qin21bvi7ymcaa"; + }) + (fetchNuGet { + name = "runtime.native.System"; + version = "4.0.0"; + sha256 = "1ppk69xk59ggacj9n7g6fyxvzmk1g5p4fkijm0d7xqfkig98qrkf"; + }) + (fetchNuGet { + name = "runtime.native.System"; + version = "4.3.0"; + sha256 = "15hgf6zaq9b8br2wi1i3x0zvmk410nlmsmva9p0bbg73v6hml5k4"; + }) + (fetchNuGet { + name = "runtime.native.System.IO.Compression"; + version = "4.1.0"; + sha256 = "0d720z4lzyfcabmmnvh0bnj76ll7djhji2hmfh3h44sdkjnlkknk"; + }) + (fetchNuGet { + name = "runtime.native.System.Net.Http"; + version = "4.0.1"; + sha256 = "1hgv2bmbaskx77v8glh7waxws973jn4ah35zysnkxmf0196sfxg6"; + }) + (fetchNuGet { + name = "runtime.native.System.Security.Cryptography"; + version = "4.0.0"; + sha256 = "0k57aa2c3b10wl3hfqbgrl7xq7g8hh3a3ir44b31dn5p61iiw3z9"; + }) + (fetchNuGet { + name = "runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "18pzfdlwsg2nb1jjjjzyb5qlgy6xjxzmhnfaijq5s2jw3cm3ab97"; + }) + (fetchNuGet { + name = "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0qyynf9nz5i7pc26cwhgi8j62ps27sqmf78ijcfgzab50z9g8ay3"; + }) + (fetchNuGet { + name = "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "1klrs545awhayryma6l7g2pvnp9xy4z0r1i40r80zb45q3i9nbyf"; + }) + (fetchNuGet { + name = "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0zcxjv5pckplvkg0r6mw3asggm7aqzbdjimhvsasb0cgm59x09l3"; + }) + (fetchNuGet { + name = "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "0vhynn79ih7hw7cwjazn87rm9z9fj0rvxgzlab36jybgcpcgphsn"; + }) + (fetchNuGet { + name = "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "160p68l2c7cqmyqjwxydcvgw7lvl1cr0znkw8fp24d1by9mqc8p3"; + }) + (fetchNuGet { + name = "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "15zrc8fgd8zx28hdghcj5f5i34wf3l6bq5177075m2bc2j34jrqy"; + }) + (fetchNuGet { + name = "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl"; + version = "4.3.0"; + sha256 = "1p4dgxax6p7rlgj4q73k73rslcnz4wdcv8q2flg1s8ygwcm58ld5"; + }) + (fetchNuGet { + name = "runtime.unix.Microsoft.Win32.Primitives"; + version = "4.3.0"; + sha256 = "0y61k9zbxhdi0glg154v30kkq7f8646nif8lnnxbvkjpakggd5id"; + }) + (fetchNuGet { + name = "runtime.unix.System.Console"; + version = "4.3.0"; + sha256 = "1pfpkvc6x2if8zbdzg9rnc5fx51yllprl8zkm5npni2k50lisy80"; + }) + (fetchNuGet { + name = "runtime.unix.System.Diagnostics.Debug"; + version = "4.3.0"; + sha256 = "1lps7fbnw34bnh3lm31gs5c0g0dh7548wfmb8zz62v0zqz71msj5"; + }) + (fetchNuGet { + name = "runtime.unix.System.IO.FileSystem"; + version = "4.3.0"; + sha256 = "14nbkhvs7sji5r1saj2x8daz82rnf9kx28d3v2qss34qbr32dzix"; + }) + (fetchNuGet { + name = "runtime.unix.System.Net.Primitives"; + version = "4.3.0"; + sha256 = "0bdnglg59pzx9394sy4ic66kmxhqp8q8bvmykdxcbs5mm0ipwwm4"; + }) + (fetchNuGet { + name = "runtime.unix.System.Net.Sockets"; + version = "4.3.0"; + sha256 = "03npdxzy8gfv035bv1b9rz7c7hv0rxl5904wjz51if491mw0xy12"; + }) + (fetchNuGet { + name = "runtime.unix.System.Private.Uri"; + version = "4.3.0"; + sha256 = "1jx02q6kiwlvfksq1q9qr17fj78y5v6mwsszav4qcz9z25d5g6vk"; + }) + (fetchNuGet { + name = "runtime.unix.System.Runtime.Extensions"; + version = "4.3.0"; + sha256 = "0pnxxmm8whx38dp6yvwgmh22smknxmqs5n513fc7m4wxvs1bvi4p"; + }) + (fetchNuGet { + name = "runtime.win.Microsoft.Win32.Primitives"; + version = "4.3.0"; + sha256 = "0k1h8nnp1s0p8rjwgjyj1387cc1yycv0k22igxc963lqdzrx2z36"; + }) + (fetchNuGet { + name = "runtime.win.System.Console"; + version = "4.3.0"; + sha256 = "0x2yajfrbc5zc6g7nmlr44xpjk6p1hxjq47jn3xki5j7i33zw9jc"; + }) + (fetchNuGet { + name = "runtime.win.System.Diagnostics.Debug"; + version = "4.3.0"; + sha256 = "16fbn4bcynad1ygdq0yk1wmckvs8jvrrf104xa5dc2hlc8y3x58f"; + }) + (fetchNuGet { + name = "runtime.win.System.IO.FileSystem"; + version = "4.3.0"; + sha256 = "1c01nklbxywszsbfaxc76hsz7gdxac3jkphrywfkdsi3v4bwd6g8"; + }) + (fetchNuGet { + name = "runtime.win.System.Net.Primitives"; + version = "4.3.0"; + sha256 = "1dixh195bi7473n17hspll6i562gghdz9m4jk8d4kzi1mlzjk9cf"; + }) + (fetchNuGet { + name = "runtime.win.System.Net.Sockets"; + version = "4.3.0"; + sha256 = "0lr3zki831vs6qhk5wckv2b9qbfk9rcj0ds2926qvj1b9y9m6sck"; + }) + (fetchNuGet { + name = "runtime.win.System.Runtime.Extensions"; + version = "4.3.0"; + sha256 = "1700famsxndccfbcdz9q14qb20p49lax67mqwpgy4gx3vja1yczr"; + }) + (fetchNuGet { + name = "Ryujinx.Graphics.Nvdec.Dependencies"; + version = "4.3.0"; + sha256 = "0szgbdhyhvzpw8nb9k2ww37p5qipab1pdll8idkk57y5xnl2f7ll"; + }) + (fetchNuGet { + name = "System.AppContext"; + version = "4.1.0"; + sha256 = "0fv3cma1jp4vgj7a8hqc9n7hr1f1kjp541s6z0q1r6nazb4iz9mz"; + }) + (fetchNuGet { + name = "System.Buffers"; + version = "4.0.0"; + sha256 = "13s659bcmg9nwb6z78971z1lr6bmh2wghxi1ayqyzl4jijd351gr"; + }) + (fetchNuGet { + name = "System.Buffers"; + version = "4.3.0"; + sha256 = "0fgns20ispwrfqll4q1zc1waqcmylb3zc50ys9x8zlwxh9pmd9jy"; + }) + (fetchNuGet { + name = "System.CodeDom"; + version = "4.4.0"; + sha256 = "1zgbafm5p380r50ap5iddp11kzhr9khrf2pnai6k593wjar74p1g"; + }) + (fetchNuGet { + name = "System.CodeDom"; + version = "4.7.0"; + sha256 = "1lch8gwmw420wsvbv9ir4v5g1ij2ag23cbgi3c9gramj1h4vhlz2"; + }) + (fetchNuGet { + name = "System.Collections"; + version = "4.0.11"; + sha256 = "1ga40f5lrwldiyw6vy67d0sg7jd7ww6kgwbksm19wrvq9hr0bsm6"; + }) + (fetchNuGet { + name = "System.Collections"; + version = "4.3.0"; + sha256 = "19r4y64dqyrq6k4706dnyhhw7fs24kpp3awak7whzss39dakpxk9"; + }) + (fetchNuGet { + name = "System.Collections.Concurrent"; + version = "4.0.12"; + sha256 = "07y08kvrzpak873pmyxs129g1ch8l27zmg51pcyj2jvq03n0r0fc"; + }) + (fetchNuGet { + name = "System.Collections.NonGeneric"; + version = "4.3.0"; + sha256 = "07q3k0hf3mrcjzwj8fwk6gv3n51cb513w4mgkfxzm3i37sc9kz7k"; + }) + (fetchNuGet { + name = "System.Collections.Specialized"; + version = "4.3.0"; + sha256 = "1sdwkma4f6j85m3dpb53v9vcgd0zyc9jb33f8g63byvijcj39n20"; + }) + (fetchNuGet { + name = "System.ComponentModel"; + version = "4.3.0"; + sha256 = "0986b10ww3nshy30x9sjyzm0jx339dkjxjj3401r3q0f6fx2wkcb"; + }) + (fetchNuGet { + name = "System.ComponentModel.EventBasedAsync"; + version = "4.3.0"; + sha256 = "1rv9bkb8yyhqqqrx6x95njv6mdxlbvv527b44mrd93g8fmgkifl7"; + }) + (fetchNuGet { + name = "System.ComponentModel.Primitives"; + version = "4.3.0"; + sha256 = "1svfmcmgs0w0z9xdw2f2ps05rdxmkxxhf0l17xk9l1l8xfahkqr0"; + }) + (fetchNuGet { + name = "System.ComponentModel.TypeConverter"; + version = "4.3.0"; + sha256 = "17ng0p7v3nbrg3kycz10aqrrlw4lz9hzhws09pfh8gkwicyy481x"; + }) + (fetchNuGet { + name = "System.Console"; + version = "4.0.0"; + sha256 = "0ynxqbc3z1nwbrc11hkkpw9skw116z4y9wjzn7id49p9yi7mzmlf"; + }) + (fetchNuGet { + name = "System.Diagnostics.Debug"; + version = "4.0.11"; + sha256 = "0gmjghrqmlgzxivd2xl50ncbglb7ljzb66rlx8ws6dv8jm0d5siz"; + }) + (fetchNuGet { + name = "System.Diagnostics.Debug"; + version = "4.3.0"; + sha256 = "00yjlf19wjydyr6cfviaph3vsjzg3d5nvnya26i2fvfg53sknh3y"; + }) + (fetchNuGet { + name = "System.Diagnostics.DiagnosticSource"; + version = "4.0.0"; + sha256 = "1n6c3fbz7v8d3pn77h4v5wvsfrfg7v1c57lg3nff3cjyh597v23m"; + }) + (fetchNuGet { + name = "System.Diagnostics.Process"; + version = "4.3.0"; + sha256 = "0g4prsbkygq8m21naqmcp70f24a1ksyix3dihb1r1f71lpi3cfj7"; + }) + (fetchNuGet { + name = "System.Diagnostics.Tools"; + version = "4.0.1"; + sha256 = "19cknvg07yhakcvpxg3cxa0bwadplin6kyxd8mpjjpwnp56nl85x"; + }) + (fetchNuGet { + name = "System.Diagnostics.Tracing"; + version = "4.1.0"; + sha256 = "1d2r76v1x610x61ahfpigda89gd13qydz6vbwzhpqlyvq8jj6394"; + }) + (fetchNuGet { + name = "System.Diagnostics.Tracing"; + version = "4.3.0"; + sha256 = "1m3bx6c2s958qligl67q7grkwfz3w53hpy7nc97mh6f7j5k168c4"; + }) + (fetchNuGet { + name = "System.Drawing.Common"; + version = "4.5.0"; + sha256 = "0knqa0zsm91nfr34br8gx5kjqq4v81zdhqkacvs2hzc8nqk0ddhc"; + }) + (fetchNuGet { + name = "System.Dynamic.Runtime"; + version = "4.0.11"; + sha256 = "1pla2dx8gkidf7xkciig6nifdsb494axjvzvann8g2lp3dbqasm9"; + }) + (fetchNuGet { + name = "System.Globalization"; + version = "4.0.11"; + sha256 = "070c5jbas2v7smm660zaf1gh0489xanjqymkvafcs4f8cdrs1d5d"; + }) + (fetchNuGet { + name = "System.Globalization"; + version = "4.3.0"; + sha256 = "1cp68vv683n6ic2zqh2s1fn4c2sd87g5hpp6l4d4nj4536jz98ki"; + }) + (fetchNuGet { + name = "System.Globalization.Calendars"; + version = "4.0.1"; + sha256 = "0bv0alrm2ck2zk3rz25lfyk9h42f3ywq77mx1syl6vvyncnpg4qh"; + }) + (fetchNuGet { + name = "System.Globalization.Extensions"; + version = "4.0.1"; + sha256 = "0hjhdb5ri8z9l93bw04s7ynwrjrhx2n0p34sf33a9hl9phz69fyc"; + }) + (fetchNuGet { + name = "System.Globalization.Extensions"; + version = "4.3.0"; + sha256 = "02a5zfxavhv3jd437bsncbhd2fp1zv4gxzakp1an9l6kdq1mcqls"; + }) + (fetchNuGet { + name = "System.IO"; + version = "4.1.0"; + sha256 = "1g0yb8p11vfd0kbkyzlfsbsp5z44lwsvyc0h3dpw6vqnbi035ajp"; + }) + (fetchNuGet { + name = "System.IO"; + version = "4.3.0"; + sha256 = "05l9qdrzhm4s5dixmx68kxwif4l99ll5gqmh7rqgw554fx0agv5f"; + }) + (fetchNuGet { + name = "System.IO.Compression"; + version = "4.1.0"; + sha256 = "0iym7s3jkl8n0vzm3jd6xqg9zjjjqni05x45dwxyjr2dy88hlgji"; + }) + (fetchNuGet { + name = "System.IO.Compression.ZipFile"; + version = "4.0.1"; + sha256 = "0h72znbagmgvswzr46mihn7xm7chfk2fhrp5krzkjf29pz0i6z82"; + }) + (fetchNuGet { + name = "System.IO.FileSystem"; + version = "4.0.1"; + sha256 = "0kgfpw6w4djqra3w5crrg8xivbanh1w9dh3qapb28q060wb9flp1"; + }) + (fetchNuGet { + name = "System.IO.FileSystem"; + version = "4.3.0"; + sha256 = "0z2dfrbra9i6y16mm9v1v6k47f0fm617vlb7s5iybjjsz6g1ilmw"; + }) + (fetchNuGet { + name = "System.IO.FileSystem.Primitives"; + version = "4.0.1"; + sha256 = "1s0mniajj3lvbyf7vfb5shp4ink5yibsx945k6lvxa96r8la1612"; + }) + (fetchNuGet { + name = "System.IO.FileSystem.Primitives"; + version = "4.3.0"; + sha256 = "0j6ndgglcf4brg2lz4wzsh1av1gh8xrzdsn9f0yznskhqn1xzj9c"; + }) + (fetchNuGet { + name = "System.Linq"; + version = "4.1.0"; + sha256 = "1ppg83svb39hj4hpp5k7kcryzrf3sfnm08vxd5sm2drrijsla2k5"; + }) + (fetchNuGet { + name = "System.Linq"; + version = "4.3.0"; + sha256 = "1w0gmba695rbr80l1k2h4mrwzbzsyfl2z4klmpbsvsg5pm4a56s7"; + }) + (fetchNuGet { + name = "System.Linq.Expressions"; + version = "4.1.0"; + sha256 = "1gpdxl6ip06cnab7n3zlcg6mqp7kknf73s8wjinzi4p0apw82fpg"; + }) + (fetchNuGet { + name = "System.Management"; + version = "4.7.0"; + sha256 = "0aw61jl6l78liiq04afxplz0ad5qbyg6vmyjaqrlnrv7whb58n66"; + }) + (fetchNuGet { + name = "System.Net.Http"; + version = "4.1.0"; + sha256 = "1i5rqij1icg05j8rrkw4gd4pgia1978mqhjzhsjg69lvwcdfg8yb"; + }) + (fetchNuGet { + name = "System.Net.NameResolution"; + version = "4.3.0"; + sha256 = "15r75pwc0rm3vvwsn8rvm2krf929mjfwliv0mpicjnii24470rkq"; + }) + (fetchNuGet { + name = "System.Net.Primitives"; + version = "4.0.11"; + sha256 = "10xzzaynkzkakp7jai1ik3r805zrqjxiz7vcagchyxs2v26a516r"; + }) + (fetchNuGet { + name = "System.Net.Sockets"; + version = "4.1.0"; + sha256 = "1385fvh8h29da5hh58jm1v78fzi9fi5vj93vhlm2kvqpfahvpqls"; + }) + (fetchNuGet { + name = "System.Numerics.Vectors"; + version = "4.3.0"; + sha256 = "05kji1mv4sl75iwmc613p873145nynm02xiajx8pn0h2kx53d23s"; + }) + (fetchNuGet { + name = "System.ObjectModel"; + version = "4.0.12"; + sha256 = "1sybkfi60a4588xn34nd9a58png36i0xr4y4v4kqpg8wlvy5krrj"; + }) + (fetchNuGet { + name = "System.Private.Uri"; + version = "4.3.0"; + sha256 = "04r1lkdnsznin0fj4ya1zikxiqr0h6r6a1ww2dsm60gqhdrf0mvx"; + }) + (fetchNuGet { + name = "System.Reflection"; + version = "4.1.0"; + sha256 = "1js89429pfw79mxvbzp8p3q93il6rdff332hddhzi5wqglc4gml9"; + }) + (fetchNuGet { + name = "System.Reflection"; + version = "4.3.0"; + sha256 = "0xl55k0mw8cd8ra6dxzh974nxif58s3k1rjv1vbd7gjbjr39j11m"; + }) + (fetchNuGet { + name = "System.Reflection.Emit"; + version = "4.0.1"; + sha256 = "0ydqcsvh6smi41gyaakglnv252625hf29f7kywy2c70nhii2ylqp"; + }) + (fetchNuGet { + name = "System.Reflection.Emit"; + version = "4.3.0"; + sha256 = "11f8y3qfysfcrscjpjym9msk7lsfxkk4fmz9qq95kn3jd0769f74"; + }) + (fetchNuGet { + name = "System.Reflection.Emit.ILGeneration"; + version = "4.0.1"; + sha256 = "1pcd2ig6bg144y10w7yxgc9d22r7c7ww7qn1frdfwgxr24j9wvv0"; + }) + (fetchNuGet { + name = "System.Reflection.Emit.ILGeneration"; + version = "4.3.0"; + sha256 = "0w1n67glpv8241vnpz1kl14sy7zlnw414aqwj4hcx5nd86f6994q"; + }) + (fetchNuGet { + name = "System.Reflection.Emit.Lightweight"; + version = "4.0.1"; + sha256 = "1s4b043zdbx9k39lfhvsk68msv1nxbidhkq6nbm27q7sf8xcsnxr"; + }) + (fetchNuGet { + name = "System.Reflection.Emit.Lightweight"; + version = "4.3.0"; + sha256 = "0ql7lcakycrvzgi9kxz1b3lljd990az1x6c4jsiwcacrvimpib5c"; + }) + (fetchNuGet { + name = "System.Reflection.Extensions"; + version = "4.0.1"; + sha256 = "0m7wqwq0zqq9gbpiqvgk3sr92cbrw7cp3xn53xvw7zj6rz6fdirn"; + }) + (fetchNuGet { + name = "System.Reflection.Extensions"; + version = "4.3.0"; + sha256 = "02bly8bdc98gs22lqsfx9xicblszr2yan7v2mmw3g7hy6miq5hwq"; + }) + (fetchNuGet { + name = "System.Reflection.Primitives"; + version = "4.0.1"; + sha256 = "1bangaabhsl4k9fg8khn83wm6yial8ik1sza7401621jc6jrym28"; + }) + (fetchNuGet { + name = "System.Reflection.Primitives"; + version = "4.3.0"; + sha256 = "04xqa33bld78yv5r93a8n76shvc8wwcdgr1qvvjh959g3rc31276"; + }) + (fetchNuGet { + name = "System.Reflection.TypeExtensions"; + version = "4.1.0"; + sha256 = "1bjli8a7sc7jlxqgcagl9nh8axzfl11f4ld3rjqsyxc516iijij7"; + }) + (fetchNuGet { + name = "System.Reflection.TypeExtensions"; + version = "4.3.0"; + sha256 = "0y2ssg08d817p0vdag98vn238gyrrynjdj4181hdg780sif3ykp1"; + }) + (fetchNuGet { + name = "System.Resources.ResourceManager"; + version = "4.0.1"; + sha256 = "0b4i7mncaf8cnai85jv3wnw6hps140cxz8vylv2bik6wyzgvz7bi"; + }) + (fetchNuGet { + name = "System.Resources.ResourceManager"; + version = "4.3.0"; + sha256 = "0sjqlzsryb0mg4y4xzf35xi523s4is4hz9q4qgdvlvgivl7qxn49"; + }) + (fetchNuGet { + name = "System.Runtime"; + version = "4.1.0"; + sha256 = "02hdkgk13rvsd6r9yafbwzss8kr55wnj8d5c7xjnp8gqrwc8sn0m"; + }) + (fetchNuGet { + name = "System.Runtime"; + version = "4.3.0"; + sha256 = "066ixvgbf2c929kgknshcxqj6539ax7b9m570cp8n179cpfkapz7"; + }) + (fetchNuGet { + name = "System.Runtime.CompilerServices.Unsafe"; + version = "4.6.0"; + sha256 = "0xmzi2gpbmgyfr75p24rqqsba3cmrqgmcv45lsqp5amgrdwd0f0m"; + }) + (fetchNuGet { + name = "System.Runtime.CompilerServices.Unsafe"; + version = "5.0.0-preview.7.20364.11"; + sha256 = "19sl184f6rjhfsizq0vapysazd6yd66lf638rszvrdhqlsxssz2m"; + }) + (fetchNuGet { + name = "System.Runtime.Extensions"; + version = "4.1.0"; + sha256 = "0rw4rm4vsm3h3szxp9iijc3ksyviwsv6f63dng3vhqyg4vjdkc2z"; + }) + (fetchNuGet { + name = "System.Runtime.Extensions"; + version = "4.3.0"; + sha256 = "1ykp3dnhwvm48nap8q23893hagf665k0kn3cbgsqpwzbijdcgc60"; + }) + (fetchNuGet { + name = "System.Runtime.Handles"; + version = "4.0.1"; + sha256 = "1g0zrdi5508v49pfm3iii2hn6nm00bgvfpjq1zxknfjrxxa20r4g"; + }) + (fetchNuGet { + name = "System.Runtime.Handles"; + version = "4.3.0"; + sha256 = "0sw2gfj2xr7sw9qjn0j3l9yw07x73lcs97p8xfc9w1x9h5g5m7i8"; + }) + (fetchNuGet { + name = "System.Runtime.InteropServices"; + version = "4.1.0"; + sha256 = "01kxqppx3dr3b6b286xafqilv4s2n0gqvfgzfd4z943ga9i81is1"; + }) + (fetchNuGet { + name = "System.Runtime.InteropServices"; + version = "4.3.0"; + sha256 = "00hywrn4g7hva1b2qri2s6rabzwgxnbpw9zfxmz28z09cpwwgh7j"; + }) + (fetchNuGet { + name = "System.Runtime.InteropServices.RuntimeInformation"; + version = "4.0.0"; + sha256 = "0glmvarf3jz5xh22iy3w9v3wyragcm4hfdr17v90vs7vcrm7fgp6"; + }) + (fetchNuGet { + name = "System.Runtime.InteropServices.RuntimeInformation"; + version = "4.3.0"; + sha256 = "0q18r1sh4vn7bvqgd6dmqlw5v28flbpj349mkdish2vjyvmnb2ii"; + }) + (fetchNuGet { + name = "System.Runtime.Numerics"; + version = "4.0.1"; + sha256 = "1y308zfvy0l5nrn46mqqr4wb4z1xk758pkk8svbz8b5ij7jnv4nn"; + }) + (fetchNuGet { + name = "System.Runtime.Serialization.Primitives"; + version = "4.1.1"; + sha256 = "042rfjixknlr6r10vx2pgf56yming8lkjikamg3g4v29ikk78h7k"; + }) + (fetchNuGet { + name = "System.Security.AccessControl"; + version = "4.5.0"; + sha256 = "1wvwanz33fzzbnd2jalar0p0z3x0ba53vzx1kazlskp7pwyhlnq0"; + }) + (fetchNuGet { + name = "System.Security.AccessControl"; + version = "4.7.0"; + sha256 = "0n0k0w44flkd8j0xw7g3g3vhw7dijfm51f75xkm1qxnbh4y45mpz"; + }) + (fetchNuGet { + name = "System.Security.Claims"; + version = "4.3.0"; + sha256 = "0jvfn7j22l3mm28qjy3rcw287y9h65ha4m940waaxah07jnbzrhn"; + }) + (fetchNuGet { + name = "System.Security.Cryptography.Algorithms"; + version = "4.2.0"; + sha256 = "148s9g5dgm33ri7dnh19s4lgnlxbpwvrw2jnzllq2kijj4i4vs85"; + }) + (fetchNuGet { + name = "System.Security.Cryptography.Cng"; + version = "4.2.0"; + sha256 = "118jijz446kix20blxip0f0q8mhsh9bz118mwc2ch1p6g7facpzc"; + }) + (fetchNuGet { + name = "System.Security.Cryptography.Csp"; + version = "4.0.0"; + sha256 = "1cwv8lqj8r15q81d2pz2jwzzbaji0l28xfrpw29kdpsaypm92z2q"; + }) + (fetchNuGet { + name = "System.Security.Cryptography.Encoding"; + version = "4.0.0"; + sha256 = "0a8y1a5wkmpawc787gfmnrnbzdgxmx1a14ax43jf3rj9gxmy3vk4"; + }) + (fetchNuGet { + name = "System.Security.Cryptography.OpenSsl"; + version = "4.0.0"; + sha256 = "16sx3cig3d0ilvzl8xxgffmxbiqx87zdi8fc73i3i7zjih1a7f4q"; + }) + (fetchNuGet { + name = "System.Security.Cryptography.Primitives"; + version = "4.0.0"; + sha256 = "0i7cfnwph9a10bm26m538h5xcr8b36jscp9sy1zhgifksxz4yixh"; + }) + (fetchNuGet { + name = "System.Security.Cryptography.X509Certificates"; + version = "4.1.0"; + sha256 = "0clg1bv55mfv5dq00m19cp634zx6inm31kf8ppbq1jgyjf2185dh"; + }) + (fetchNuGet { + name = "System.Security.Principal"; + version = "4.3.0"; + sha256 = "12cm2zws06z4lfc4dn31iqv7072zyi4m910d4r6wm8yx85arsfxf"; + }) + (fetchNuGet { + name = "System.Security.Principal.Windows"; + version = "4.3.0"; + sha256 = "00a0a7c40i3v4cb20s2cmh9csb5jv2l0frvnlzyfxh848xalpdwr"; + }) + (fetchNuGet { + name = "System.Security.Principal.Windows"; + version = "4.5.0"; + sha256 = "0rmj89wsl5yzwh0kqjgx45vzf694v9p92r4x4q6yxldk1cv1hi86"; + }) + (fetchNuGet { + name = "System.Security.Principal.Windows"; + version = "4.7.0"; + sha256 = "1a56ls5a9sr3ya0nr086sdpa9qv0abv31dd6fp27maqa9zclqq5d"; + }) + (fetchNuGet { + name = "System.Text.Encoding"; + version = "4.0.11"; + sha256 = "1dyqv0hijg265dwxg6l7aiv74102d6xjiwplh2ar1ly6xfaa4iiw"; + }) + (fetchNuGet { + name = "System.Text.Encoding"; + version = "4.3.0"; + sha256 = "1f04lkir4iladpp51sdgmis9dj4y8v08cka0mbmsy0frc9a4gjqr"; + }) + (fetchNuGet { + name = "System.Text.Encoding.Extensions"; + version = "4.0.11"; + sha256 = "08nsfrpiwsg9x5ml4xyl3zyvjfdi4mvbqf93kjdh11j4fwkznizs"; + }) + (fetchNuGet { + name = "System.Text.Encoding.Extensions"; + version = "4.3.0"; + sha256 = "11q1y8hh5hrp5a3kw25cb6l00v5l5dvirkz8jr3sq00h1xgcgrxy"; + }) + (fetchNuGet { + name = "System.Text.RegularExpressions"; + version = "4.1.0"; + sha256 = "1mw7vfkkyd04yn2fbhm38msk7dz2xwvib14ygjsb8dq2lcvr18y7"; + }) + (fetchNuGet { + name = "System.Text.RegularExpressions"; + version = "4.3.0"; + sha256 = "1bgq51k7fwld0njylfn7qc5fmwrk2137gdq7djqdsw347paa9c2l"; + }) + (fetchNuGet { + name = "System.Threading"; + version = "4.0.11"; + sha256 = "19x946h926bzvbsgj28csn46gak2crv2skpwsx80hbgazmkgb1ls"; + }) + (fetchNuGet { + name = "System.Threading"; + version = "4.3.0"; + sha256 = "0rw9wfamvhayp5zh3j7p1yfmx9b5khbf4q50d8k5rk993rskfd34"; + }) + (fetchNuGet { + name = "System.Threading.Overlapped"; + version = "4.3.0"; + sha256 = "1nahikhqh9nk756dh8p011j36rlcp1bzz3vwi2b4m1l2s3vz8idm"; + }) + (fetchNuGet { + name = "System.Threading.Tasks"; + version = "4.0.11"; + sha256 = "0nr1r41rak82qfa5m0lhk9mp0k93bvfd7bbd9sdzwx9mb36g28p5"; + }) + (fetchNuGet { + name = "System.Threading.Tasks"; + version = "4.3.0"; + sha256 = "134z3v9abw3a6jsw17xl3f6hqjpak5l682k2vz39spj4kmydg6k7"; + }) + (fetchNuGet { + name = "System.Threading.Tasks.Extensions"; + version = "4.0.0"; + sha256 = "1cb51z062mvc2i8blpzmpn9d9mm4y307xrwi65di8ri18cz5r1zr"; + }) + (fetchNuGet { + name = "System.Threading.Tasks.Extensions"; + version = "4.3.0"; + sha256 = "1xxcx2xh8jin360yjwm4x4cf5y3a2bwpn2ygkfkwkicz7zk50s2z"; + }) + (fetchNuGet { + name = "System.Threading.Thread"; + version = "4.3.0"; + sha256 = "0y2xiwdfcph7znm2ysxanrhbqqss6a3shi1z3c779pj2s523mjx4"; + }) + (fetchNuGet { + name = "System.Threading.ThreadPool"; + version = "4.3.0"; + sha256 = "027s1f4sbx0y1xqw2irqn6x161lzj8qwvnh2gn78ciiczdv10vf1"; + }) + (fetchNuGet { + name = "System.Threading.Timer"; + version = "4.0.1"; + sha256 = "15n54f1f8nn3mjcjrlzdg6q3520571y012mx7v991x2fvp73lmg6"; + }) + (fetchNuGet { + name = "System.Xml.ReaderWriter"; + version = "4.0.11"; + sha256 = "0c6ky1jk5ada9m94wcadih98l6k1fvf6vi7vhn1msjixaha419l5"; + }) + (fetchNuGet { + name = "System.Xml.ReaderWriter"; + version = "4.3.0"; + sha256 = "0c47yllxifzmh8gq6rq6l36zzvw4kjvlszkqa9wq3fr59n0hl3s1"; + }) + (fetchNuGet { + name = "System.Xml.XDocument"; + version = "4.0.11"; + sha256 = "0n4lvpqzy9kc7qy1a4acwwd7b7pnvygv895az5640idl2y9zbz18"; + }) + (fetchNuGet { + name = "System.Xml.XmlDocument"; + version = "4.3.0"; + sha256 = "0bmz1l06dihx52jxjr22dyv5mxv6pj4852lx68grjm7bivhrbfwi"; + }) + (fetchNuGet { + name = "System.Xml.XPath"; + version = "4.3.0"; + sha256 = "1cv2m0p70774a0sd1zxc8fm8jk3i5zk2bla3riqvi8gsm0r4kpci"; + }) + (fetchNuGet { + name = "System.Xml.XPath.XmlDocument"; + version = "4.3.0"; + sha256 = "1h9lh7qkp0lff33z847sdfjj8yaz98ylbnkbxlnsbflhj9xyfqrm"; + }) +] diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/fetch-deps.sh b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/fetch-deps.sh new file mode 100755 index 000000000000..ce9873a16929 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/fetch-deps.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl jq common-updater-scripts dotnet-sdk_3 +set -eo pipefail +cd "$(dirname "${BASH_SOURCE[0]}")" + +deps_file="$(realpath "./deps.nix")" + +# Setup empty nuget package folder to force reinstall. +mkdir ./nuget_tmp.packages +cat >./nuget_tmp.config <<EOF +<?xml version="1.0" encoding="utf-8"?> +<configuration> + <packageSources> + <add key="nuget" value="https://api.nuget.org/v3/index.json" /> + </packageSources> + <config> + <add key="globalPackagesFolder" value="$(realpath ./nuget_tmp.packages)" /> + </config> +</configuration> +EOF + +dotnet restore Ryujinx.sln --configfile ./nuget_tmp.config + +echo "{ fetchNuGet }: [" >"$deps_file" +while read pkg_spec; do + { read pkg_name; read pkg_version; } < <( + # Build version part should be ignored: `3.0.0-beta2.20059.3+77df2220` -> `3.0.0-beta2.20059.3` + sed -nE 's/.*<id>([^<]*).*/\1/p; s/.*<version>([^<+]*).*/\1/p' "$pkg_spec") + pkg_sha256="$(nix-hash --type sha256 --flat --base32 "$(dirname "$pkg_spec")"/*.nupkg)" + cat >>"$deps_file" <<EOF + (fetchNuGet { + name = "$pkg_name"; + version = "$pkg_version"; + sha256 = "$pkg_sha256"; + }) +EOF +done < <(find ./nuget_tmp.packages -name '*.nuspec' | sort) +echo "]" >>"$deps_file" + +popd +rm -r "$src" diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/log.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/log.patch new file mode 100644 index 000000000000..d25e22fbd373 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/ryujinx/log.patch @@ -0,0 +1,13 @@ +diff --git a/Ryujinx.Common/Configuration/LoggerModule.cs b/Ryujinx.Common/Configuration/LoggerModule.cs +index 20c0fb46..ce933730 100644 +--- a/Ryujinx.Common/Configuration/LoggerModule.cs ++++ b/Ryujinx.Common/Configuration/LoggerModule.cs +@@ -75,7 +75,7 @@ namespace Ryujinx.Configuration + if (e.NewValue) + { + Logger.AddTarget(new AsyncLogTargetWrapper( +- new FileLogTarget(AppDomain.CurrentDomain.BaseDirectory, "file"), ++ new FileLogTarget(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Ryujinx"), "file"), + 1000, + AsyncLogTargetOverflowAction.Block + )); diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/sameboy/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/sameboy/default.nix new file mode 100644 index 000000000000..e90cc5a00f50 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/sameboy/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchFromGitHub, gtk3, rgbds, SDL2, wrapGAppsHook, glib }: + +stdenv.mkDerivation rec { + pname = "sameboy"; + version = "0.13.6"; + + src = fetchFromGitHub { + owner = "LIJI32"; + repo = "SameBoy"; + rev = "v${version}"; + sha256 = "04w8lybi7ssnax37ka4qw7pmcm7cgnmk90p9m73zbyp5chgpqqzc"; + }; + + enableParallelBuilding = true; + # glib and wrapGAppsHook are needed to make the Open ROM menu work. + nativeBuildInputs = [ rgbds glib wrapGAppsHook ]; + buildInputs = [ SDL2 ]; + + makeFlags = "CONF=release DATA_DIR=$(out)/share/sameboy/"; + + patchPhase = '' + sed 's/-Werror //g' -i Makefile + sed 's@"libgtk-3.so"@"${gtk3}/lib/libgtk-3.so"@g' -i OpenDialog/gtk.c + ''; + + installPhase = '' + pushd build/bin/SDL + install -Dm755 sameboy $out/bin/sameboy + rm sameboy + mkdir -p $out/share/sameboy + cp -r * $out/share/sameboy + popd + ''; + + meta = with stdenv.lib; { + homepage = "https://sameboy.github.io"; + description = "Game Boy, Game Boy Color, and Super Game Boy emulator"; + + longDescription = '' + SameBoy is a user friendly Game Boy, Game Boy Color and Super + Game Boy emulator for macOS, Windows and Unix-like platforms. + SameBoy is extremely accurate and includes a wide range of + powerful debugging features, making it ideal for both casual + players and developers. In addition to accuracy and developer + capabilities, SameBoy has all the features one would expect from + an emulator – from save states to scaling filters. + ''; + + license = licenses.mit; + maintainers = with maintainers; [ NieDzejkob ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/simplenes/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/simplenes/default.nix new file mode 100644 index 000000000000..d4805a62d761 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/simplenes/default.nix @@ -0,0 +1,33 @@ +{ stdenv +, fetchFromGitHub +, cmake +, sfml +}: + +stdenv.mkDerivation rec { + pname = "simplenes"; + version = "unstable-2019-03-13"; + + src = fetchFromGitHub { + owner = "amhndu"; + repo = "SimpleNES"; + rev = "4edb7117970c21a33b3bfe11a6606764fffc5173"; + sha256 = "1nmwj431iwqzzcykxd4xinqmg0rm14mx7zsjyhcc5skz7pihz86g"; + }; + + nativeBuildInputs = [ cmake ]; + buildInputs = [ sfml ]; + + installPhase = '' + mkdir -p $out/bin + cp ./SimpleNES $out/bin + ''; + + meta = with stdenv.lib; { + homepage = "https://github.com/amhndu/SimpleNES"; + description = "An NES emulator written in C++"; + license = licenses.gpl3; + maintainers = with maintainers; [ ivar ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/snes9x-gtk/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/snes9x-gtk/default.nix new file mode 100644 index 000000000000..f33af245f710 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/snes9x-gtk/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, wrapGAppsHook +, SDL2, zlib, gtk3, libxml2, libXv, epoxy, minizip, pulseaudio, portaudio }: + +stdenv.mkDerivation rec { + pname = "snes9x-gtk"; + version = "1.60"; + + src = fetchFromGitHub { + owner = "snes9xgit"; + repo = "snes9x"; + rev = version; + sha256 = "12hpn7zcdvp30ldpw2zf115yjqv55n1ldjbids7vx0lvbpr06dm1"; + }; + + enableParallelBuilding = true; + nativeBuildInputs = [ meson ninja pkgconfig wrapGAppsHook ]; + buildInputs = [ SDL2 zlib gtk3 libxml2 libXv epoxy minizip pulseaudio portaudio ]; + + preConfigure = "cd gtk"; + + meta = with stdenv.lib; { + homepage = "http://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. + ''; + + license = licenses.lgpl2; + maintainers = with maintainers; [ qknight ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/stella/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/stella/default.nix new file mode 100644 index 000000000000..33cd1879ce6a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/stella/default.nix @@ -0,0 +1,33 @@ +{ stdenv, fetchFromGitHub, pkg-config, SDL2 }: + +stdenv.mkDerivation rec { + pname = "stella"; + version = "6.3"; + + src = fetchFromGitHub { + owner = "stella-emu"; + repo = pname; + rev = version; + sha256 = "sha256-5rH2a/Uvi0HuyU/86y87g5FN/dunlP65+K3j0Bo+yCg="; + }; + + nativeBuildInputs = [ pkg-config ]; + buildInputs = [ SDL2 ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib;{ + description = "An open-source Atari 2600 VCS emulator"; + longDescription = '' + Stella is a multi-platform Atari 2600 VCS emulator released under + the GNU General Public License (GPL). Stella was originally + developed for Linux by Bradford W. Mott, and is currently + maintained by Stephen Anthony. + As of its 3.5 release, Stella is officially donationware. + ''; + homepage = "https://stella-emu.github.io/"; + license = licenses.gpl2; + maintainers = [ maintainers.AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/termtekst/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/termtekst/default.nix new file mode 100644 index 000000000000..8186aba1ee56 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/termtekst/default.nix @@ -0,0 +1,36 @@ +{ lib, fetchFromGitHub, python3Packages, ncurses }: + +python3Packages.buildPythonApplication rec { + pname = "termtekst"; + version = "1.0"; + + src = fetchFromGitHub { + owner = "zevv"; + repo = pname; + rev = "v${version}"; + sha256 = "1gm7j5d49a60wm7px82b76f610i8pl8ccz4r6qsz90z4mp3lyw9b"; + }; + + propagatedBuildInputs = with python3Packages; [ ncurses requests ]; + + patchPhase = '' + substituteInPlace setup.py \ + --replace "assert" "assert 1==1 #" + substituteInPlace src/tt \ + --replace "locale.setlocale" "#locale.setlocale" + ''; + + meta = with lib; { + description = ''Console NOS Teletekst viewer in Python''; + longDescription = '' + Small Python app using curses to display Dutch NOS Teletekst on + the Linux console. The original Teletekst font includes 2x6 + raster graphics glyphs which have no representation in unicode; + as a workaround the braille set is abused to approximate the + graphics. + ''; + license = licenses.mit; + maintainers = with maintainers; [ leenaars ]; + platforms = platforms.all; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/tilem/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/tilem/default.nix new file mode 100644 index 000000000000..8a6c5075c9b3 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/tilem/default.nix @@ -0,0 +1,78 @@ +{ stdenv +, fetchurl +, lib +, libarchive +, autoreconfHook +, pkgconfig +, glib +, libusb1 +, darwin +, acl +, lzma +, bzip2 +, gnome2 +}: +let + libticonv = stdenv.mkDerivation rec { + pname = "libticonv"; + version = "1.1.5"; + src = fetchurl { + url = "mirror://sourceforge/tilp/${pname}-${version}.tar.bz2"; + sha256 = "0y080v12bm81wgjm6fnw7q0yg7scphm8hhrls9njcszj7fkscv9i"; + }; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + buildInputs = [ glib ]; + configureFlags = [ "--enable-iconv" ]; + }; + libticables2 = stdenv.mkDerivation rec { + pname = "libticables2"; + version = "1.3.5"; + src = fetchurl { + url = "mirror://sourceforge/tilp/${pname}-${version}.tar.bz2"; + sha256 = "08j5di0cgix9vcpdv7b8xhxdjkk9zz7fqfnv3l4apk3jdr8vcvqc"; + }; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + buildInputs = [ glib libusb1 ]; + configureFlags = [ "--enable-libusb10" ]; + }; + libticalcs2 = stdenv.mkDerivation rec { + pname = "libticalcs2"; + version = "1.1.9"; + src = fetchurl { + url = "mirror://sourceforge/tilp/${pname}-${version}.tar.bz2"; + sha256 = "08c9wgrdnyqcs45mx1bjb8riqq81bzfkhgaijxzn96rhpj40fy3n"; + }; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + buildInputs = [ glib libticables2 libticonv libtifiles2 lzma bzip2 ] + ++ lib.optionals stdenv.isLinux [ acl ] + ++ lib.optionals stdenv.isDarwin [ darwin.libobjc ]; + }; + libtifiles2 = stdenv.mkDerivation rec { + pname = "libtifiles2"; + version = "1.1.7"; + src = fetchurl { + url = "mirror://sourceforge/tilp/${pname}-${version}.tar.bz2"; + sha256 = "10n9mhlabmaw3ha5ckllxfy6fygs2pmlmj5v6w5v62bvx54kpils"; + }; + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + buildInputs = [ glib libticonv libarchive lzma bzip2 ]; + }; +in +stdenv.mkDerivation rec { + pname = "tilem"; + version = "2.0"; + src = fetchurl { + url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2"; + sha256 = "1ba38xzhp3yf21ip3cgql6jzy49jc34sfnjsl4syxyrd81d269zw"; + }; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ glib gnome2.gtk libticonv libtifiles2 libticables2 libticalcs2 ]; + NIX_CFLAGS_COMPILE = [ "-lm" ]; + meta = with stdenv.lib; { + homepage = "http://lpg.ticalc.org/prj_tilem/"; + description = "Emulator and debugger for Texas Instruments Z80-based graphing calculators"; + license = licenses.gpl3Plus; + maintainers = with maintainers; [ siraben ]; + platforms = platforms.linux ++ platforms.darwin; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/uae/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/uae/default.nix new file mode 100644 index 000000000000..7b52430aa015 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/uae/default.nix @@ -0,0 +1,26 @@ +{stdenv, fetchurl, pkgconfig, gtk2, alsaLib, SDL}: + +stdenv.mkDerivation rec { + name = "uae-0.8.29"; + + src = fetchurl { + url = "http://web.archive.org/web/20130905032631/http://www.amigaemulator.org/files/sources/develop/${name}.tar.bz2"; + sha256 = "05s3cd1rd5a970s938qf4c2xm3l7f54g5iaqw56v8smk355m4qr4"; + }; + + configureFlags = [ "--with-sdl" "--with-sdl-sound" "--with-sdl-gfx" "--with-alsa" ]; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ gtk2 alsaLib SDL ]; + + hardeningDisable = [ "format" ]; + LDFLAGS = [ "-lm" ]; + + meta = { + description = "Ultimate/Unix/Unusable Amiga Emulator"; + license = stdenv.lib.licenses.gpl2Plus; + homepage = "http://web.archive.org/web/20130901222855/http://www.amigaemulator.org/"; + maintainers = [ stdenv.lib.maintainers.sander ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/vbam/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/vbam/default.nix new file mode 100644 index 000000000000..2aae72b3e206 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/vbam/default.nix @@ -0,0 +1,57 @@ +{ stdenv +, cairo +, cmake +, fetchFromGitHub +, ffmpeg +, gettext +, libGLU, libGL +, openal +, pkgconfig +, SDL2 +, sfml +, zip +, zlib +}: + +stdenv.mkDerivation rec { + pname = "visualboyadvance-m"; + version = "2.1.4"; + src = fetchFromGitHub { + owner = "visualboyadvance-m"; + repo = "visualboyadvance-m"; + rev = "v${version}"; + sha256 = "1kgpbvng3c12ws0dy92zc0azd94h0i3j4vm7b67zc8mi3pqsppdg"; + }; + + nativeBuildInputs = [ cmake pkgconfig ]; + + buildInputs = [ + cairo + ffmpeg + gettext + libGLU libGL + openal + SDL2 + sfml + zip + zlib + ]; + + cmakeFlags = [ + "-DCMAKE_BUILD_TYPE='Release'" + "-DENABLE_FFMPEG='true'" + "-DENABLE_LINK='true'" + "-DSYSCONFDIR=etc" + "-DENABLE_WX='false'" + "-DENABLE_SDL='true'" + ]; + + meta = with stdenv.lib; { + description = "A merge of the original Visual Boy Advance forks"; + license = licenses.gpl2; + maintainers = with maintainers; [ lassulus ]; + homepage = "https://vba-m.com/"; + platforms = stdenv.lib.platforms.linux; + badPlatforms = [ "aarch64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/vice/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/vice/default.nix new file mode 100644 index 000000000000..c80d820059fa --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/vice/default.nix @@ -0,0 +1,53 @@ +{ stdenv, fetchurl, bison, flex, perl, libpng, giflib, libjpeg, alsaLib, readline, libGLU, libGL, libXaw +, pkgconfig, gtk2, SDL, autoreconfHook, makeDesktopItem +}: + +stdenv.mkDerivation rec { + name = "vice-3.1"; + + src = fetchurl { + url = "mirror://sourceforge/vice-emu/vice-3.1.tar.gz"; + sha256 = "0h0jbml02s2a36hr78dxv1zshmfhxp1wadpcdl09aq416fb1bf1y"; + }; + + buildInputs = [ bison flex perl libpng giflib libjpeg alsaLib readline libGLU libGL + pkgconfig gtk2 SDL autoreconfHook libXaw ]; + dontDisableStatic = true; + configureFlags = [ "--enable-fullscreen --enable-gnomeui" ]; + + desktopItem = makeDesktopItem { + name = "vice"; + exec = "x64"; + comment = "Commodore 64 emulator"; + desktopName = "VICE"; + genericName = "Commodore 64 emulator"; + categories = "Emulator;"; + }; + + preBuild = '' + for i in src/resid src/resid-dtv + do + mkdir -pv $i/src + ln -sv ../../wrap-u-ar.sh $i/src + done + ''; + patchPhase = '' + # Disable font-cache update + sed -i -e "s|install: install-data-am|install-no: install-data-am|" data/fonts/Makefile.am + ''; + + #NIX_LDFLAGS = "-lX11 -L${libX11}/lib"; + + postInstall = '' + mkdir -p $out/share/applications + cp ${desktopItem}/share/applications/* $out/share/applications + ''; + + meta = { + description = "Commodore 64, 128 and other emulators"; + homepage = "http://www.viceteam.org"; + license = stdenv.lib.licenses.gpl2Plus; + maintainers = [ stdenv.lib.maintainers.sander ]; + platforms = stdenv.lib.platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/base.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/base.nix new file mode 100644 index 000000000000..025158b07173 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/base.nix @@ -0,0 +1,149 @@ +{ stdenv, lib, pkgArches, callPackage, + name, version, src, monos, geckos, platforms, + pkgconfig, fontforge, makeWrapper, flex, bison, + supportFlags, + buildScript ? null, configureFlags ? [] +}: + +with import ./util.nix { inherit lib; }; + +let + vkd3d = callPackage ./vkd3d.nix {}; +in +stdenv.mkDerivation ((lib.optionalAttrs (buildScript != null) { + builder = buildScript; +}) // rec { + inherit name src configureFlags; + + nativeBuildInputs = [ + pkgconfig fontforge makeWrapper flex bison + ]; + + buildInputs = toBuildInputs pkgArches (with supportFlags; (pkgs: + [ pkgs.freetype ] + ++ lib.optional stdenv.isLinux pkgs.libcap + ++ lib.optional pngSupport pkgs.libpng + ++ lib.optional jpegSupport pkgs.libjpeg + ++ lib.optional cupsSupport pkgs.cups + ++ lib.optional colorManagementSupport pkgs.lcms2 + ++ lib.optional gettextSupport pkgs.gettext + ++ lib.optional dbusSupport pkgs.dbus + ++ lib.optional mpg123Support pkgs.mpg123 + ++ lib.optional openalSupport pkgs.openal + ++ lib.optional cairoSupport pkgs.cairo + ++ lib.optional tiffSupport pkgs.libtiff + ++ lib.optional odbcSupport pkgs.unixODBC + ++ lib.optional netapiSupport pkgs.samba4 + ++ lib.optional cursesSupport pkgs.ncurses + ++ lib.optional vaSupport pkgs.libva + ++ lib.optional pcapSupport pkgs.libpcap + ++ lib.optional v4lSupport pkgs.libv4l + ++ lib.optional saneSupport pkgs.sane-backends + ++ lib.optional gsmSupport pkgs.gsm + ++ lib.optional gphoto2Support pkgs.libgphoto2 + ++ lib.optional ldapSupport pkgs.openldap + ++ lib.optional fontconfigSupport pkgs.fontconfig + ++ lib.optional alsaSupport pkgs.alsaLib + ++ lib.optional pulseaudioSupport pkgs.libpulseaudio + ++ lib.optional xineramaSupport pkgs.xorg.libXinerama + ++ lib.optional udevSupport pkgs.udev + ++ lib.optional vulkanSupport pkgs.vulkan-loader + ++ lib.optional sdlSupport pkgs.SDL2 + ++ lib.optional faudioSupport pkgs.faudio + ++ lib.optional vkd3dSupport vkd3d + ++ lib.optionals gstreamerSupport (with pkgs.gst_all_1; + [ gstreamer gst-plugins-base gst-plugins-good gst-plugins-ugly gst-libav + (gst-plugins-bad.override { enableZbar = false; }) ]) + ++ lib.optionals gtkSupport [ pkgs.gtk3 pkgs.glib ] + ++ lib.optionals openclSupport [ pkgs.opencl-headers pkgs.ocl-icd ] + ++ lib.optionals xmlSupport [ pkgs.libxml2 pkgs.libxslt ] + ++ lib.optionals tlsSupport [ pkgs.openssl pkgs.gnutls ] + ++ lib.optionals openglSupport [ pkgs.libGLU pkgs.libGL pkgs.mesa.osmesa pkgs.libdrm ] + ++ lib.optionals stdenv.isDarwin (with pkgs.buildPackages.darwin.apple_sdk.frameworks; [ + CoreServices Foundation ForceFeedback AppKit OpenGL IOKit DiskArbitration Security + ApplicationServices AudioToolbox CoreAudio AudioUnit CoreMIDI OpenAL OpenCL Cocoa Carbon + ]) + ++ lib.optionals stdenv.isLinux (with pkgs.xorg; [ + libXi libXcursor libXrandr libXrender libXxf86vm libXcomposite libXext + ]) + ++ [ pkgs.xorg.libX11 pkgs.perl ])); + + patches = [ + # Also look for root certificates at $NIX_SSL_CERT_FILE + ./cert-path.patch + ]; + + # Wine locates a lot of libraries dynamically through dlopen(). Add + # them to the RPATH so that the user doesn't have to set them in + # LD_LIBRARY_PATH. + NIX_LDFLAGS = toString (map (path: "-rpath " + path) ( + map (x: "${lib.getLib x}/lib") ([ stdenv.cc.cc ] ++ buildInputs) + # libpulsecommon.so is linked but not found otherwise + ++ lib.optionals supportFlags.pulseaudioSupport (map (x: "${lib.getLib x}/lib/pulseaudio") + (toBuildInputs pkgArches (pkgs: [ pkgs.libpulseaudio ]))) + )); + + # Don't shrink the ELF RPATHs in order to keep the extra RPATH + # elements specified above. + dontPatchELF = true; + + # Disable stripping to avoid breaking placeholder DLLs/EXEs. + # Symptoms of broken placeholders are: when the wineprefix is created + # drive_c/windows/system32 will only contain a few files instead of + # hundreds, there will be an error about winemenubuilder and MountMgr + # on startup of Wine, and the Drives tab in winecfg will show an error. + dontStrip = true; + + ## FIXME + # Add capability to ignore known failing tests + # and enable doCheck + doCheck = false; + + postInstall = let + links = prefix: pkg: "ln -s ${pkg} $out/${prefix}/${pkg.name}"; + in '' + mkdir -p $out/share/wine/gecko $out/share/wine/mono/ + ${lib.strings.concatStringsSep "\n" + ((map (links "share/wine/gecko") geckos) + ++ (map (links "share/wine/mono") monos))} + '' + lib.optionalString supportFlags.gstreamerSupport '' + # Wrapping Wine is tricky. + # https://github.com/NixOS/nixpkgs/issues/63170 + # https://github.com/NixOS/nixpkgs/issues/28486 + # The main problem is that wine-preloader opens and loads the wine(64) binary, and + # breakage occurs if it finds a shell script instead of the real binary. We solve this + # by setting WINELOADER to point to the original binary. Additionally, the locations + # of the 32-bit and 64-bit binaries must differ only by the presence of "64" at the + # end, due to the logic Wine uses to find the other binary (see get_alternate_loader + # in dlls/kernel32/process.c). Therefore we do not use wrapProgram which would move + # the binaries to ".wine-wrapped" and ".wine64-wrapped", but use makeWrapper directly, + # and move the binaries to ".wine" and ".wine64". + for i in wine wine64 ; do + prog="$out/bin/$i" + if [ -e "$prog" ]; then + hidden="$(dirname "$prog")/.$(basename "$prog")" + mv "$prog" "$hidden" + makeWrapper "$hidden" "$prog" \ + --argv0 "" \ + --set WINELOADER "$hidden" \ + --prefix GST_PLUGIN_SYSTEM_PATH_1_0 ":" "$GST_PLUGIN_SYSTEM_PATH_1_0" + fi + done + ''; + + enableParallelBuilding = true; + + # https://bugs.winehq.org/show_bug.cgi?id=43530 + # https://github.com/NixOS/nixpkgs/issues/31989 + hardeningDisable = [ "bindnow" ] + ++ lib.optional (stdenv.hostPlatform.isDarwin) "fortify"; + + passthru = { inherit pkgArches; }; + meta = { + inherit version platforms; + homepage = "https://www.winehq.org/"; + license = with stdenv.lib.licenses; [ lgpl21Plus ]; + description = "An Open Source implementation of the Windows API on top of X, OpenGL, and Unix"; + maintainers = with stdenv.lib.maintainers; [ avnik raskin bendlas ]; + }; +}) diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/builder-wow.sh b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/builder-wow.sh new file mode 100644 index 000000000000..c006db3116b5 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/builder-wow.sh @@ -0,0 +1,30 @@ +## build described at http://wiki.winehq.org/Wine64 + +source $stdenv/setup + +unpackPhase +cd $TMP/$sourceRoot +patchPhase + +configureScript=$TMP/$sourceRoot/configure +mkdir -p $TMP/wine-wow $TMP/wine64 + +cd $TMP/wine64 +sourceRoot=`pwd` +configureFlags="--enable-win64" +configurePhase +buildPhase +# checkPhase + +cd $TMP/wine-wow +sourceRoot=`pwd` +configureFlags="--with-wine64=../wine64" +configurePhase +buildPhase +# checkPhase + +eval "$preInstall" +cd $TMP/wine-wow && make install +cd $TMP/wine64 && make install +eval "$postInstall" +fixupPhase diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/cert-path.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/cert-path.patch new file mode 100644 index 000000000000..da01a4778102 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/cert-path.patch @@ -0,0 +1,24 @@ +diff --git a/dlls/crypt32/rootstore.c b/dlls/crypt32/rootstore.c +index f795181..fb4926a 100644 +--- a/dlls/crypt32/rootstore.c ++++ b/dlls/crypt32/rootstore.c +@@ -18,6 +18,7 @@ + #include "config.h" + #include <stdarg.h> + #include <stdio.h> ++#include <stdlib.h> /* getenv */ + #include <sys/types.h> + #ifdef HAVE_SYS_STAT_H + #include <sys/stat.h> +@@ -916,6 +917,11 @@ static void read_trusted_roots_from_known_locations(HCERTSTORE store) + + for (i = 0; !ret && i < ARRAY_SIZE(CRYPT_knownLocations); i++) + ret = import_certs_from_path(CRYPT_knownLocations[i], from, TRUE); ++ ++ char *nix_cert_file = getenv("NIX_SSL_CERT_FILE"); ++ if (nix_cert_file != NULL) ++ ret = import_certs_from_path(nix_cert_file, from, TRUE); ++ + check_and_store_certs(from, store); + } + CertCloseStore(from, 0); diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/default.nix new file mode 100644 index 000000000000..368e2845ca40 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/default.nix @@ -0,0 +1,68 @@ +## Configuration: +# Control you default wine config in nixpkgs-config: +# wine = { +# release = "stable"; # "stable", "unstable", "staging" +# build = "wineWow"; # "wine32", "wine64", "wineWow" +# }; +# Make additional configurations on demand: +# wine.override { wineBuild = "wine32"; wineRelease = "staging"; }; +{ lib, stdenv, callPackage, + wineRelease ? "stable", + wineBuild ? if stdenv.hostPlatform.system == "x86_64-linux" then "wineWow" else "wine32", + pngSupport ? false, + jpegSupport ? false, + tiffSupport ? false, + gettextSupport ? false, + fontconfigSupport ? false, + alsaSupport ? false, + gtkSupport ? false, + openglSupport ? false, + tlsSupport ? false, + gstreamerSupport ? false, + cupsSupport ? false, + colorManagementSupport ? false, + dbusSupport ? false, + mpg123Support ? false, + openalSupport ? false, + openclSupport ? false, + cairoSupport ? false, + odbcSupport ? false, + netapiSupport ? false, + cursesSupport ? false, + vaSupport ? false, + pcapSupport ? false, + v4lSupport ? false, + saneSupport ? false, + gsmSupport ? false, + gphoto2Support ? false, + ldapSupport ? false, + pulseaudioSupport ? false, + udevSupport ? false, + xineramaSupport ? false, + xmlSupport ? false, + vulkanSupport ? false, + sdlSupport ? false, + faudioSupport ? false, + vkd3dSupport ? false, +}: + +let wine-build = build: release: + lib.getAttr build (callPackage ./packages.nix { + wineRelease = release; + supportFlags = { + inherit pngSupport jpegSupport cupsSupport colorManagementSupport gettextSupport + dbusSupport mpg123Support openalSupport cairoSupport tiffSupport odbcSupport + netapiSupport cursesSupport vaSupport pcapSupport v4lSupport saneSupport + gsmSupport gphoto2Support ldapSupport fontconfigSupport alsaSupport + pulseaudioSupport xineramaSupport gtkSupport openclSupport xmlSupport tlsSupport + openglSupport gstreamerSupport udevSupport vulkanSupport sdlSupport faudioSupport + vkd3dSupport; + }; + }); + +in if wineRelease == "staging" then + callPackage ./staging.nix { + wineUnstable = wine-build wineBuild "unstable"; + } +else + wine-build wineBuild wineRelease diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/fonts.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/fonts.nix new file mode 100644 index 000000000000..0ee1b3973d86 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/fonts.nix @@ -0,0 +1,22 @@ +{ stdenv, lib, callPackage }: +let src = (callPackage ./sources.nix {}).stable; +in +stdenv.mkDerivation { + pname = "wine-fonts"; + inherit (src) version; + + sourceRoot = "wine-${src.version}/fonts"; + inherit src; + + installPhase = '' + install *.ttf -Dt $out/share/fonts/wine + ''; + + meta = { + description = "Microsoft replacement fonts by the Wine project"; + homepage = "https://wiki.winehq.org/Create_Fonts"; + license = with lib.licenses; [ lgpl21Plus ]; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ avnik raskin bendlas johnazoidberg ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/packages.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/packages.nix new file mode 100644 index 000000000000..3ea60e62c665 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/packages.nix @@ -0,0 +1,35 @@ +{ stdenv_32bit, lib, pkgs, pkgsi686Linux, callPackage, + wineRelease ? "stable", + supportFlags +}: + +let src = lib.getAttr wineRelease (callPackage ./sources.nix {}); +in with src; { + wine32 = pkgsi686Linux.callPackage ./base.nix { + name = "wine-${version}"; + inherit src version supportFlags; + pkgArches = [ pkgsi686Linux ]; + geckos = [ gecko32 ]; + monos = [ mono ]; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; + wine64 = callPackage ./base.nix { + name = "wine64-${version}"; + inherit src version supportFlags; + pkgArches = [ pkgs ]; + geckos = [ gecko64 ]; + monos = [ mono ]; + configureFlags = [ "--enable-win64" ]; + platforms = [ "x86_64-linux" "x86_64-darwin" ]; + }; + wineWow = callPackage ./base.nix { + name = "wine-wow-${version}"; + inherit src version supportFlags; + stdenv = stdenv_32bit; + pkgArches = [ pkgs pkgsi686Linux ]; + geckos = [ gecko32 gecko64 ]; + monos = [ mono ]; + buildScript = ./builder-wow.sh; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/sources.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/sources.nix new file mode 100644 index 000000000000..e03cc06d55e6 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/sources.nix @@ -0,0 +1,68 @@ +{ pkgs ? import <nixpkgs> {} }: +## we default to importing <nixpkgs> here, so that you can use +## a simple shell command to insert new sha256's into this file +## e.g. with emacs C-u M-x shell-command +## +## nix-prefetch-url sources.nix -A {stable{,.mono,.gecko64,.gecko32}, unstable, staging, winetricks} + +# here we wrap fetchurl and fetchFromGitHub, in order to be able to pass additional args around it +let fetchurl = args@{url, sha256, ...}: + pkgs.fetchurl { inherit url sha256; } // args; + fetchFromGitHub = args@{owner, repo, rev, sha256, ...}: + pkgs.fetchFromGitHub { inherit owner repo rev sha256; } // args; +in rec { + + stable = fetchurl rec { + version = "5.0.2"; + url = "https://dl.winehq.org/wine/source/5.0/wine-${version}.tar.xz"; + sha256 = "1g7c5djbi262h6zivmxbk26rsflwq8mrghr7hci3ajw7f3s89hn2"; + + ## see http://wiki.winehq.org/Gecko + gecko32 = fetchurl rec { + version = "2.47.1"; + url = "https://dl.winehq.org/wine/wine-gecko/${version}/wine-gecko-${version}-x86.msi"; + sha256 = "0ld03pjm65xkpgqkvfsmk6h9krjsqbgxw4b8rvl2fj20j8l0w2zh"; + }; + gecko64 = fetchurl rec { + version = "2.47.1"; + url = "https://dl.winehq.org/wine/wine-gecko/${version}/wine-gecko-${version}-x86_64.msi"; + sha256 = "0jj7azmpy07319238g52a8m4nkdwj9g010i355ykxnl8m5wjwcb9"; + }; + + ## see http://wiki.winehq.org/Mono + mono = fetchurl rec { + version = "4.9.4"; + url = "https://dl.winehq.org/wine/wine-mono/${version}/wine-mono-${version}.msi"; + sha256 = "1p8g45xphxnns7dkg9rbaknarbjy5cjhrngaf0fsgk9z68wgz9ji"; + }; + }; + + unstable = fetchurl rec { + # NOTE: Don't forget to change the SHA256 for staging as well. + version = "5.18"; + url = "https://dl.winehq.org/wine/source/5.x/wine-${version}.tar.xz"; + sha256 = "0hpkcpi6j162bkgcgzzj8y471777q06j7pydl61yp6qscn4g80ch"; + inherit (stable) mono gecko32 gecko64; + }; + + staging = fetchFromGitHub rec { + # https://github.com/wine-staging/wine-staging/releases + inherit (unstable) version; + sha256 = "0bwcvkf1g1dsq1qmric3jfl85rfjzhq6x4h839hfqc536lkfbrpy"; + owner = "wine-staging"; + repo = "wine-staging"; + rev = "v${version}"; + + # Just keep list empty, if current release haven't broken patchsets + disabledPatchsets = [ ]; + }; + + winetricks = fetchFromGitHub rec { + # https://github.com/Winetricks/winetricks/releases + version = "20200412"; + sha256 = "0ccr8wdmhkhbccxs5hvn44ppl969n8j0c3rnnir5v6akjcb2nzzv"; + owner = "Winetricks"; + repo = "winetricks"; + rev = version; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/staging.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/staging.nix new file mode 100644 index 000000000000..f3b9fa304204 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/staging.nix @@ -0,0 +1,28 @@ +{ stdenv, callPackage, wineUnstable }: + +with callPackage ./util.nix {}; + +let patch = (callPackage ./sources.nix {}).staging; + build-inputs = pkgNames: extra: + (mkBuildInputs wineUnstable.pkgArches pkgNames) ++ extra; +in assert stdenv.lib.getVersion wineUnstable == patch.version; + +(stdenv.lib.overrideDerivation wineUnstable (self: { + buildInputs = build-inputs [ "perl" "utillinux" "autoconf" "gitMinimal" ] self.buildInputs; + + name = "${self.name}-staging"; + + postPatch = self.postPatch or "" + '' + patchShebangs tools + cp -r ${patch}/patches . + chmod +w patches + cd patches + patchShebangs gitapply.sh + ./patchinstall.sh DESTDIR="$PWD/.." --all ${stdenv.lib.concatMapStringsSep " " (ps: "-W ${ps}") patch.disabledPatchsets} + cd .. + ''; +})) // { + meta = wineUnstable.meta // { + description = wineUnstable.meta.description + " (with staging patches)"; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/util.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/util.nix new file mode 100644 index 000000000000..b90a68e72df5 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/util.nix @@ -0,0 +1,9 @@ +{ lib }: +rec { + toPackages = pkgNames: pkgs: + map (pn: lib.getAttr pn pkgs) pkgNames; + toBuildInputs = pkgArches: archPkgs: + lib.concatLists (map archPkgs pkgArches); + mkBuildInputs = pkgArches: pkgNames: + toBuildInputs pkgArches (toPackages pkgNames); +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/vkd3d.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/vkd3d.nix new file mode 100644 index 000000000000..91bef28559d5 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/vkd3d.nix @@ -0,0 +1,26 @@ +{ stdenv, fetchurl, vulkan-headers, spirv-headers, vulkan-loader }: + +#TODO: MoltenVK +#TODO: unstable + +stdenv.mkDerivation rec { + pname = "vkd3d"; + version = "1.2"; + + src = fetchurl { + url = "https://dl.winehq.org/vkd3d/source/vkd3d-${version}.tar.xz"; + sha256 = "0szr1lw3xbgi9qjm13d1q4gyzzwv8i5wfxiwjg6dmwphrc7h6jxh"; + }; + + buildInputs = [ vulkan-headers spirv-headers vulkan-loader ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + description = "A 3d library build on top on Vulkan with a similar api to DirectX 12"; + homepage = "https://source.winehq.org/git/vkd3d.git"; + license = licenses.lgpl21; + platforms = platforms.linux; + maintainers = [ maintainers.marius851000 ]; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/winetricks.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/winetricks.nix new file mode 100644 index 000000000000..ab183dfd38ee --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wine/winetricks.nix @@ -0,0 +1,31 @@ +{ stdenv, callPackage, wine, perl, which, coreutils, zenity, curl +, cabextract, unzip, p7zip, gnused, gnugrep, bash } : + +stdenv.mkDerivation rec { + name = "winetricks-${src.version}"; + + src = (callPackage ./sources.nix {}).winetricks; + + buildInputs = [ perl which ]; + + # coreutils is for sha1sum + pathAdd = stdenv.lib.concatMapStringsSep ":" (x: x + "/bin") + [ wine perl which coreutils zenity curl cabextract unzip p7zip gnused gnugrep bash ]; + + makeFlags = [ "PREFIX=$(out)" ]; + + doCheck = false; # requires "bashate" + + postInstall = '' + sed -i \ + -e '2i PATH="${pathAdd}:$PATH"' \ + "$out/bin/winetricks" + ''; + + meta = { + description = "A script to install DLLs needed to work around problems in Wine"; + license = stdenv.lib.licenses.lgpl21; + homepage = "https://github.com/Winetricks/winetricks"; + platforms = with stdenv.lib.platforms; linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/wxmupen64plus/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wxmupen64plus/default.nix new file mode 100644 index 000000000000..4e90a524aa7a --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/wxmupen64plus/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchurl, python, wxGTK29, mupen64plus, SDL, libX11, libGLU, libGL +, wafHook }: + +stdenv.mkDerivation { + name = "wxmupen64plus-0.3"; + src = fetchurl { + url = "https://bitbucket.org/auria/wxmupen64plus/get/0.3.tar.bz2"; + sha256 = "1mnxi4k011dd300k35li2p6x4wccwi6im21qz8dkznnz397ps67c"; + }; + + nativeBuildInputs = [ wafHook ]; + buildInputs = [ python wxGTK29 SDL libX11 libGLU libGL ]; + + preConfigure = '' + tar xf ${mupen64plus.src} + APIDIR=$(eval echo `pwd`/mupen64plus*/source/mupen64plus-core/src/api) + export CXXFLAGS="-I${libX11.dev}/include/X11 -DLIBDIR=\\\"${mupen64plus}/lib/\\\"" + export LDFLAGS="-lwx_gtk2u_adv-2.9" + + wafConfigureFlagsArray+=("--mupenapi=$APIDIR" "--wxconfig=`type -P wx-config`") + ''; + + NIX_CFLAGS_COMPILE = "-fpermissive"; + + meta = { + description = "GUI for the Mupen64Plus 2.0 emulator"; + license = stdenv.lib.licenses.gpl2Plus; + homepage = "https://bitbucket.org/auria/wxmupen64plus/wiki/Home"; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/xcpc/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/xcpc/default.nix new file mode 100644 index 000000000000..3806d25e5d00 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/xcpc/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, pkgconfig, glib, libXaw, libX11, libXext + , libDSKSupport ? true, libdsk + , motifSupport ? false, lesstif +}: + +with stdenv.lib; +stdenv.mkDerivation rec { + version = "20070122"; + pname = "xcpc"; + + src = fetchurl { + url = "mirror://sourceforge/xcpc/${pname}-${version}.tar.gz"; + sha256 = "0hxsbhmyzyyrlidgg0q8izw55q0z40xrynw5a1c3frdnihj9jf7n"; + }; + + nativeBuildInputs = [ pkgconfig ]; + + buildInputs = [ glib libdsk libXaw libX11 libXext ] + ++ optional libDSKSupport libdsk + ++ optional motifSupport lesstif; + + meta = { + description = "A portable Amstrad CPC 464/664/6128 emulator written in C"; + homepage = "https://www.xcpc-emulator.net"; + license = licenses.gpl2Plus; + maintainers = [ maintainers.genesis ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/yabause/0001-Fixes-for-Qt-5.11-upgrade.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/yabause/0001-Fixes-for-Qt-5.11-upgrade.patch new file mode 100644 index 000000000000..43539ef4ca58 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/yabause/0001-Fixes-for-Qt-5.11-upgrade.patch @@ -0,0 +1,67 @@ +From 3140afd6fb7dad7a25296526a71b005fb9eae048 Mon Sep 17 00:00:00 2001 +From: Samuel Dionne-Riel <samuel@dionne-riel.com> +Date: Sat, 8 Sep 2018 00:44:08 -0400 +Subject: [PATCH] Fixes for Qt 5.11 upgrade + +--- + src/qt/ui/UICheatRaw.cpp | 2 -- + src/qt/ui/UICheatRaw.h | 2 +- + src/qt/ui/UICheats.cpp | 2 ++ + src/qt/ui/UIHexInput.h | 2 ++ + 4 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/qt/ui/UICheatRaw.cpp b/src/qt/ui/UICheatRaw.cpp +index 4ad82d77..3f78486b 100755 +--- a/src/qt/ui/UICheatRaw.cpp ++++ b/src/qt/ui/UICheatRaw.cpp +@@ -20,8 +20,6 @@ + #include "UIHexInput.h"
+ #include "../QtYabause.h"
+
+-#include <QButtonGroup>
+-
+ UICheatRaw::UICheatRaw( QWidget* p )
+ : QDialog( p )
+ {
+diff --git a/src/qt/ui/UICheatRaw.h b/src/qt/ui/UICheatRaw.h +index d97b429d..20318c67 100755 +--- a/src/qt/ui/UICheatRaw.h ++++ b/src/qt/ui/UICheatRaw.h +@@ -21,7 +21,7 @@ +
+ #include "ui_UICheatRaw.h"
+
+-class QButtonGroup;
++#include <QButtonGroup>
+
+ class UICheatRaw : public QDialog, public Ui::UICheatRaw
+ {
+diff --git a/src/qt/ui/UICheats.cpp b/src/qt/ui/UICheats.cpp +index c6027972..44d341c3 100755 +--- a/src/qt/ui/UICheats.cpp ++++ b/src/qt/ui/UICheats.cpp +@@ -21,6 +21,8 @@ + #include "UICheatRaw.h" + #include "../CommonDialogs.h" + ++#include <QButtonGroup> ++ + UICheats::UICheats( QWidget* p ) + : QDialog( p ) + { +diff --git a/src/qt/ui/UIHexInput.h b/src/qt/ui/UIHexInput.h +index f333b016..4bd8aed4 100644 +--- a/src/qt/ui/UIHexInput.h ++++ b/src/qt/ui/UIHexInput.h +@@ -22,6 +22,8 @@ + #include "ui_UIHexInput.h"
+ #include "../QtYabause.h"
+
++#include <QValidator>
++
+ class HexValidator : public QValidator
+ {
+ Q_OBJECT
+-- +2.16.4 + diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/yabause/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/yabause/default.nix new file mode 100644 index 000000000000..584a7b47dc70 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/yabause/default.nix @@ -0,0 +1,36 @@ +{ mkDerivation, stdenv, fetchurl, cmake, pkgconfig, qtbase, qt5, libGLU, libGL +, freeglut ? null, openal ? null, SDL2 ? null }: + +mkDerivation rec { + pname = "yabause"; + version = "0.9.15"; + + src = fetchurl { + url = "https://download.tuxfamily.org/yabause/releases/${version}/${pname}-${version}.tar.gz"; + sha256 = "1cn2rjjb7d9pkr4g5bqz55vd4pzyb7hg94cfmixjkzzkw0zw8d23"; + }; + + nativeBuildInputs = [ cmake pkgconfig ]; + buildInputs = [ qtbase qt5.qtmultimedia libGLU libGL freeglut openal SDL2 ]; + + patches = [ + ./linkage-rwx-linux-elf.patch + # Fixes derived from + # https://github.com/Yabause/yabause/commit/06a816c032c6f7fd79ced6e594dd4b33571a0e73 + ./0001-Fixes-for-Qt-5.11-upgrade.patch + ]; + + cmakeFlags = [ + "-DYAB_NETWORK=ON" + "-DYAB_OPTIMIZED_DMA=ON" + "-DYAB_PORTS=qt" + ] ; + + meta = with stdenv.lib; { + description = "An open-source Sega Saturn emulator"; + homepage = "https://yabause.org/"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ AndersonTorres ]; + platforms = platforms.linux; + }; +} diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/yabause/linkage-rwx-linux-elf.patch b/infra/libkookie/nixpkgs/pkgs/misc/emulators/yabause/linkage-rwx-linux-elf.patch new file mode 100644 index 000000000000..bb0491b373f8 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/yabause/linkage-rwx-linux-elf.patch @@ -0,0 +1,20 @@ +--- a/src/sh2_dynarec/linkage_x64.s 2013-03-11 20:29:53.112870900 +0100 ++++ b/src/sh2_dynarec/linkage_x64.s 2013-03-11 20:31:48.856778600 +0100 +@@ -747,3 +747,7 @@ breakpoint: + ret + /* Set breakpoint here for debugging */ + .size breakpoint, .-breakpoint ++ ++#if defined(__linux__) && defined(__ELF__) ++.section .note.GNU-stack,"",%progbits ++#endif +--- a/src/sh2_dynarec/linkage_x86.s 2013-03-11 20:30:08.157693100 +0100 ++++ b/src/sh2_dynarec/linkage_x86.s 2013-03-11 20:32:30.993310600 +0100 +@@ -743,3 +743,7 @@ breakpoint: + ret + /* Set breakpoint here for debugging */ + .size breakpoint, .-breakpoint ++ ++#if defined(__linux__) && defined(__ELF__) ++.section .note.GNU-stack,"",%progbits ++#endif diff --git a/infra/libkookie/nixpkgs/pkgs/misc/emulators/zsnes/default.nix b/infra/libkookie/nixpkgs/pkgs/misc/emulators/zsnes/default.nix new file mode 100644 index 000000000000..142a49b8d181 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/misc/emulators/zsnes/default.nix @@ -0,0 +1,63 @@ +{stdenv, fetchFromGitHub, nasm, SDL, zlib, libpng, ncurses, libGLU, libGL +, makeDesktopItem }: + +let + desktopItem = makeDesktopItem { + name = "zsnes"; + exec = "zsnes"; + icon = "zsnes"; + comment = "A SNES emulator"; + desktopName = "zsnes"; + genericName = "zsnes"; + categories = "Game;"; + }; + +in stdenv.mkDerivation { + name = "zsnes-1.51"; + + src = fetchFromGitHub { + owner = "emillon"; + repo = "zsnes"; + rev = "fc160b2538738995f600f8405d23a66b070dac02"; + sha256 = "1gy79d5wdaacph0cc1amw7mqm7i0716n6mvav16p1svi26iz193v"; + }; + + buildInputs = [ nasm SDL zlib libpng ncurses libGLU libGL ]; + + prePatch = '' + for i in $(cat debian/patches/series); do + echo "applying $i" + patch -p1 < "debian/patches/$i" + done + ''; + + preConfigure = '' + cd src + sed -i "/^STRIP/d" configure + sed -i "/\$STRIP/d" configure + ''; + + configureFlags = [ "--enable-release" ]; + + postInstall = '' + function installIcon () { + mkdir -p $out/share/icons/hicolor/$1/apps/ + cp icons/$1x32.png $out/share/icons/hicolor/$1/apps/zsnes.png + } + installIcon "16x16" + installIcon "32x32" + installIcon "48x48" + installIcon "64x64" + + mkdir -p $out/share/applications + ln -s ${desktopItem}/share/applications/* $out/share/applications/ + ''; + + meta = { + description = "A Super Nintendo Entertainment System Emulator"; + license = stdenv.lib.licenses.gpl2Plus; + maintainers = [ stdenv.lib.maintainers.sander ]; + homepage = "http://www.zsnes.com"; + platforms = [ "i686-linux" "x86_64-linux" ]; + }; +} |