diff options
author | Anderson Torres <torres.anderson.85@protonmail.com> | 2023-12-10 17:11:47 -0300 |
---|---|---|
committer | Anderson Torres <torres.anderson.85@protonmail.com> | 2023-12-10 22:24:00 -0300 |
commit | 5f0c17edea433b360b76bb425d21f0157a8a61aa (patch) | |
tree | 76e0bd97262bf29e5e86282ae39b241d0a6c61ef /pkgs/by-name/x1 | |
parent | bf8db64ddb159a9867182a8e1bd61aff88fc6b57 (diff) |
x16: move from commanderx16
Now they live under x16 attribute. Since the old names are easier to use and remember, they should be kept as non-removable aliases.
Diffstat (limited to 'pkgs/by-name/x1')
-rw-r--r-- | pkgs/by-name/x1/x16/package.nix | 62 | ||||
-rw-r--r-- | pkgs/by-name/x1/x16/rom.nix | 57 | ||||
-rw-r--r-- | pkgs/by-name/x1/x16/run.nix | 38 |
3 files changed, 157 insertions, 0 deletions
diff --git a/pkgs/by-name/x1/x16/package.nix b/pkgs/by-name/x1/x16/package.nix new file mode 100644 index 0000000000000..b01b706f746b1 --- /dev/null +++ b/pkgs/by-name/x1/x16/package.nix @@ -0,0 +1,62 @@ +{ lib +, stdenv +, fetchFromGitHub +, SDL2 +, callPackage +, zlib +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "x16-emulator"; + version = "44"; + + src = fetchFromGitHub { + owner = "X16Community"; + repo = "x16-emulator"; + rev = "r${finalAttrs.version}"; + hash = "sha256-NDtfbhqGldxtvWQf/t6UnMRjI2DR7JYKbm2KFAMZhHY="; + }; + + 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/pkgs/by-name/x1/x16/rom.nix b/pkgs/by-name/x1/x16/rom.nix new file mode 100644 index 0000000000000..c272faa706aac --- /dev/null +++ b/pkgs/by-name/x1/x16/rom.nix @@ -0,0 +1,57 @@ +{ lib +, stdenv +, fetchFromGitHub +, cc65 +, python3 +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "x16-rom"; + version = "44"; + + src = fetchFromGitHub { + owner = "X16Community"; + repo = "x16-rom"; + rev = "r${finalAttrs.version}"; + hash = "sha256-x/U+8e869mkWZKmCiW2fZKGB9un2cFXNclemwxbAjLQ="; + }; + + nativeBuildInputs = [ + cc65 + 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/pkgs/by-name/x1/x16/run.nix b/pkgs/by-name/x1/x16/run.nix new file mode 100644 index 0000000000000..274e98afecca5 --- /dev/null +++ b/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 |