129 lines
2.5 KiB
Nix
129 lines
2.5 KiB
Nix
{
|
|
description = "game engine";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
|
self.submodules = true;
|
|
};
|
|
|
|
outputs =
|
|
{ nixpkgs, ... }:
|
|
let
|
|
system = "x86_64-linux";
|
|
|
|
pkgs = nixpkgs.legacyPackages.${system};
|
|
staticPkgs = pkgs.pkgsStatic;
|
|
|
|
mruby = staticPkgs.stdenv.mkDerivation {
|
|
pname = "mruby";
|
|
version = "0.0.1";
|
|
|
|
src = staticPkgs.lib.cleanSourceWith {
|
|
src = ./libs;
|
|
name = "mruby-src";
|
|
};
|
|
|
|
patches = [
|
|
./libs/changes.patch
|
|
];
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
ruby
|
|
gnumake
|
|
clang
|
|
];
|
|
|
|
buildPhase = ''
|
|
cd mruby
|
|
rake
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out
|
|
|
|
cp -r build/host/lib $out/lib
|
|
cp -r build/host/include $out/include
|
|
|
|
mkdir -p $out/bin
|
|
cp build/host/bin/mrbc $out/bin/mrbc
|
|
'';
|
|
};
|
|
|
|
game-engine = staticPkgs.stdenv.mkDerivation {
|
|
pname = "game-engine";
|
|
version = "0.1.0";
|
|
|
|
src = ./.;
|
|
|
|
nativeBuildInputs = with pkgs; [
|
|
clang
|
|
pkg-config
|
|
gnumake
|
|
bear
|
|
ccache
|
|
xxd
|
|
];
|
|
|
|
buildInputs = [
|
|
pkgs.sdl3
|
|
pkgs.sdl3-ttf
|
|
pkgs.sdl3-image
|
|
|
|
mruby
|
|
];
|
|
|
|
buildPhase = ''
|
|
make \
|
|
MRBC=${mruby}/bin/mrbc \
|
|
MRUBY_INCLUDE=${mruby}/include \
|
|
MRUBY_LIB=${mruby}/lib/libmruby.a
|
|
'';
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
cp game-engine $out/bin/game-engine
|
|
'';
|
|
|
|
CC = "${pkgs.clang}/bin/clang";
|
|
CXX = "${pkgs.clang}/bin/clang++";
|
|
};
|
|
|
|
in
|
|
{
|
|
packages.${system} = {
|
|
default = game-engine;
|
|
game-engine = game-engine;
|
|
mruby = mruby;
|
|
};
|
|
|
|
devShells.${system}.default = pkgs.mkShell {
|
|
inputsFrom = [ game-engine ];
|
|
|
|
packages = [
|
|
pkgs.clang-tools
|
|
pkgs.clang
|
|
pkgs.ccache
|
|
pkgs.pkg-config
|
|
pkgs.gnumake
|
|
pkgs.bear
|
|
pkgs.ruby
|
|
pkgs.xxd
|
|
|
|
pkgs.sdl3
|
|
pkgs.sdl3-ttf
|
|
pkgs.sdl3-image
|
|
];
|
|
|
|
shellHook = ''
|
|
export CC=clang
|
|
export CXX=clang++
|
|
export LD=clang
|
|
|
|
export MRBC=${mruby}/bin/mrbc
|
|
export MRUBY_INCLUDE=${mruby}/include
|
|
export MRUBY_LIB=${mruby}/lib/libmruby.a
|
|
'';
|
|
};
|
|
};
|
|
}
|