default.nix (1498B)
1 { 2 lib, 3 lua, 4 lualinux, 5 writeScriptBin, 6 linotify, 7 anoia, 8 netlink-lua, 9 fennel, 10 }: 11 let 12 packages = [ 13 linotify 14 anoia 15 fennel 16 lualinux 17 netlink-lua 18 lua.pkgs.readline 19 ]; 20 join = ps: builtins.concatStringsSep ";" ps; 21 luapath = join ( 22 builtins.map ( 23 f: "${f}/share/lua/${lua.luaversion}/?.lua;" + "${f}/share/lua/${lua.luaversion}/?/init.lua" 24 ) packages 25 ); 26 luacpath = join (builtins.map (f: "${f}/lib/lua/${lua.luaversion}/?.so") packages); 27 28 in 29 writeScriptBin "fennelrepl" '' 30 #!${lua}/bin/lua 31 package.path = ${lib.strings.escapeShellArg luapath} .. ";" .. package.path 32 package.cpath = ${lib.strings.escapeShellArg luacpath} .. ";" .. (package.cpath or "") 33 local fennel = require "fennel" 34 local specials = require("fennel.specials") 35 table.insert(package.loaders or package.searchers,1, fennel.searcher) 36 fennel['macro-path'] = "${anoia.dev}/share/lua/${lua.luaversion}/?.fnl;" .. fennel['macro-path'] 37 38 local function eval_as_test(f) 39 local g = (specials["make-compiler-env"]())._G 40 g["RUNNING_TESTS"] = true 41 return fennel.dofile(f, {correlate = true, compilerEnv = g}) 42 end 43 44 local more_fennel = os.getenv("FENNEL_PATH") 45 if more_fennel then 46 fennel.path = more_fennel .. ";" .. fennel.path 47 end 48 if #arg > 0 then 49 if arg[1] == '--test' then 50 eval_as_test(arg[2]) 51 else 52 script = table.remove(arg, 1) 53 fennel.dofile(script, {correlate = true}, arg) 54 end 55 else 56 fennel.repl() 57 end 58 ''