default.nix (3777B)
1 { 2 callPackage 3 , lib 4 }: 5 let 6 typeChecked = caller: type: value: 7 let 8 inherit (lib) types mergeDefinitions; 9 defs = [{ file = caller; inherit value; }]; 10 type' = types.submodule { options = type; }; 11 in (mergeDefinitions [] type' defs).mergedValue; 12 in { 13 pseudofile = callPackage ./pseudofile {}; 14 liminix = { 15 services = callPackage ./liminix-tools/services {}; 16 networking = callPackage ./liminix-tools/networking {}; 17 builders = { 18 squashfs = callPackage ./liminix-tools/builders/squashfs.nix {}; 19 dtb = callPackage ./kernel/dtb.nix {}; 20 uimage = callPackage ./kernel/uimage.nix {}; 21 kernel = callPackage ./kernel {}; 22 }; 23 callService = path : parameters : 24 let pkg = callPackage path {}; 25 checkTypes = t : p : typeChecked (builtins.toString path) t p; 26 in { 27 inherit parameters; 28 build = { dependencies ? [], ... } @ args : 29 let 30 s = pkg (checkTypes parameters 31 (builtins.removeAttrs args ["dependencies"])); 32 in s.overrideAttrs (o: { 33 dependencies = (builtins.map (d: d.name) dependencies) ++ o.dependencies; 34 buildInputs = dependencies ++ o.buildInputs; 35 }); 36 }; 37 lib = { 38 types = 39 let inherit (lib) types isDerivation; 40 in rec { 41 service = types.package // { 42 name = "service"; 43 description = "s6-rc service"; 44 check = x: isDerivation x && x ? serviceType; 45 }; 46 interface = service; 47 serviceDefn = types.attrs // { 48 name = "service-defn"; 49 description = "parametrisable s6-rc service definition"; 50 check = x: lib.isAttrs x && x ? parameters && x ? build; 51 }; 52 }; 53 inherit typeChecked; 54 }; 55 }; 56 writeFennelScript = callPackage ./write-fennel-script {}; 57 writeFennel = callPackage ./write-fennel {}; 58 writeAshScript = callPackage ./write-ash-script {}; 59 systemconfig = callPackage ./systemconfig {}; 60 s6-init-bin = callPackage ./s6-init-bin {}; 61 s6-rc-database = callPackage ./s6-rc-database {}; 62 run-liminix-vm = callPackage ./run-liminix-vm {}; 63 ppp = callPackage ./ppp {}; 64 pppoe = callPackage ./pppoe {}; 65 66 kernel-backport = callPackage ./kernel-backport {}; 67 mac80211 = callPackage ./mac80211 {}; 68 netlink-lua = callPackage ./netlink-lua {}; 69 linotify = callPackage ./linotify {}; 70 ifwait = callPackage ./ifwait {}; 71 72 gen_init_cpio = callPackage ./gen_init_cpio {}; 73 74 serviceFns = callPackage ./service-fns {}; 75 76 # these are packages for the build system not the host/target 77 78 tufted = callPackage ./tufted {}; 79 routeros = callPackage ./routeros {}; 80 go-l2tp = callPackage ./go-l2tp {}; 81 82 # we need to build real lzma instead of using xz, because the lzma 83 # decoder in u-boot doesn't understand streaming lzma archives 84 # ("Stream with EOS marker is not supported") and xz can't create 85 # non-streaming ones. See 86 # https://sourceforge.net/p/squashfs/mailman/message/26599379/ 87 lzma = callPackage ./lzma {}; 88 89 preinit = callPackage ./preinit {}; 90 swconfig = callPackage ./swconfig {}; 91 odhcp6c = callPackage ./odhcp6c {}; 92 93 openwrt = callPackage ./openwrt {}; 94 95 initramfs-peek = callPackage ./initramfs-peek {}; 96 min-collect-garbage = callPackage ./min-collect-garbage {}; 97 min-copy-closure = callPackage ./min-copy-closure {}; 98 hi = callPackage ./hi {}; 99 firewallgen = callPackage ./firewallgen {}; 100 kernel-modules = callPackage ./kernel-modules {}; 101 odhcp-script = callPackage ./odhcp-script {}; 102 fennel = callPackage ./fennel {}; 103 fennelrepl = callPackage ./fennelrepl {}; 104 anoia = callPackage ./anoia {}; 105 106 levitate = callPackage ./levitate {}; 107 108 libubootenv = callPackage ./libubootenv {}; 109 }