0

我正在尝试构建一个不在当前 nixpkgs 存储库中的 nix-shell。具体来说:raylua

我已经设法使用 Nim 将 Raylib 本身构建为 nix-shell的一部分。我现在正在尝试修改它以使用 Lua Raylib 和 Lua 库,但不确定如何继续。

我看到人们使用nix-shell ...命令来绕过很多这种痛苦,但我想要一些我可以提交给 repo 的东西。

我拥有的文件是:

shell.nix

{ pkgs ? import <nixpkgs> {} }:

let
    unstable = import <unstable> {};
    raylib = pkgs.callPackage ./nix/raylib/default.nix { };
    # toLuaModule
    #raylib-lua = pkgs.callPackage ./nix/raylib-lua/default.nix { raylib };
in
pkgs.mkShell {
    buildInputs = [
        pkgs.bashInteractive
        pkgs.glfw
        pkgs.luajit
        raylib
        #raylua
    ];
}

nix/raylib/default.nix

https://github.com/adamlwgriffiths/nix-nim/中的相同

nix/raylua/default.nix

{ stdenv, lib, fetchFromGitHub, make, luaPackages }: #, raylib }:

with luaPackages;

let
    libs = [];
in
stdenv.mkDerivation rec {
  pname = "raylua";
  version = "3.5.0";

  src = fetchFromGitHub {
    owner = "Rabios";
    repo = pname;
    rev = version;
    sha256 = "0syvd5js1lbx3g4cddwwncqg95l6hb3fdz5nsh5pqy7fr6v84kwj";
  };

  lualibs = [ luaPackages.lua ];
  buildInputs = [ make ] ++ lualibs;

  LUA_PATH = stdenv.lib.concatStringsSep ";" (map luaPackages.getLuaPath lualibs);
  LUA_CPATH = stdenv.lib.concatStringsSep ";" (map luaPackages.getLuaCPath lualibs);

  configureFlags = ''
    LUA_PATH="${LUA_PATH}"
    LUA_CPATH="${LUA_CPATH}"
    INST_LIBDIR="$out/lib/lua/${luaPackages.lua.luaversion}"
    INST_LUADIR="$out/share/lua/${luaPackages.lua.luaversion}"
    LUA_BINDIR="${luaPackages.lua}/bin"
    LUA_INCDIR="-I${luaPackages.lua}/include"
    LUA_LIBDIR="-L${luaPackages.lua}/lib"
  '';

  meta = with stdenv.lib; {
    description = "Lua bindings for raylib, a simple and easy-to-use library to enjoy videogames programming";
    homepage = "https://github.com/Rabios/raylua";
    license = licenses.isc;
    maintainers = with maintainers; [ adamlwgriffiths ];
    platforms = platforms.linux;
  };
}

4

0 回答 0