diff options
Diffstat (limited to 'nixpkgs/pkgs/by-name/x1/x16')
-rw-r--r-- | nixpkgs/pkgs/by-name/x1/x16/package.nix | 62 | ||||
-rw-r--r-- | nixpkgs/pkgs/by-name/x1/x16/rom.nix | 59 | ||||
-rw-r--r-- | nixpkgs/pkgs/by-name/x1/x16/run.nix | 38 |
3 files changed, 159 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/x1/x16/package.nix b/nixpkgs/pkgs/by-name/x1/x16/package.nix new file mode 100644 index 000000000000..6a144bea669d --- /dev/null +++ b/nixpkgs/pkgs/by-name/x1/x16/package.nix @@ -0,0 +1,62 @@ +{ lib +, stdenv +, fetchFromGitHub +, SDL2 +, callPackage +, zlib +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "x16-emulator"; + version = "46"; + + src = fetchFromGitHub { + owner = "X16Community"; + repo = "x16-emulator"; + rev = "r${finalAttrs.version}"; + hash = "sha256-cYr6s69eua1hCFqNkcomZDK9akxBqMTIaGqOl/YX2kc="; + }; + + postPatch = '' + substituteInPlace Makefile \ + --replace '/bin/echo' 'echo' + ''; + + dontConfigure = true; + + buildInputs = [ + SDL2 + zlib + ]; + + installPhase = '' + runHook preInstall + + install -Dm 755 -t $out/bin/ x16emu + install -Dm 444 -t $out/share/doc/x16-emulator/ README.md + + runHook postInstall + ''; + + passthru = { + # upstream project recommends emulator and rom to be synchronized; passing + # through the version is useful to ensure this + inherit (finalAttrs) version; + emulator = finalAttrs.finalPackage; + rom = callPackage ./rom.nix { }; + run = (callPackage ./run.nix { }){ + inherit (finalAttrs.finalPackage) emulator rom; + }; + }; + + meta = { + homepage = "https://cx16forum.com/"; + description = "The official emulator of CommanderX16 8-bit computer"; + changelog = "https://github.com/X16Community/x16-emulator/blob/r${finalAttrs.version}/RELEASES.md"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ AndersonTorres ]; + mainProgram = "x16emu"; + inherit (SDL2.meta) platforms; + broken = stdenv.isAarch64; # ofborg fails to compile it + }; +}) diff --git a/nixpkgs/pkgs/by-name/x1/x16/rom.nix b/nixpkgs/pkgs/by-name/x1/x16/rom.nix new file mode 100644 index 000000000000..7d17bb8272ce --- /dev/null +++ b/nixpkgs/pkgs/by-name/x1/x16/rom.nix @@ -0,0 +1,59 @@ +{ lib +, stdenv +, fetchFromGitHub +, cc65 +, lzsa +, python3 +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "x16-rom"; + version = "46"; + + src = fetchFromGitHub { + owner = "X16Community"; + repo = "x16-rom"; + rev = "r${finalAttrs.version}"; + hash = "sha256-PcLHIT84NbH+ejq8SY/UN+TYtRFWtqQBHwHqToFUol8="; + }; + + nativeBuildInputs = [ + cc65 + lzsa + python3 + ]; + + postPatch = '' + patchShebangs findsymbols scripts/ + substituteInPlace Makefile \ + --replace '/bin/echo' 'echo' + ''; + + dontConfigure = true; + + makeFlags = [ "PRERELEASE_VERSION=${finalAttrs.version}" ]; + + installPhase = '' + runHook preInstall + + install -Dm 444 -t $out/share/x16-rom/ build/x16/rom.bin + install -Dm 444 -t $out/share/doc/x16-rom/ README.md + + runHook postInstall + ''; + + passthru = { + # upstream project recommends emulator and rom to be synchronized; passing + # through the version is useful to ensure this + inherit (finalAttrs) version; + }; + + meta = { + homepage = "https://github.com/X16Community/x16-rom"; + description = "ROM file for CommanderX16 8-bit computer"; + license = lib.licenses.bsd2; + maintainers = with lib.maintainers; [ AndersonTorres ]; + inherit (cc65.meta) platforms; + broken = stdenv.isDarwin && stdenv.isAarch64; + }; +}) diff --git a/nixpkgs/pkgs/by-name/x1/x16/run.nix b/nixpkgs/pkgs/by-name/x1/x16/run.nix new file mode 100644 index 000000000000..274e98afecca --- /dev/null +++ b/nixpkgs/pkgs/by-name/x1/x16/run.nix @@ -0,0 +1,38 @@ +{ runtimeShell +, symlinkJoin +, writeTextFile +}: + +{ emulator, rom }: + +assert emulator.version == rom.version; + +let + runScript = writeTextFile { + name = "run-x16"; + text = '' + #!${runtimeShell} + + defaultRom="${rom}/share/x16-rom/rom.bin" + + exec "${emulator}/bin/x16emu" -rom $defaultRom "$@" + ''; + executable = true; + destination = "/bin/run-x16"; + }; +in +symlinkJoin { + name = "run-x16-${emulator.version}"; + + paths = [ + emulator + rom + runScript + ]; +} +# TODO [ AndersonTorres ]: + +# 1. Parse the command line in order to allow the user to set an optional +# rom-file +# 2. generate runScript based on symlinkJoin (maybe a postBuild?) +# 3. a NixOS module to abstract the runner |