liminix/pkgs/default.nix

121 lines
4.4 KiB
Nix
Raw Permalink Normal View History

2023-03-03 23:20:59 +01:00
{
callPackage
2023-07-14 21:22:29 +02:00
, lib
2023-03-03 23:20:59 +01:00
}:
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 {
2023-03-03 23:20:59 +01:00
liminix = {
builders = {
squashfs = callPackage ./liminix-tools/builders/squashfs.nix {};
jffs2 = callPackage ./liminix-tools/builders/jffs2.nix {};
dtb = callPackage ./kernel/dtb.nix {};
uimage = callPackage ./kernel/uimage.nix {};
2023-03-03 23:20:59 +01:00
kernel = callPackage ./kernel {};
};
callService = path : parameters :
let pkg = callPackage path {};
2023-08-16 20:44:00 +02:00
checkTypes = t : p : typeChecked (builtins.toString path) t p;
in {
inherit parameters;
build = { dependencies ? [], ... } @ args :
let
s = pkg (checkTypes parameters
(builtins.removeAttrs args ["dependencies"]));
in s.overrideAttrs (o: {
dependencies = (builtins.map (d: d.name) dependencies) ++ o.dependencies;
buildInputs = dependencies ++ o.buildInputs;
});
};
2023-07-14 21:22:29 +02:00
lib = {
types =
let inherit (lib) types isDerivation;
in rec {
service = types.package // {
2023-07-14 21:22:29 +02:00
name = "service";
description = "s6-rc service";
check = x: isDerivation x && x ? serviceType;
2023-07-14 21:22:29 +02:00
};
interface = service;
serviceDefn = types.attrs // {
name = "service-defn";
description = "parametrisable s6-rc service definition";
check = x: lib.isAttrs x && x ? parameters && x ? build;
};
};
inherit typeChecked;
2023-07-14 21:22:29 +02:00
};
2024-01-04 11:15:23 +01:00
networking = callPackage ./liminix-tools/networking {};
services = callPackage ./liminix-tools/services {};
2023-03-03 23:20:59 +01:00
};
2024-01-04 11:15:23 +01:00
# please keep the rest of this list alphabetised :-)
2023-03-03 23:20:59 +01:00
2024-01-04 11:15:23 +01:00
anoia = callPackage ./anoia {};
2024-04-20 18:45:40 +02:00
devout = callPackage ./devout {};
2024-01-04 11:15:23 +01:00
fennel = callPackage ./fennel {};
fennelrepl = callPackage ./fennelrepl {};
firewallgen = callPackage ./firewallgen {};
firmware-utils = callPackage ./firmware-utils {};
gen_init_cpio = callPackage ./gen_init_cpio {};
2023-03-03 23:20:59 +01:00
go-l2tp = callPackage ./go-l2tp {};
2024-01-04 11:15:23 +01:00
hi = callPackage ./hi {};
ifwait = callPackage ./ifwait {};
initramfs-peek = callPackage ./initramfs-peek {};
kernel-backport = callPackage ./kernel-backport {};
kmodloader = callPackage ./kmodloader {};
2024-01-04 11:15:23 +01:00
levitate = callPackage ./levitate {};
libubootenv = callPackage ./libubootenv {};
linotify = callPackage ./linotify {};
2024-04-23 23:41:38 +02:00
lualinux = callPackage ./lualinux {};
2023-03-03 23:20:59 +01:00
# 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 {};
2024-01-04 11:15:23 +01:00
mac80211 = callPackage ./mac80211 {};
zyxel-bootconfig = callPackage ./zyxel-bootconfig {};
min-collect-garbage = callPackage ./min-collect-garbage {};
min-copy-closure = callPackage ./min-copy-closure {};
minisock = callPackage ./minisock {};
2024-04-06 13:33:22 +02:00
nellie = callPackage ./nellie {};
2024-01-04 11:15:23 +01:00
netlink-lua = callPackage ./netlink-lua {};
2023-06-30 21:02:03 +02:00
odhcp-script = callPackage ./odhcp-script {};
2024-01-04 11:15:23 +01:00
odhcp6c = callPackage ./odhcp6c {};
openwrt = callPackage ./openwrt {};
ppp = callPackage ./ppp {};
pppoe = callPackage ./pppoe {};
preinit = callPackage ./preinit {};
pseudofile = callPackage ./pseudofile {};
routeros = callPackage ./routeros {};
run-liminix-vm = callPackage ./run-liminix-vm {};
s6-init-bin = callPackage ./s6-init-bin {};
s6-rc-database = callPackage ./s6-rc-database {};
# schnapps is written by Turris and provides a high-level interface
# to btrfs snapshots. It may be useful on the Turris Omnia to
# install Liminix while retaining the ability to rollback to the
# vendor OS, or even to derisk Liminix updates on that device
schnapps = callPackage ./schnapps {};
2024-01-04 11:15:23 +01:00
serviceFns = callPackage ./service-fns {};
swconfig = callPackage ./swconfig {};
systemconfig = callPackage ./systemconfig {};
tufted = callPackage ./tufted {};
libubox = callPackage ./libubox {};
ubus = callPackage ./ubus {};
uevent-watch = callPackage ./uevent-watch {};
2024-05-14 13:56:58 +02:00
usb-modeswitch = callPackage ./usb-modeswitch {};
2024-01-04 11:15:23 +01:00
writeAshScript = callPackage ./write-ash-script {};
writeFennel = callPackage ./write-fennel {};
writeFennelScript = callPackage ./write-fennel-script {};
2023-03-03 23:20:59 +01:00
}