在 nix-shell 中构建 Lua 包 `shell.nix`

我正在尝试为不在当前 nixpkgs 仓库中的 nix-shell 构建包。 具体来说:raylua

我已经成功将 Raylib 本身构建为使用 Nim 的 nix-shell 的一部分。 现在我正在尝试修改此内容以使用 Lua Raylib 和 Lua 库,并且不确定如何继续下去。

我看到人们使用 nix-shell ... 命令来绕过很多痛苦,但我想要的是可以提交到仓库的东西。

我有以下文件:

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 绑定 raylib,一个简单易用的库,可享受视频游戏编程";
    homepage = "https://github.com/Rabios/raylua";
    license = licenses.isc;
    maintainers = with maintainers; [ adamlwgriffiths ];
    platforms = platforms.linux;
  };
}
点赞