Add basic template structure
This commit is contained in:
parent
5dad5954cf
commit
a238739003
87
flake.nix
87
flake.nix
|
@ -1,87 +1,10 @@
|
||||||
{
|
{
|
||||||
description = "SNES emulator with an extensive set of debugging tools";
|
description = "Templates for coding SNES roms";
|
||||||
|
|
||||||
inputs = {
|
outputs = { self }: {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs";
|
templates.with-asar = {
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
description = "A template for programming with the Asar assembler";
|
||||||
|
path = ./with-asar;
|
||||||
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}";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
17
with-asar/Makefile
Normal file
17
with-asar/Makefile
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
NAME ?= main
|
||||||
|
|
||||||
|
ASM=asar
|
||||||
|
ASMFLAGS=
|
||||||
|
|
||||||
|
VPATH=src
|
||||||
|
|
||||||
|
.PHONY: all
|
||||||
|
all: $(NAME).sfc
|
||||||
|
|
||||||
|
$(NAME).sfc: main.asm
|
||||||
|
$(ASM) $(ASMFLAGS) $^ $@
|
||||||
|
|
||||||
|
# Clean directory
|
||||||
|
.PHONY: clean
|
||||||
|
clean:
|
||||||
|
rm $(NAME).sfc
|
88
with-asar/flake.nix
Normal file
88
with-asar/flake.nix
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
{
|
||||||
|
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-src.url = "github:NovaSquirrel/Mesen-SX";
|
||||||
|
mesen-s-src.flake = false;
|
||||||
|
asar-src.url = "github:RPGHacker/asar";
|
||||||
|
asar-src.flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self,
|
||||||
|
nixpkgs,
|
||||||
|
flake-utils,
|
||||||
|
mesen-s-src,
|
||||||
|
asar-src,
|
||||||
|
... }@inputs:
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
with import nixpkgs { inherit system; };
|
||||||
|
let
|
||||||
|
# Executable name
|
||||||
|
pname = "";
|
||||||
|
# Project version
|
||||||
|
version = "";
|
||||||
|
|
||||||
|
asar = stdenv.mkDerivation {
|
||||||
|
pname = "asar";
|
||||||
|
version = "1.81";
|
||||||
|
|
||||||
|
src = asar-src;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ cmake ];
|
||||||
|
configurePhase = "cmake src";
|
||||||
|
installPhase = ''
|
||||||
|
install -Dm555 asar/asar-standalone $out/bin/asar
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
mesen-s = stdenv.mkDerivation {
|
||||||
|
pname = "mesen-s";
|
||||||
|
version = "0.4.0";
|
||||||
|
|
||||||
|
src = mesen-s-src;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ clang zip makeWrapper ];
|
||||||
|
buildInputs = [ mono6 SDL2 glib gtk2-x11 ];
|
||||||
|
|
||||||
|
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 -Dm555 mesen-s $out/bin/mesen-s
|
||||||
|
install -Dm555 bin/x64/Release/Mesen-S.exe $out/opt/mesen-s/mesen-s
|
||||||
|
install -Dm444 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 {
|
||||||
|
packages.emulator = mesen-s;
|
||||||
|
|
||||||
|
shells.default = mkShell {
|
||||||
|
packages = [ asar mesen-s ];
|
||||||
|
};
|
||||||
|
|
||||||
|
packages.default = stdenv.mkDerivation {
|
||||||
|
inherit pname version;
|
||||||
|
|
||||||
|
src = self;
|
||||||
|
|
||||||
|
nativeBuildInputs = [ asar ];
|
||||||
|
|
||||||
|
makeFlags = [ "NAME=${pname}" ];
|
||||||
|
installPhase = "install -m444 ${pname}.sfc $out";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
0
with-asar/src/main.asm
Normal file
0
with-asar/src/main.asm
Normal file
Loading…
Reference in a new issue