TooTallNate / nx.js

JavaScript runtime for Nintendo Switch homebrew applications
https://nxjs.n8.io
MIT License
152 stars 8 forks source link

nx.js

nx.js is a framework that enables the development of Nintendo Switch homebrew applications using JavaScript. Powered by the QuickJS engine, nx.js provides a streamlined environment for writing homebrew applications for the Nintendo Switch console.

With nx.js, developers can leverage their JavaScript skills and tools to create engaging and interactive experiences for the Nintendo Switch platform. The framework abstracts the underlying low-level details and provides a high-level JavaScript API that simplifies the development process.

nx.js is designed with Web standards in mind, so familiar APIs like setTimeout(), fetch(), new URL(), Canvas and much more are supported. If you are familar with web development then you should feel right at home.

Features

Getting Started

Please see the Getting Started guide.

Contributing

Contributions to nx.js are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request in the GitHub repository.

Join the Discord server!

Building from Source

  1. Node.js needs to be installed (curl -sfLS install-node.vercel.app/20 | bash)
  2. pnpm needs to be installed (npm i -g pnpm)
  3. jq needs to be installed (brew install jq)
  4. The devkitPro compiler toolchain needs to be installed
  5. Install required packages from the official registry:
    dkp-pacman -S switch-dev switch-freetype switch-libjpeg-turbo switch-libpng switch-libwebp switch-mbedtls
  6. Install additional packages which are not in the official registry (cairo, pixman, wasm3, harfbuzz, quickjs-ng):
    docker pull ghcr.io/tootallnate/pacman-packages:nxjs
    docker run -it --rm --mount type=bind,source="$(pwd)",target=/host ghcr.io/tootallnate/pacman-packages:nxjs sh -c 'cp packages/*/*.pkg.tar.zst /host'
    dkp-pacman -U *.pkg.tar.zst
  7. qjsc needs to be installed (note: must match the version of the QuickJS dkp package installed in the previous step)
  8. Now you can compile one of the example apps into a self-contained .nro:
    ./build.sh hello-world

License

nx.js is released under the MIT License. Please see the LICENSE file for more details.