From 5dad5954cf04d9a67f28c2d5e65a8f0318563e38 Mon Sep 17 00:00:00 2001 From: kiana-S Date: Wed, 27 Apr 2022 17:37:09 -0400 Subject: [PATCH] Initial commit --- flake.nix | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 flake.nix diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..bc540e7 --- /dev/null +++ b/flake.nix @@ -0,0 +1,87 @@ +{ +description = "SNES emulator with an extensive set of debugging tools"; + +inputs = { + nixpkgs.url = "github:NixOS/nixpkgs"; + flake-utils.url = "github:numtide/flake-utils"; + + mesen-s.url = "github:NovaSquirrel/Mesen-SX"; + asar.url = "github:RPGHacker/asar"; +}; + +outputs = { self, + nixpkgs, + flake-utils, + mesen-s, + asar, +... }@inputs: + flake-utils.lib.eachDefaultSystem (system: + with import nixpkgs { inherit system; }; + let + # Executable name + pname = ""; + # Project version + version = ""; + + asar-pkg = stdenv.mkDerivation { + pname = "asar"; + version = "1.81"; + + src = asar; + + nativeBuildInputs = [ cmake ]; + configurePhase = "cmake src"; + installPhase = '' + install -Dm755 asar/asar-standalone $out/bin/asar + ''; + }; + mesen-s-pkg = stdenv.mkDerivation { + pname = "mesen-s"; + version = "0.4.0"; + + src = mesen-s; + + nativeBuildInputs = [ clang zip makeWrapper ]; + buildInputs = [ mono6 SDL2 glib gtk2-x11 ]; + + postPatch = "patchShebangs ."; + preBuild = "make clean"; + makeFlags = [ "LTO=true" ]; + + # Adapted from the AUR repo's PKGBUILD + installPhase = '' + cat > mesen-s << END + #!/usr/bin/env sh + mono $out/opt/mesen-s/mesen-s "\$@" + END + + install -Dm755 mesen-s $out/bin/mesen-s + install -Dm755 bin/x64/Release/Mesen-S.exe $out/opt/mesen-s/mesen-s + install -Dm644 InteropDLL/obj.x64/libMesenSCore.x64.dll $out/lib/libMesenSCore.dll + ''; + + preFixup = '' + MPATH="$out/lib:${glib.out}/lib:${gtk2-x11}/lib" + wrapProgram $out/bin/mesen-s --prefix MONO_PATH : "$MPATH" --prefix LD_LIBRARY_PATH : "$MPATH" \ + --prefix PATH : ${lib.makeBinPath [ stdenv.shell mono6 ]} + ''; + }; + in { + shells.default = mkShell { + packages = [ asar-pkg mesen-s-pkg ]; + }; + + packages.default = stdenv.mkDerivation { + inherit pname version; + + src = self; + + nativeBuildInputs = [ asar-pkg ]; + }; + + apps.default = { + type = "app"; + program = "${self.packages.${system}.default}/bin/${pname}"; + }; + }); +}