diff options
Diffstat (limited to 'pkgs/development/interpreters/lua-5/build-lua-package.nix')
-rw-r--r-- | pkgs/development/interpreters/lua-5/build-lua-package.nix | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/pkgs/development/interpreters/lua-5/build-lua-package.nix b/pkgs/development/interpreters/lua-5/build-lua-package.nix index ff93e842eeae1..0af7b470b0b38 100644 --- a/pkgs/development/interpreters/lua-5/build-lua-package.nix +++ b/pkgs/development/interpreters/lua-5/build-lua-package.nix @@ -4,6 +4,7 @@ , wrapLua # Whether the derivation provides a lua module or not. , toLuaModule +, luarocksCheckHook }: { @@ -42,6 +43,7 @@ pname , passthru ? {} , doCheck ? false +, doInstallCheck ? false # Non-Lua / system (e.g. C library) dependencies. Is a list of deps, where # each dep is either a derivation, or an attribute set like @@ -97,10 +99,12 @@ let # Filter out the lua derivation itself from the Lua module dependency # closure, as it doesn't have a rock tree :) requiredLuaRocks = lib.filter (d: d ? luaModule) - (lua.pkgs.requiredLuaModules luarocksDrv.propagatedBuildInputs); + (lua.pkgs.requiredLuaModules (luarocksDrv.nativeBuildInputs ++ luarocksDrv.propagatedBuildInputs)); # example externalDeps': [ { name = "CRYPTO"; dep = pkgs.openssl; } ] - externalDepsGenerated = lib.unique (lib.filter (drv: !drv ? luaModule) (luarocksDrv.propagatedBuildInputs ++ luarocksDrv.buildInputs)); + externalDepsGenerated = lib.unique (lib.filter (drv: !drv ? luaModule) ( + luarocksDrv.nativeBuildInputs ++ luarocksDrv.propagatedBuildInputs ++ luarocksDrv.buildInputs) + ); externalDeps' = lib.filter (dep: !lib.isDerivation dep) externalDeps; luarocksDrv = toLuaModule ( lua.stdenv.mkDerivation ( @@ -108,15 +112,17 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab name = namePrefix + pname + "-" + version; - buildInputs = [ wrapLua lua.pkgs.luarocks ] + nativeBuildInputs = [ + wrapLua + lua.pkgs.luarocks + ] ++ buildInputs - ++ lib.optionals doCheck checkInputs + ++ lib.optionals doCheck ([ luarocksCheckHook ] ++ checkInputs) ++ (map (d: d.dep) externalDeps') ; # propagate lua to active setup-hook in nix-shell propagatedBuildInputs = propagatedBuildInputs ++ [ lua ]; - inherit doCheck; # @-patterns do not capture formal argument default values, so we need to # explicitly inherit this for it to be available as a shell variable in the @@ -190,6 +196,14 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab runHook postCheck ''; + LUAROCKS_CONFIG="$PWD/${luarocks_config}"; + + shellHook = '' + runHook preShell + export LUAROCKS_CONFIG="$PWD/${luarocks_config}"; + runHook postShell + ''; + passthru = { inherit lua; # The lua interpreter inherit externalDeps; |