diff --git a/pkgs/default.nix b/pkgs/default.nix index e79a989d..411c3836 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -50,7 +50,7 @@ in lib.makeScope pkgs.newScope (self: { #purrdata = callPackage ./purr-data { }; speki = callPackage ./speki { }; sqlc-gen-from-template = callPackage ./sqlc-gen-from-template { }; - tic-80 = callPackage ./tic-80 { }; + tic-80-unstable = callPackage ./tic-80 { }; smile = callPackage ./smile { }; sessiond = callPackage ./sessiond { }; uwsm = callPackage ./uwsm { }; diff --git a/pkgs/tic-80/default.nix b/pkgs/tic-80/default.nix index c93b73a0..de15c9d4 100644 --- a/pkgs/tic-80/default.nix +++ b/pkgs/tic-80/default.nix @@ -1,63 +1,92 @@ # Build the TIC-80 virtual computer console with the PRO version. The # developers are kind enough to make it easy to compile it if you know # how. -{ stdenv, lib, SDL2, SDL2_sound, alsa-lib, cmake, fetchFromGitHub, freeglut, git -, gtk3, dbus, libGLU, libX11, libglvnd, libsamplerate, mesa, pkg-config, sndio -, zlib +{ stdenv, lib, giflib, SDL2, SDL2_sound, sdl2-compat, alsa-lib, argparse, curl +, cmake, fetchFromGitHub, freeglut, git, gtk3, dbus, libGLU, libX11, libglvnd +, libsamplerate, mesa, pkg-config, sndio, zlib, lua54Packages , pulseaudioSupport ? stdenv.isLinux, libpulseaudio -, waylandSupport ? true, wayland, libxkbcommon, libdecor +, jsSupport ? true, quickjs + +, waylandSupport ? true, wayland, wayland-scanner, libxkbcommon, libdecor , esoundSupport ? true, espeak , jackSupport ? true, jack2 -# Ruby support requires compiling mruby so we'll skip it for now. -, rubySupport ? false, ruby, rake +# As of 2025-03-26, it is basically required to have a very specific version of +# mruby so no... +, rubySupport ? false, mruby -, pythonSupport ? true, python3 +, pythonSupport ? true + +, janetSupport ? true, janet + +# This doesn't have the appropriate system library as of nixpkgs 2025-03-26, btw. +, wasmSupport ? true, wasm , withPro ? true }: # TODO: Fix the timestamp in the help section. stdenv.mkDerivation rec { pname = "tic-80"; - version = "unstable-2023-07-18"; + version = "unstable-2025-03-27"; src = fetchFromGitHub { owner = "nesbox"; repo = "TIC-80"; - rev = "68b94ee596e1ac218b8b9685fd0485c7ee8d2f18"; - hash = "sha256-S3LYuRRFMZYl6dENrV21bowzo7smm+zSHXt77/83oL0="; + rev = "5aa6c536607a5512ce1913acf3be7be8784fd8db"; + hash = "sha256-oPubH/dPGDK/ZPY6NjycytAYY4PD2H9MbJg7jGBz3aI="; fetchSubmodules = true; }; nativeBuildInputs = [ cmake pkg-config ]; buildInputs = [ + argparse alsa-lib + curl freeglut gtk3 + giflib libsamplerate libGLU libglvnd + lua54Packages.lua mesa git + sdl2-compat SDL2 SDL2_sound zlib sndio - ] ++ lib.optional pulseaudioSupport libpulseaudio - ++ lib.optional jackSupport jack2 ++ lib.optional esoundSupport espeak - ++ lib.optionals rubySupport [ ruby rake ] - ++ lib.optional pythonSupport python3 + ] ++ lib.optionals pulseaudioSupport [ libpulseaudio ] + ++ lib.optionals jackSupport [ jack2 ] + ++ lib.optionals jsSupport [ quickjs ] + ++ lib.optionals esoundSupport [ espeak ] + ++ lib.optionals rubySupport [ mruby ] + ++ lib.optionals janetSupport [ janet ] + ++ lib.optionals wasmSupport [ wasm ] ++ lib.optionals (stdenv.isLinux && waylandSupport) [ wayland + wayland-scanner libxkbcommon libdecor ]; - cmakeFlags = lib.optional withPro "-DBUILD_PRO=ON"; + cmakeFlags = + # Just leave the tinier libraries alone for this. + [ + "-DPREFER_SYSTEM_LIBRARIES=ON" + "-DBUILD_WITH_FENNEL=ON" + "-DBUILD_WITH_MOON=ON" + "-DBUILD_WITH_SCHEME=ON" + ] ++ lib.optionals withPro [ "-DBUILD_PRO=ON" ] + ++ lib.optionals jsSupport [ "-DBUILD_WITH_JS=ON" ] + ++ lib.optionals rubySupport [ "-DBUILD_WITH_RUBY=ON" ] + ++ lib.optionals pythonSupport [ "-DBUILD_WITH_PYTHON=ON" ] + ++ lib.optionals wasmSupport [ "-DBUILD_WITH_WASM=ON" ] + ++ lib.optionals janetSupport [ "-DBUILD_WITH_JANET=ON" ]; # Export all of the TIC-80-related utilities. outputs = [ "out" "dev" ];