2
0
Files
liminix/pkgs/default.nix
T

174 lines
5.9 KiB
Nix
Raw Normal View History

2026-05-02 23:19:34 -07:00
{ callPackage, lib, nixpkgs }:
let
2025-02-10 21:55:08 +00:00
typeChecked =
caller: type: value:
let
inherit (lib) types mergeDefinitions;
2025-02-10 21:55:08 +00:00
defs = [
{
file = caller;
inherit value;
}
];
type' = types.submodule { options = type; };
2025-02-10 21:55:08 +00:00
in
(mergeDefinitions [ ] type' defs).mergedValue;
in
{
2023-03-03 22:20:59 +00:00
liminix = {
2024-06-30 16:58:29 +01:00
builders = {
2026-05-02 23:19:34 -07:00
squashfs = callPackage ./liminix-tools/builders/squashfs.nix {
inherit nixpkgs;
};
2024-06-30 16:58:29 +01:00
dtb = callPackage ./kernel/dtb.nix { };
uimage = callPackage ./kernel/uimage.nix { };
kernel = callPackage ./kernel { };
2023-03-03 22:20:59 +00:00
};
writeSysctls =
let
inherit (lib) concatStringsSep collect mapAttrsRecursive;
in
s:
concatStringsSep "\n" (
collect (x: !builtins.isAttrs x) (
mapAttrsRecursive (
p: v: "echo ${builtins.toJSON (builtins.toString v)} > ${concatStringsSep "/" p}"
) s
)
);
2025-02-10 21:55:08 +00:00
outputRef =
service: path:
let
h = { inherit service path; };
in
x: h.${x};
callService =
path: parameters:
let
pkg = callPackage path { };
checkTypes = t: p: typeChecked (builtins.toString path) t p;
in
{
inherit parameters;
2025-02-10 21:55:08 +00:00
build =
{
dependencies ? [ ],
...
}@args:
let
2025-02-10 21:55:08 +00:00
s = pkg (checkTypes parameters (builtins.removeAttrs args [ "dependencies" ]));
in
s.overrideAttrs (o: {
dependencies = dependencies ++ o.dependencies;
buildInputs = dependencies ++ o.buildInputs;
});
};
2023-07-14 20:22:29 +01:00
lib = {
types =
2025-02-10 21:55:08 +00:00
let
2025-11-11 21:49:45 +00:00
inherit (lib) types isDerivation;
2025-02-10 21:55:08 +00:00
in
rec {
service = types.package // {
2023-07-14 20:22:29 +01:00
name = "service";
description = "s6-rc service";
check = x: isDerivation x && x ? serviceType;
2023-07-14 20:22:29 +01:00
};
interface = service;
serviceDefn = types.attrs // {
name = "service-defn";
description = "parametrisable s6-rc service definition";
check = x: lib.isAttrs x && x ? parameters && x ? build;
};
2025-02-10 21:55:08 +00:00
replacable =
t:
types.either t
# function might return a service or a path
(types.functionTo types.anything);
};
inherit typeChecked;
2023-07-14 20:22:29 +01:00
};
2024-06-30 16:58:29 +01:00
networking = callPackage ./liminix-tools/networking { };
services = callPackage ./liminix-tools/services { };
2023-03-03 22:20:59 +00:00
};
2024-01-04 10:15:23 +00:00
# please keep the rest of this list alphabetised :-)
2023-03-03 22:20:59 +00:00
2024-06-30 16:58:29 +01:00
anoia = callPackage ./anoia { };
certifix-client = callPackage ./certifix-client { };
2024-06-30 16:58:29 +01:00
devout = callPackage ./devout { };
fetch-freebsd = callPackage ./fetch-freebsd { };
2024-06-30 16:58:29 +01:00
fennel = callPackage ./fennel { };
2025-11-11 21:49:45 +00:00
fennelc = callPackage ./fennelc { };
2024-06-30 16:58:29 +01:00
fennelrepl = callPackage ./fennelrepl { };
firewallgen = callPackage ./firewallgen { };
firmware-utils = callPackage ./firmware-utils { };
gen_init_cpio = callPackage ./gen_init_cpio { };
go-l2tp = callPackage ./go-l2tp { };
hi = callPackage ./hi { };
ifwait = callPackage ./ifwait { };
initramfs-peek = callPackage ./initramfs-peek { };
2025-10-05 15:03:08 +01:00
logshippers = callPackage ./logshippers { };
2024-08-28 19:12:00 +01:00
json-to-fstree = callPackage ./json-to-fstree { };
2024-06-30 16:58:29 +01:00
kernel-backport = callPackage ./kernel-backport { };
kmodloader = callPackage ./kmodloader { };
levitate = callPackage ./levitate { };
libubootenv = callPackage ./libubootenv { };
linotify = callPackage ./linotify { };
2025-10-05 15:13:07 +01:00
logtap = callPackage ./logtap { };
2024-06-30 16:58:29 +01:00
lualinux = callPackage ./lualinux { };
2023-03-03 22:20:59 +00: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/
2024-06-30 16:58:29 +01:00
lzma = callPackage ./lzma { };
2023-03-03 22:20:59 +00:00
2024-06-30 16:58:29 +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 { };
nellie = callPackage ./nellie { };
netlink-lua = callPackage ./netlink-lua { };
nginx-small = callPackage ./nginx-small { };
2024-06-30 16:58:29 +01:00
odhcp-script = callPackage ./odhcp-script { };
odhcp6c = callPackage ./odhcp6c { };
openwrt = callPackage ./openwrt { };
2025-01-03 23:52:08 +00:00
openwrt_24_10 = callPackage ./openwrt/2410.nix { };
2026-03-28 21:15:51 +00:00
openwrt_25_12 = callPackage ./openwrt/2512.nix { };
output-template = callPackage ./output-template { };
2024-06-30 16:58:29 +01:00
ppp = callPackage ./ppp { };
pppoe = callPackage ./pppoe { };
preinit = callPackage ./preinit { };
pseudofile = callPackage ./pseudofile { };
routeros = callPackage ./routeros { };
2024-08-08 15:05:26 +01:00
rxi-json = callPackage ./rxi-json { };
2024-06-30 16:58:29 +01:00
run-liminix-vm = callPackage ./run-liminix-vm { };
s6-init-bin = callPackage ./s6-init-bin { };
s6-rc-database = callPackage ./s6-rc-database { };
2024-07-08 21:53:51 +01:00
s6-rc-round-robin = callPackage ./s6-rc-round-robin { };
2024-06-30 16:58:29 +01:00
s6-rc-up-tree = callPackage ./s6-rc-up-tree { };
2024-01-05 00:07:01 +00:00
# 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
2024-06-30 16:58:29 +01:00
schnapps = callPackage ./schnapps { };
2024-01-05 00:07:01 +00:00
2025-02-10 21:55:08 +00:00
seedrng = callPackage ./seedrng { };
2024-06-30 16:58:29 +01:00
serviceFns = callPackage ./service-fns { };
swconfig = callPackage ./swconfig { };
systemconfig = callPackage ./systemconfig { };
2024-08-28 01:37:44 +01:00
tangc = callPackage ./tangc { };
2024-06-30 16:58:29 +01:00
tufted = callPackage ./tufted { };
uevent-watch = callPackage ./uevent-watch { };
usb-modeswitch = callPackage ./usb-modeswitch { };
watch-outputs = callPackage ./watch-outputs { };
watch-ssh-keys = callPackage ./watch-ssh-keys { };
2024-06-30 16:58:29 +01:00
writeAshScript = callPackage ./write-ash-script { };
writeAshScriptBin = callPackage ./write-ash-script/bin.nix { };
writeFennel = callPackage ./write-fennel { };
2023-03-03 22:20:59 +00:00
}