Merge pull request #136615 from teto/lua-flat

Various lua changes/cleanup
This commit is contained in:
Matthieu Coudron 2021-09-12 18:08:53 +02:00 committed by GitHub
commit ab9c7819fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 213 additions and 140 deletions

View File

@ -1150,6 +1150,13 @@ Superuser created successfully.
other and share data.
</para>
</listitem>
<listitem>
<para>
<literal>lua</literal> and <literal>luajit</literal>
interpreters have been patched to avoid looking into /usr/lib
directories, thus increasing the purity of the build.
</para>
</listitem>
</itemizedlist>
</section>
</section>

View File

@ -328,3 +328,6 @@ To be able to access the web UI this port needs to be opened in the firewall.
- `rofi` has been updated from '1.6.1' to '1.7.0', one important thing is the removal of the old xresources based configuration setup. Read more [in rofi's changelog](https://github.com/davatorium/rofi/blob/cb12e6fc058f4a0f4f/Changelog#L1).
- ipfs now defaults to not listening on you local network. This setting was change as server providers won't accept port scanning on their private network. If you have several ipfs instances running on a network you own, feel free to change the setting `ipfs.localDiscovery = true;`. localDiscovery enables different instances to discover each other and share data.
- `lua` and `luajit` interpreters have been patched to avoid looking into /usr/lib
directories, thus increasing the purity of the build.

View File

@ -133,7 +133,7 @@ rec {
configure.pathogen.pluginNames = [ "vim-nix" ];
};
nvimWithLuaPackages = wrapNeovim2 "with-lua-packages" (makeNeovimConfig {
nvimWithLuaPackages = wrapNeovim2 "-with-lua-packages" (makeNeovimConfig {
extraLuaPackages = ps: [ps.mpack];
customRC = ''
lua require("mpack")
@ -141,6 +141,7 @@ rec {
});
nvim_with_lua_packages = runTest nvimWithLuaPackages ''
export HOME=$TMPDIR
${nvimWithLuaPackages}/bin/nvim -i NONE --noplugin -es
'';
})

View File

@ -78,8 +78,7 @@ let
++ (extraPython3Packages ps)
++ (lib.concatMap (f: f ps) pluginPython3Packages));
lua = neovim-unwrapped.lua;
luaEnv = lua.withPackages(ps: extraLuaPackages ps);
luaEnv = neovim-unwrapped.lua.withPackages(extraLuaPackages);
# Mapping a boolean argument to a key that tells us whether to add or not to
# add to nvim's 'embedded rc' this:
@ -115,8 +114,8 @@ let
] ++ lib.optionals (binPath != "") [
"--suffix" "PATH" ":" binPath
] ++ lib.optionals (luaEnv != null) [
"--prefix" "LUA_PATH" ";" "${luaEnv}/share/lua/${lua.luaversion}/?.lua"
"--prefix" "LUA_CPATH" ";" "${luaEnv}/lib/lua/${lua.luaversion}/?.so"
"--prefix" "LUA_PATH" ";" (neovim-unwrapped.lua.pkgs.lib.genLuaPathAbsStr luaEnv)
"--prefix" "LUA_CPATH" ";" (neovim-unwrapped.lua.pkgs.lib.genLuaCPathAbsStr luaEnv)
];

View File

@ -1,8 +1,11 @@
{ lib, stdenv, fetchFromGitHub, pkg-config, makeWrapper, makeDesktopItem
, ncurses, libtermkey, lpeg, lua
, ncurses, libtermkey, lua
, acl ? null, libselinux ? null
}:
let
luaEnv = lua.withPackages(ps: [ ps.lpeg ]);
in
stdenv.mkDerivation rec {
pname = "vis";
version = "0.7";
@ -19,8 +22,7 @@ stdenv.mkDerivation rec {
buildInputs = [
ncurses
libtermkey
lua
lpeg
luaEnv
] ++ lib.optionals stdenv.isLinux [
acl
libselinux
@ -30,16 +32,13 @@ stdenv.mkDerivation rec {
patchShebangs ./configure
'';
LUA_CPATH="${lpeg}/lib/lua/${lua.luaversion}/?.so;";
LUA_PATH="${lpeg}/share/lua/${lua.luaversion}/?.lua";
postInstall = ''
mkdir -p "$out/share/applications"
cp $desktopItem/share/applications/* $out/share/applications
echo wrapping $out/bin/vis with runtime environment
wrapProgram $out/bin/vis \
--prefix LUA_CPATH ';' "${lpeg}/lib/lua/${lua.luaversion}/?.so" \
--prefix LUA_PATH ';' "${lpeg}/share/lua/${lua.luaversion}/?.lua" \
--prefix LUA_CPATH ';' "${luaEnv}/lib/lua/${lua.luaversion}/?.so" \
--prefix LUA_PATH ';' "${luaEnv}/share/lua/${lua.luaversion}/?.lua" \
--prefix VIS_PATH : "\$HOME/.config:$out/share/vis"
'';

View File

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, luaPackages, cairo, librsvg, cmake, imagemagick, pkg-config, gdk-pixbuf
{ lib, stdenv, fetchFromGitHub, lua, cairo, librsvg, cmake, imagemagick, pkg-config, gdk-pixbuf
, xorg, libstartup_notification, libxdg_basedir, libpthreadstubs
, xcb-util-cursor, makeWrapper, pango, gobject-introspection
, which, dbus, nettools, git, doxygen
@ -12,10 +12,11 @@
# needed for beautiful.gtk to work
assert gtk3Support -> gtk3 != null;
let
luaEnv = lua.withPackages(ps: [ ps.lgi ps.ldoc ]);
in
stdenv.mkDerivation rec {
lgi = luaPackages.lgi;
lua = luaPackages.lua;
ldoc = luaPackages.ldoc;
pname = "awesome";
version = "4.3";
@ -35,7 +36,6 @@ stdenv.mkDerivation rec {
xmlto docbook_xml_dtd_45
docbook_xsl findXMLCatalogs
asciidoctor
ldoc
];
outputs = [ "out" "doc" ];
@ -44,7 +44,7 @@ stdenv.mkDerivation rec {
propagatedUserEnvPkgs = [ hicolor-icon-theme ];
buildInputs = [ cairo librsvg dbus gdk-pixbuf gobject-introspection
git lgi libpthreadstubs libstartup_notification
git luaEnv libpthreadstubs libstartup_notification
libxdg_basedir lua nettools pango xcb-util-cursor
xorg.libXau xorg.libXdmcp xorg.libxcb xorg.libxshmfence
xorg.xcbutil xorg.xcbutilimage xorg.xcbutilkeysyms
@ -55,14 +55,14 @@ stdenv.mkDerivation rec {
cmakeFlags = [
#"-DGENERATE_MANPAGES=ON"
"-DOVERRIDE_VERSION=${version}"
] ++ lib.optional luaPackages.isLuaJIT "-DLUA_LIBRARY=${lua}/lib/libluajit-5.1.so"
] ++ lib.optional lua.pkgs.isLuaJIT "-DLUA_LIBRARY=${lua}/lib/libluajit-5.1.so"
;
GI_TYPELIB_PATH = "${pango.out}/lib/girepository-1.0";
# LUA_CPATH and LUA_PATH are used only for *building*, see the --search flags
# below for how awesome finds the libraries it needs at runtime.
LUA_CPATH = "${lgi}/lib/lua/${lua.luaversion}/?.so";
LUA_PATH = "${lgi}/share/lua/${lua.luaversion}/?.lua;;";
LUA_CPATH = "${luaEnv}/lib/lua/${lua.luaversion}/?.so";
LUA_PATH = "${luaEnv}/share/lua/${lua.luaversion}/?.lua;;";
postInstall = ''
# Don't use wrapProgram or the wrapper will duplicate the --search
@ -70,8 +70,8 @@ stdenv.mkDerivation rec {
mv "$out/bin/awesome" "$out/bin/.awesome-wrapped"
makeWrapper "$out/bin/.awesome-wrapped" "$out/bin/awesome" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--add-flags '--search ${lgi}/lib/lua/${lua.luaversion}' \
--add-flags '--search ${lgi}/share/lua/${lua.luaversion}' \
--add-flags '--search ${luaEnv}/lib/lua/${lua.luaversion}' \
--add-flags '--search ${luaEnv}/share/lua/${lua.luaversion}' \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH"
wrapProgram $out/bin/awesome-client \

View File

@ -238,7 +238,7 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab
inherit externalDeps;
} // passthru;
meta = with lib.maintainers; {
meta = {
platforms = lua.meta.platforms;
# add extra maintainer(s) to every package
maintainers = (meta.maintainers or []) ++ [ ];

View File

@ -1,7 +1,8 @@
{ lib, stdenv, fetchurl, readline
, compat ? false
, callPackage
, packageOverrides ? (self: super: {})
, makeWrapper
, packageOverrides ? (final: prev: {})
, sourceVersion
, hash
, patches ? []
@ -10,7 +11,10 @@
, staticOnly ? stdenv.hostPlatform.isStatic
}:
let
luaPackages = callPackage ../../lua-modules {lua=self; overrides=packageOverrides;};
luaPackages = callPackage ../../lua-modules {
lua = self;
overrides = packageOverrides;
};
plat = if stdenv.isLinux then "linux"
else if stdenv.isDarwin then "macosx"
@ -31,21 +35,32 @@ self = stdenv.mkDerivation rec {
sha256 = hash;
};
LuaPathSearchPaths = luaPackages.getLuaPathList luaversion;
LuaCPathSearchPaths = luaPackages.getLuaCPathList luaversion;
LuaPathSearchPaths = luaPackages.lib.luaPathList;
LuaCPathSearchPaths = luaPackages.lib.luaCPathList;
setupHook = luaPackages.lua-setup-hook LuaPathSearchPaths LuaCPathSearchPaths;
nativeBuildInputs = [ makeWrapper ];
buildInputs = [ readline ];
inherit patches;
postPatch = lib.optionalString (!stdenv.isDarwin && !staticOnly) ''
# we can't pass flags to the lua makefile because for portability, everything is hardcoded
postPatch = ''
{
echo -e '
#undef LUA_PATH_DEFAULT
#define LUA_PATH_DEFAULT "./share/lua/${luaversion}/?.lua;./?.lua;./?/init.lua"
#undef LUA_CPATH_DEFAULT
#define LUA_CPATH_DEFAULT "./lib/lua/${luaversion}/?.so;./?.so;./lib/lua/${luaversion}/loadall.so"
'
} >> src/luaconf.h
'' + lib.optionalString (!stdenv.isDarwin && !staticOnly) ''
# Add a target for a shared library to the Makefile.
sed -e '1s/^/LUA_SO = liblua.so/' \
-e 's/ALL_T *= */&$(LUA_SO) /' \
-i src/Makefile
cat ${./lua-dso.make} >> src/Makefile
'';
'' ;
# see configurePhase for additional flags (with space)
makeFlags = [

View File

@ -4,16 +4,13 @@
, makeWrapper
}:
with lib;
# defined in trivial-builders.nix
# imported as wrapLua in lua-packages.nix and passed to build-lua-derivation to be used as buildInput
makeSetupHook {
deps = makeWrapper;
substitutions.executable = lua.interpreter;
substitutions.lua = lua;
substitutions.LuaPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths;
substitutions.LuaCPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths;
deps = makeWrapper;
substitutions.executable = lua.interpreter;
substitutions.lua = lua;
substitutions.LuaPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths;
substitutions.LuaCPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths;
} ./wrap.sh

View File

@ -11,13 +11,18 @@
let
env = let
paths = requiredLuaModules (extraLibs ++ [ lua ] );
in (buildEnv {
in buildEnv {
name = "${lua.name}-env";
inherit paths;
inherit ignoreCollisions;
extraOutputsToInstall = [ "out" ] ++ extraOutputsToInstall;
nativeBuildInputs = [
makeWrapper
(lua.pkgs.lua-setup-hook lua.LuaPathSearchPaths lua.LuaCPathSearchPaths)
];
# we create wrapper for the binaries in the different packages
postBuild = ''
if [ -L "$out/bin" ]; then
@ -37,7 +42,12 @@ let
rm -f "$out/bin/$prg"
if [ -x "$prg" ]; then
nix_debug "Making wrapper $prg"
makeWrapper "$path/bin/$prg" "$out/bin/$prg" --suffix LUA_PATH ';' "$LUA_PATH" --suffix LUA_CPATH ';' "$LUA_CPATH" ${lib.concatStringsSep " " makeWrapperArgs}
makeWrapper "$path/bin/$prg" "$out/bin/$prg" \
--set-default LUA_PATH ";;" \
--suffix LUA_PATH ';' "$LUA_PATH" \
--set-default LUA_CPATH ";;" \
--suffix LUA_CPATH ';' "$LUA_CPATH" \
${lib.concatStringsSep " " makeWrapperArgs}
fi
fi
done
@ -62,8 +72,5 @@ let
'';
};
};
}).overrideAttrs (_: {
# Add extra deps needed for postBuild hook.
nativeBuildInputs = [ makeWrapper lua ];
});
};
in env

View File

@ -10,7 +10,7 @@
, extraMeta ? { }
, callPackage
, self
, packageOverrides ? (self: super: { })
, packageOverrides ? (final: prev: {})
, enableFFI ? true
, enableJIT ? true
, enableJITDebugModule ? enableJIT
@ -62,6 +62,15 @@ stdenv.mkDerivation rec {
# passed by nixpkgs CC wrapper is insufficient on its own
substituteInPlace src/Makefile --replace "#CCDEBUG= -g" "CCDEBUG= -g"
fi
{
echo -e '
#undef LUA_PATH_DEFAULT
#define LUA_PATH_DEFAULT "./share/lua/${luaversion}/?.lua;./?.lua;./?/init.lua"
#undef LUA_CPATH_DEFAULT
#define LUA_CPATH_DEFAULT "./lib/lua/${luaversion}/?.so;./?.so;./lib/lua/${luaversion}/loadall.so"
'
} >> src/luaconf.h
'';
configurePhase = false;
@ -88,15 +97,10 @@ stdenv.mkDerivation rec {
ln -s "$out"/bin/luajit-* "$out"/bin/luajit
'';
LuaPathSearchPaths = [
"lib/lua/${luaversion}/?.lua"
"share/lua/${luaversion}/?.lua"
"share/lua/${luaversion}/?/init.lua"
"lib/lua/${luaversion}/?/init.lua"
"share/${name}/?.lua"
];
LuaCPathSearchPaths = [ "lib/lua/${luaversion}/?.so" "share/lua/${luaversion}/?.so" ];
setupHook = luaPackages.lua-setup-hook LuaPathSearchPaths LuaCPathSearchPaths;
LuaPathSearchPaths = luaPackages.lib.luaPathList;
LuaCPathSearchPaths = luaPackages.lib.luaCPathList;
setupHook = luaPackages.lua-setup-hook luaPackages.lib.luaPathList luaPackages.lib.luaCPathList;
passthru = rec {
buildEnv = callPackage ../lua-5/wrapper.nix {

View File

@ -1,7 +1,7 @@
# inspired by pkgs/development/haskell-modules/default.nix
{ pkgs, lib
, lua
, overrides ? (self: super: {})
, overrides ? (final: prev: {})
}:
let
@ -15,7 +15,7 @@ let
overridenPackages = import ./overrides.nix { inherit pkgs; };
generatedPackages = if (builtins.pathExists ./generated-packages.nix) then
pkgs.callPackage ./generated-packages.nix { } else (self: super: {});
pkgs.callPackage ./generated-packages.nix { } else (final: prev: {});
extensible-self = lib.makeExtensible
(extends overrides
@ -24,7 +24,6 @@ let
initialPackages
)
)
)
;
);
in
extensible-self

View File

@ -0,0 +1,63 @@
{ pkgs, lib, lua }:
let
requiredLuaModules = drvs: with lib; let
modules = filter hasLuaModule drvs;
in unique ([lua] ++ modules ++ concatLists (catAttrs "requiredLuaModules" modules));
# Check whether a derivation provides a lua module.
hasLuaModule = drv: drv ? luaModule;
in
rec {
inherit hasLuaModule requiredLuaModules;
luaPathList = [
"share/lua/${lua.luaversion}/?.lua"
"share/lua/${lua.luaversion}/?/init.lua"
];
luaCPathList = [
"lib/lua/${lua.luaversion}/?.so"
];
/* generate paths without a prefix
*/
luaPathRelStr = lib.concatStringsSep ";" luaPathList;
luaCPathRelStr = lib.concatStringsSep ";" luaCPathList;
/* generate LUA_(C)PATH value for a specific derivation, i.e., with absolute paths
*/
genLuaPathAbsStr = drv: lib.concatMapStringsSep ";" (x: "${drv}/${x}") luaPathList;
genLuaCPathAbsStr = drv: lib.concatMapStringsSep ";" (x: "${drv}/${x}") luaCPathList;
/* Generate a LUA_PATH with absolute paths
*/
# genLuaPathAbs = drv:
# lib.concatStringsSep ";" (map (x: "${drv}/x") luaPathList);
luaAtLeast = lib.versionAtLeast lua.luaversion;
luaOlder = lib.versionOlder lua.luaversion;
isLua51 = (lib.versions.majorMinor lua.version) == "5.1";
isLua52 = (lib.versions.majorMinor lua.version) == "5.2";
isLua53 = lua.luaversion == "5.3";
isLuaJIT = lib.getName lua == "luajit";
/* generates the relative path towards the folder where
seems stable even when using lua_modules_path = ""
Example:
getDataFolder luaPackages.stdlib
=> stdlib-41.2.2-1-rocks/stdlib/41.2.2-1/doc
*/
getDataFolder = drv:
"${drv.pname}-${drv.version}-rocks/${drv.pname}/${drv.version}";
/* Convert derivation to a lua module.
so that luaRequireModules can be run later
*/
toLuaModule = drv:
drv.overrideAttrs( oldAttrs: {
# Use passthru in order to prevent rebuilds when possible.
passthru = (oldAttrs.passthru or {}) // {
luaModule = lua;
requiredLuaModules = requiredLuaModules drv.propagatedBuildInputs;
};
});
}

View File

@ -363,6 +363,12 @@ with super;
'';
});
# TODO just while testing, remove afterwards
# toVimPlugin should do it instead
gitsigns-nvim = super.gitsigns-nvim.overrideAttrs(oa: {
nativeBuildInputs = oa.nativeBuildInputs or [] ++ [ pkgs.vimUtils.vimGenDocHook ];
});
# aliases
cjson = super.lua-cjson;
}

View File

@ -2,7 +2,9 @@
, boost, libGLU, lua, cmake, which, pkg-config, }:
let
luaEnv = lua.withPackages(ps: with ps; [ luazip luafilesystem lrexlib-pcre luasql-sqlite3 lua-yajl luautf8 ]);
luaEnv = lua.withPackages(ps: with ps; [
luazip luafilesystem lrexlib-pcre luasql-sqlite3 lua-yajl luautf8
]);
in
stdenv.mkDerivation rec {
pname = "mudlet";
@ -39,8 +41,6 @@ stdenv.mkDerivation rec {
cp -r ../mudlet.png $out/share/pixmaps/
makeQtWrapper $out/mudlet $out/bin/mudlet \
--set LUA_CPATH "${luaEnv}/lib/lua/${lua.luaversion}/?.so" \
--prefix LUA_PATH : "$NIX_LUA_PATH" \
--prefix LD_LIBRARY_PATH : "${libsForQt5.qtkeychain}/lib/" \
--run "cd $out";
'';

View File

@ -1,19 +1,24 @@
{ stdenv, fetchurl, lib, libidn, openssl, makeWrapper, fetchhg
, lua5, luasocket, luasec, luaexpat, luafilesystem, luabitop
, lua
, nixosTests
, withLibevent ? true, luaevent ? null
, withDBI ? true, luadbi ? null
, withLibevent ? true
, withDBI ? true
# use withExtraLibs to add additional dependencies of community modules
, withExtraLibs ? [ ]
, withOnlyInstalledCommunityModules ? [ ]
, withCommunityModules ? [ ] }:
assert withLibevent -> luaevent != null;
assert withDBI -> luadbi != null;
with lib;
let
luaEnv = lua.withPackages(p: with p; [
luasocket luasec luaexpat luafilesystem luabitop luadbi-sqlite3
]
++ lib.optional withLibevent p.luaevent
++ lib.optional withDBI p.luadbi
);
in
stdenv.mkDerivation rec {
version = "0.11.10"; # also update communityModules
pname = "prosody";
@ -41,28 +46,24 @@ stdenv.mkDerivation rec {
sha256 = "02gj1b8sdmdvymsdmjpq47zrl7sg578jcdxbbq18s44f3njmc9q1";
};
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
lua5 makeWrapper libidn openssl
luaEnv libidn openssl
]
# Lua libraries
++ [
luasocket luasec luaexpat luafilesystem luabitop
]
++ optional withLibevent luaevent
++ optional withDBI luadbi
++ withExtraLibs;
configureFlags = [
"--ostype=linux"
"--with-lua-include=${lua5}/include"
"--with-lua=${lua5}"
"--with-lua-include=${luaEnv}/include"
"--with-lua=${luaEnv}"
];
postBuild = ''
make -C tools/migration
'';
# the wrapping should go away once lua hook is fixed
postInstall = ''
${concatMapStringsSep "\n" (module: ''
cp -r $communityModules/mod_${module} $out/lib/prosody/modules/

View File

@ -19950,9 +19950,8 @@ with pkgs;
prosody = callPackage ../servers/xmpp/prosody {
# _compat can probably be removed on next minor version after 0.10.0
lua5 = lua5_2_compat;
withExtraLibs = [ luaPackages.luadbi-sqlite3 ];
inherit (lua52Packages) luasocket luasec luaexpat luafilesystem luabitop luaevent luadbi;
lua = lua5_2_compat;
withExtraLibs = [];
};
biboumi = callPackage ../servers/xmpp/biboumi { };
@ -28277,9 +28276,7 @@ with pkgs;
neovim-remote = callPackage ../applications/editors/neovim/neovim-remote.nix { };
vis = callPackage ../applications/editors/vis {
inherit (lua52Packages) lpeg;
};
vis = callPackage ../applications/editors/vis { };
viw = callPackage ../applications/editors/viw { };

View File

@ -18,85 +18,60 @@ let
packages = ( self:
let
luaAtLeast = lib.versionAtLeast lua.luaversion;
luaOlder = lib.versionOlder lua.luaversion;
isLua51 = (lib.versions.majorMinor lua.version) == "5.1";
isLua52 = (lib.versions.majorMinor lua.version) == "5.2";
isLua53 = lua.luaversion == "5.3";
isLuaJIT = lib.getName lua == "luajit";
lua-setup-hook = callPackage ../development/interpreters/lua-5/setup-hook.nix { };
# Check whether a derivation provides a lua module.
hasLuaModule = drv: drv ? luaModule ;
# a function of lua_path / lua_cpath
lua-setup-hook = callPackage ../development/interpreters/lua-5/setup-hook.nix {
inherit lib;
};
callPackage = pkgs.newScope self;
requiredLuaModules = drvs: with lib; let
modules = filter hasLuaModule drvs;
in unique ([lua] ++ modules ++ concatLists (catAttrs "requiredLuaModules" modules));
# Convert derivation to a lua module.
toLuaModule = drv:
drv.overrideAttrs( oldAttrs: {
# Use passthru in order to prevent rebuilds when possible.
passthru = (oldAttrs.passthru or {})// {
luaModule = lua;
requiredLuaModules = requiredLuaModules drv.propagatedBuildInputs;
};
});
platformString =
if stdenv.isDarwin then "macosx"
else if stdenv.isFreeBSD then "freebsd"
else if stdenv.isLinux then "linux"
else if stdenv.isSunOS then "solaris"
else throw "unsupported platform";
buildLuaApplication = args: buildLuarocksPackage ({namePrefix="";} // args );
buildLuarocksPackage = with pkgs.lib; makeOverridable(callPackage ../development/interpreters/lua-5/build-lua-package.nix {
inherit toLuaModule;
buildLuarocksPackage = lib.makeOverridable(callPackage ../development/interpreters/lua-5/build-lua-package.nix {
inherit lua;
inherit (pkgs) lib;
inherit (luaLib) toLuaModule;
});
in
with self; {
getLuaPathList = majorVersion: [
"share/lua/${majorVersion}/?.lua"
"share/lua/${majorVersion}/?/init.lua"
];
getLuaCPathList = majorVersion: [
"lib/lua/${majorVersion}/?.so"
];
# helper functions for dealing with LUA_PATH and LUA_CPATH
getPath = drv: pathListForVersion:
lib.concatMapStringsSep ";" (path: "${drv}/${path}") (pathListForVersion lua.luaversion);
getLuaPath = drv: getPath drv getLuaPathList;
getLuaCPath = drv: getPath drv getLuaCPathList;
luaLib = import ../development/lua-modules/lib.nix {
inherit (pkgs) lib;
inherit pkgs lua;
};
#define build lua package function
buildLuaPackage = callPackage ../development/lua-modules/generic {
inherit lua writeText;
inherit writeText;
};
getPath = drv: pathListForVersion:
lib.concatMapStringsSep ";" (path: "${drv}/${path}") pathListForVersion;
inherit toLuaModule hasLuaModule lua-setup-hook;
inherit buildLuarocksPackage buildLuaApplication;
inherit requiredLuaModules luaOlder luaAtLeast
isLua51 isLua52 isLua53 isLuaJIT lua callPackage;
in
{
# helper functions for dealing with LUA_PATH and LUA_CPATH
lib = luaLib;
getLuaPath = drv: luaLib.getPath drv (luaLib.luaPathList lua.luaversion) ;
getLuaCPath = drv: luaLib.getPath drv (luaLib.luaCPathList lua.luaversion) ;
inherit lua lua-setup-hook callPackage;
inherit buildLuaPackage buildLuarocksPackage buildLuaApplication;
inherit (luaLib) luaOlder luaAtLeast isLua51 isLua52 isLua53 isLuaJIT
requiredLuaModules toLuaModule hasLuaModule;
# wraps programs in $out/bin with valid LUA_PATH/LUA_CPATH
wrapLua = callPackage ../development/interpreters/lua-5/wrap-lua.nix {
inherit lua; inherit (pkgs) makeSetupHook makeWrapper;
inherit lua lib;
inherit (pkgs) makeSetupHook makeWrapper;
};
luarocks = callPackage ../development/tools/misc/luarocks {
inherit lua;
inherit lua lib;
};
# a fork of luarocks used to generate nix lua derivations from rockspecs
luarocks-nix = callPackage ../development/tools/misc/luarocks/luarocks-nix.nix { };
luxio = buildLuaPackage {
@ -132,7 +107,7 @@ with self; {
};
};
vicious = toLuaModule(stdenv.mkDerivation rec {
vicious = luaLib.toLuaModule( stdenv.mkDerivation rec {
pname = "vicious";
version = "2.5.0";