forked from DGNum/liminix
add writeFennelScript function, make ifwait use it
This commit is contained in:
parent
fa7e682e87
commit
fdffdbb22a
6 changed files with 51 additions and 27 deletions
|
@ -11,6 +11,7 @@
|
|||
kernel = callPackage ./kernel {};
|
||||
};
|
||||
};
|
||||
writeFennelScript = callPackage ./write-fennel-script {};
|
||||
writeAshScript = callPackage ./write-ash-script {};
|
||||
systemconfig = callPackage ./systemconfig {};
|
||||
s6-init-bin = callPackage ./s6-init-bin {};
|
||||
|
|
|
@ -1,34 +1,13 @@
|
|||
{
|
||||
luaSmall
|
||||
, netlink-lua
|
||||
, stdenv
|
||||
, makeWrapper
|
||||
, writeFennelScript
|
||||
, runCommand
|
||||
}:
|
||||
let
|
||||
lua = luaSmall;
|
||||
netlink = netlink-lua.override {inherit lua;};
|
||||
fennel = lua.pkgs.fennel;
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "ifwait";
|
||||
version = "1";
|
||||
phases = [ "installPhase" ];
|
||||
|
||||
buildInputs = [ lua netlink ];
|
||||
nativeBuildInputs = [ makeWrapper fennel ];
|
||||
|
||||
LUA_CPATH = "${netlink}/lib/lua/${lua.luaversion}/\?.so"; # for nix-shell
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin $out/lib
|
||||
fennel --compile ${./ifwait.fnl} > $out/lib/${pname}.lua
|
||||
|
||||
makeWrapper ${lua}/bin/lua $out/bin/${pname} \
|
||||
--prefix LUA_CPATH ";" ${netlink}/lib/lua/${lua.luaversion}/\?.so \
|
||||
--add-flags $out/lib/${pname}.lua
|
||||
# makeWrapper adds a shebang for bash
|
||||
sed -i -e '1c#!/bin/sh' $out/bin/${pname}
|
||||
'';
|
||||
}
|
||||
|
||||
# to use fennel.view,
|
||||
# --prefix LUA_PATH ";" ${fennel}/share/lua/5.2/\?.lua \
|
||||
in runCommand "ifwait" {} ''
|
||||
mkdir -p $out/bin
|
||||
cp -p ${writeFennelScript "ifwait" [netlink] ./ifwait.fnl} $out/bin/ifwait
|
||||
''
|
||||
|
|
21
pkgs/write-fennel-script/default.nix
Normal file
21
pkgs/write-fennel-script/default.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
runCommand
|
||||
, luaSmall
|
||||
, runtimeShell
|
||||
, lib
|
||||
}:
|
||||
let lua = luaSmall;
|
||||
in name : packages : source :
|
||||
let
|
||||
luapath = builtins.map (f: "${f}/share/lua/${lua.luaversion}/?.lua;") packages;
|
||||
luacpath = builtins.map (f: "${f}/lib/lua/${lua.luaversion}/?.so;") packages;
|
||||
in runCommand name {} ''
|
||||
#!${runtimeShell}
|
||||
(
|
||||
echo "#!${lua}/bin/lua"
|
||||
echo "package.path = ${lib.strings.escapeShellArg luapath} .. package.path"
|
||||
echo "package.cpath = ${lib.strings.escapeShellArg luacpath} .. package.cpath"
|
||||
${lua.pkgs.fennel}/bin/fennel --compile ${source}
|
||||
) > $out
|
||||
chmod a+x $out
|
||||
''
|
|
@ -5,4 +5,5 @@
|
|||
pppoe = import ./pppoe/test.nix;
|
||||
jffs2 = import ./jffs2/test.nix;
|
||||
min-copy-closure = import ./min-copy-closure/test.nix;
|
||||
fennel = import ./fennel/test.nix;
|
||||
}
|
||||
|
|
1
tests/fennel/hello.fnl
Normal file
1
tests/fennel/hello.fnl
Normal file
|
@ -0,0 +1 @@
|
|||
(print "hello")
|
21
tests/fennel/test.nix
Normal file
21
tests/fennel/test.nix
Normal file
|
@ -0,0 +1,21 @@
|
|||
{
|
||||
liminix
|
||||
, nixpkgs
|
||||
}:
|
||||
let
|
||||
overlay = import "${liminix}/overlay.nix";
|
||||
pkgs = import <nixpkgs> { overlays = [overlay]; };
|
||||
script = pkgs.writeFennelScript "foo" [] ./hello.fnl;
|
||||
inherit (pkgs.luaSmall.pkgs) fifo;
|
||||
netlink = pkgs.netlink-lua.override { lua = pkgs.luaSmall; };
|
||||
script2 = pkgs.writeFennelScript "foo2" [fifo netlink] ./hello.fnl;
|
||||
in pkgs.runCommand "check" {
|
||||
} ''
|
||||
set -e
|
||||
# test that it works
|
||||
test $(${script}) = "hello"
|
||||
# test that lua path, cpath are set
|
||||
grep -q ${fifo}/share/lua/5.3 ${script2}
|
||||
grep -q ${netlink}/lib/lua/5.3 ${script2}
|
||||
date > $out
|
||||
''
|
Loading…
Reference in a new issue