liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

default.nix (1165B)


      1 {
      2   runCommand
      3 , runtimeShell
      4 , fetchurl
      5 , lib
      6 , luaPackages
      7 , lua
      8 , writeScriptBin
      9 , linotify
     10 , anoia
     11 , netlink-lua
     12 , fennel
     13 }:
     14 let packages = [
     15       linotify
     16       anoia
     17       fennel
     18       netlink-lua
     19       lua.pkgs.luafilesystem
     20     ];
     21     join = ps: builtins.concatStringsSep ";" ps;
     22     luapath = join (builtins.map (f:
     23       "${f}/share/lua/${lua.luaversion}/?.lua;" +
     24       "${f}/share/lua/${lua.luaversion}/?/init.lua"
     25     ) packages);
     26     luacpath = join (builtins.map (f: "${f}/lib/lua/${lua.luaversion}/?.so") packages);
     27 
     28 in writeScriptBin "fennelrepl" ''
     29     #!${lua}/bin/lua
     30     package.path = ${lib.strings.escapeShellArg luapath} .. ";" .. package.path
     31     package.cpath = ${lib.strings.escapeShellArg luacpath} .. ";" .. (package.cpath or "")
     32     local fennel = require "fennel"
     33     table.insert(package.loaders or package.searchers,1, fennel.searcher)
     34 
     35     local more_fennel = os.getenv("FENNEL_PATH")
     36     if more_fennel then
     37         fennel.path = more_fennel .. ";" .. fennel.path
     38     end
     39     if #arg > 0 then
     40        script = table.remove(arg, 1)
     41        fennel.dofile(script, {correlate = true},  arg)
     42     else
     43         fennel.repl()
     44     end
     45   ''