1{ lua, writeText }:
2
3{ buildInputs ? [], disabled ? false, ... } @ attrs:
4
5if disabled then
6 throw "${attrs.name} not supported by interpreter lua-${lua.luaversion}"
7else
8 lua.stdenv.mkDerivation (
9 {
10 makeFlags = [
11 "PREFIX=$(out)"
12 "LUA_LIBDIR=$(out)/lib/lua/${lua.luaversion}"
13 "LUA_INC=-I${lua}/include"
14 ];
15 }
16 //
17 attrs
18 //
19 {
20 name = "lua${lua.luaversion}-" + attrs.name;
21 buildInputs = buildInputs ++ [ lua ];
22
23 setupHook = writeText "setup-hook.sh" ''
24 # check for lua/clua modules and don't add duplicates
25
26 addLuaLibPath() {
27 local package_path="$1/share/lua/${lua.luaversion}"
28 if [[ ! -d $package_path ]]; then return; fi
29 if [[ $LUA_PATH = *"$package_path"* ]]; then return; fi
30
31 if [[ -z $LUA_PATH ]]; then
32 export LUA_PATH="$package_path/?.lua"
33 else
34 export LUA_PATH="$LUA_PATH;$package_path/?.lua"
35 fi
36 }
37
38 addLuaLibCPath() {
39 local package_cpath="$1/lib/lua/${lua.luaversion}"
40 if [[ ! -d $package_cpath ]]; then return; fi
41 if [[ $LUA_CPATH = *"$package_cpath"* ]]; then return; fi
42
43 if [[ -z $LUA_CPATH ]]; then
44 export LUA_CPATH="$package_cpath/?.so"
45 else
46 export LUA_CPATH="$LUA_CPATH;$package_cpath/?.so"
47 fi
48 }
49
50 addEnvHooks "$hostOffset" addLuaLibPath
51 addEnvHooks "$hostOffset" addLuaLibCPath
52 '';
53 }
54 )