forked from DGNum/liminix
c3bb33c9ce
Runs fennel using a Lua compiled with the same options as the host system, and with packages set up so it can find all the local Lua packages To shorten the dev feedback loop further, allows FENNEL_PATH to be set on the command line so you can point directly it at the Fennel sources for some library you're working against instead of having to run nix-build and compile them to Lua
34 lines
881 B
Nix
34 lines
881 B
Nix
{
|
|
runCommand
|
|
, runtimeShell
|
|
, fetchurl
|
|
, lib
|
|
, luaPackages
|
|
, lua
|
|
, writeScriptBin
|
|
, linotify
|
|
, anoia
|
|
, fennel
|
|
}:
|
|
let packages = [
|
|
linotify
|
|
anoia
|
|
fennel
|
|
];
|
|
join = ps: builtins.concatStringsSep ";" ps;
|
|
luapath = join (builtins.map (f: "${f}/share/lua/${lua.luaversion}/?.lua") packages);
|
|
luacpath = join (builtins.map (f: "${f}/lib/lua/${lua.luaversion}/?.so") packages);
|
|
|
|
in writeScriptBin "fennelrepl" ''
|
|
#!${lua}/bin/lua
|
|
package.path = ${lib.strings.escapeShellArg luapath} .. ";" .. package.path
|
|
package.cpath = ${lib.strings.escapeShellArg luacpath} .. ";" .. (package.cpath or "")
|
|
local fennel = require "fennel"
|
|
fennel.install()
|
|
local more_fennel = os.getenv("FENNEL_PATH")
|
|
if more_fennel then
|
|
fennel.path = more_fennel .. ";" .. fennel.path
|
|
end
|
|
print("path", fennel.path)
|
|
fennel.repl()
|
|
''
|