diff --git a/default.nix b/default.nix index 120e955..2c1027b 100644 --- a/default.nix +++ b/default.nix @@ -58,6 +58,7 @@ in { borderVm.build.vm go-l2tp min-copy-closure + fennelrepl ]; }; } diff --git a/pkgs/default.nix b/pkgs/default.nix index 07b20c2..e04ae51 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -57,4 +57,5 @@ kernel-modules = callPackage ./kernel-modules {}; odhcp-script = callPackage ./odhcp-script {}; fennel = callPackage ./fennel {}; + fennelrepl = callPackage ./fennelrepl {}; } diff --git a/pkgs/fennelrepl/default.nix b/pkgs/fennelrepl/default.nix new file mode 100644 index 0000000..cbc8ac0 --- /dev/null +++ b/pkgs/fennelrepl/default.nix @@ -0,0 +1,34 @@ +{ + 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() + ''