forked from DGNum/liminix
fbb2c04132
This is in preparation for writing something that extracts them into documentation. user configurations now call config.system.service.foo.build { ...params } instead of config.system.service.foo the parameter type definitions themselves now move into the config stanza of the module referencing the service new helper function liminix.callService The only service moved so far is dnsmasq
94 lines
3.1 KiB
Nix
94 lines
3.1 KiB
Nix
{
|
|
callPackage
|
|
, lib
|
|
}:
|
|
let
|
|
typeChecked = caller: type: value:
|
|
let
|
|
inherit (lib) types mergeDefinitions;
|
|
defs = [{ file = caller; inherit value; }];
|
|
type' = types.submodule { options = type; };
|
|
in (mergeDefinitions [] type' defs).mergedValue;
|
|
in {
|
|
pseudofile = callPackage ./pseudofile {};
|
|
liminix = {
|
|
services = callPackage ./liminix-tools/services {};
|
|
networking = callPackage ./liminix-tools/networking {};
|
|
builders = {
|
|
squashfs = callPackage ./liminix-tools/builders/squashfs.nix {};
|
|
kernel = callPackage ./kernel {};
|
|
};
|
|
callService = path : parameters :
|
|
let pkg = callPackage path {};
|
|
checkTypes = t : p : typeChecked (builtins.tostring path) t p;
|
|
in {
|
|
inherit parameters;
|
|
build = args : pkg (checkTypes parameters args);
|
|
};
|
|
lib = {
|
|
types =
|
|
let inherit (lib) types isDerivation;
|
|
in {
|
|
service = types.package // {
|
|
name = "service";
|
|
description = "s6-rc service";
|
|
check = x: isDerivation x && x ? serviceType;
|
|
};
|
|
serviceDefn = types.attrs // {
|
|
name = "service-defn";
|
|
description = "parametrisable s6-rc service definition";
|
|
check = x: lib.isAttrs x && x ? parameters && x ? build;
|
|
};
|
|
};
|
|
inherit typeChecked;
|
|
};
|
|
};
|
|
writeFennelScript = callPackage ./write-fennel-script {};
|
|
writeAshScript = callPackage ./write-ash-script {};
|
|
systemconfig = callPackage ./systemconfig {};
|
|
s6-init-bin = callPackage ./s6-init-bin {};
|
|
s6-rc-database = callPackage ./s6-rc-database {};
|
|
mips-vm = callPackage ./mips-vm {};
|
|
ppp = callPackage ./ppp {};
|
|
pppoe = callPackage ./pppoe {};
|
|
|
|
kernel-backport = callPackage ./kernel-backport {};
|
|
mac80211 = callPackage ./mac80211 {};
|
|
netlink-lua = callPackage ./netlink-lua {};
|
|
linotify = callPackage ./linotify {};
|
|
ifwait = callPackage ./ifwait {};
|
|
|
|
gen_init_cpio = callPackage ./gen_init_cpio {};
|
|
|
|
serviceFns = callPackage ./service-fns {};
|
|
|
|
# these are packages for the build system not the host/target
|
|
|
|
tufted = callPackage ./tufted {};
|
|
routeros = callPackage ./routeros {};
|
|
go-l2tp = callPackage ./go-l2tp {};
|
|
|
|
# we need to build real lzma instead of using xz, because the lzma
|
|
# decoder in u-boot doesn't understand streaming lzma archives
|
|
# ("Stream with EOS marker is not supported") and xz can't create
|
|
# non-streaming ones. See
|
|
# https://sourceforge.net/p/squashfs/mailman/message/26599379/
|
|
lzma = callPackage ./lzma {};
|
|
|
|
preinit = callPackage ./preinit {};
|
|
swconfig = callPackage ./swconfig {};
|
|
odhcp6c = callPackage ./odhcp6c {};
|
|
|
|
openwrt = callPackage ./openwrt {};
|
|
|
|
initramfs-peek = callPackage ./initramfs-peek {};
|
|
min-collect-garbage = callPackage ./min-collect-garbage {};
|
|
min-copy-closure = callPackage ./min-copy-closure {};
|
|
hi = callPackage ./hi {};
|
|
firewallgen = callPackage ./firewallgen {};
|
|
kernel-modules = callPackage ./kernel-modules {};
|
|
odhcp-script = callPackage ./odhcp-script {};
|
|
fennel = callPackage ./fennel {};
|
|
fennelrepl = callPackage ./fennelrepl {};
|
|
anoia = callPackage ./anoia {};
|
|
}
|