{ runCommand , runtimeShell , fetchurl , lib , luaPackages , lua , lualinux , writeScriptBin , linotify , anoia , netlink-lua , iwinfo , fennel }: let packages = [ linotify anoia fennel lualinux netlink-lua iwinfo lua.pkgs.readline ]; join = ps: builtins.concatStringsSep ";" ps; luapath = join (builtins.map (f: "${f}/share/lua/${lua.luaversion}/?.lua;" + "${f}/share/lua/${lua.luaversion}/?/init.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" table.insert(package.loaders or package.searchers,1, fennel.searcher) fennel['macro-path'] = "${anoia.dev}/share/lua/${lua.luaversion}/?.fnl;" .. fennel['macro-path'] local more_fennel = os.getenv("FENNEL_PATH") if more_fennel then fennel.path = more_fennel .. ";" .. fennel.path end if #arg > 0 then script = table.remove(arg, 1) fennel.dofile(script, {correlate = true}, arg) else fennel.repl() end ''