Compare commits

...

3 Commits

9 changed files with 59 additions and 35 deletions

View File

@ -80,6 +80,9 @@
inherit (pkgs.pseudofile) dir symlink;
inherit (pkgs.liminix.networking) interface;
in {
programs.busybox.options = {
FEATURE_DD_IBS_OBS = "y"; # ath10k_cal_data needs skip_bytes,fullblock
};
hardware = {
defaultOutput = "tftpboot";
loadAddress = "0x80060000";

View File

@ -1,4 +1,5 @@
(os.chdir (os.getenv "SERVICE_STATE"))
(fn write-value [name value]
(with-open [fout (io.open name :w)]

View File

@ -21,6 +21,7 @@ let
dropbear
ifwait
writeText
writeFennelScript
serviceFns;
in rec {
boot = {
@ -235,18 +236,13 @@ in rec {
services.dhcp6 =
let
name = "dhcp6c.wan";
luafile = pkgs.runCommand "udhcpc-script" {} ''
${pkgs.luaSmall.pkgs.fennel}/bin/fennel --compile ${./udhcp6-script.fnl} > $out
'';
script = pkgs.writeAshScript "dhcp6-notify" {} ''
. ${serviceFns}
(in_outputs ${name}; ${pkgs.luaSmall}/bin/lua ${luafile} "$@")
'';
luafile = writeFennelScript "odhcpc-script" [] ./odhcp6-script.fnl;
in longrun {
inherit name;
notification-fd = 10;
run = ''
${pkgs.odhcp6c}/bin/odhcp6c -s ${script} -e -v -p /run/${name}.pid -P 48 $(output ${services.wan} ifname)
export SERVICE_STATE=/run/service-state/${name}
${pkgs.odhcp6c}/bin/odhcp6c -s ${luafile} -e -v -p /run/${name}.pid -P 48 $(output ${services.wan} ifname)
)
'';
dependencies = [ services.wan ];

View File

@ -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 {};

View File

@ -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
''

View 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
''

View File

@ -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
View File

@ -0,0 +1 @@
(print "hello")

21
tests/fennel/test.nix Normal file
View 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
''