mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-04-16 06:19:11 +00:00
Also updated it since there's another package of the same name with the latest stable release.
108 lines
2.9 KiB
Nix
108 lines
2.9 KiB
Nix
# 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, 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
|
|
|
|
, jsSupport ? true, quickjs
|
|
|
|
, waylandSupport ? true, wayland, wayland-scanner, libxkbcommon, libdecor
|
|
|
|
, esoundSupport ? true, espeak
|
|
|
|
, jackSupport ? true, jack2
|
|
|
|
# As of 2025-03-26, it is basically required to have a very specific version of
|
|
# mruby so no...
|
|
, rubySupport ? false, mruby
|
|
|
|
, 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-2025-03-27";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "nesbox";
|
|
repo = "TIC-80";
|
|
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.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 =
|
|
# 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" ];
|
|
postInstall = ''
|
|
install -Dm755 bin/* -t $dev/bin
|
|
install -Dm644 lib/* -t $dev/lib
|
|
install -Dm644 ../include/* -t $dev/include
|
|
|
|
mkdir -p $out/share/tic80
|
|
cp -r ../demos $out/share/tic80/
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "A fantasy computer with built-in game dev tools.";
|
|
homepage = "https://tic80.com/";
|
|
license = licenses.mit;
|
|
};
|
|
}
|