default.nix (5582B)
1 { callPackage, lib }: 2 let 3 typeChecked = 4 caller: type: value: 5 let 6 inherit (lib) types mergeDefinitions; 7 defs = [ 8 { 9 file = caller; 10 inherit value; 11 } 12 ]; 13 type' = types.submodule { options = type; }; 14 in 15 (mergeDefinitions [ ] type' defs).mergedValue; 16 in 17 { 18 liminix = { 19 builders = { 20 squashfs = callPackage ./liminix-tools/builders/squashfs.nix { }; 21 dtb = callPackage ./kernel/dtb.nix { }; 22 uimage = callPackage ./kernel/uimage.nix { }; 23 kernel = callPackage ./kernel { }; 24 }; 25 outputRef = 26 service: path: 27 let 28 h = { inherit service path; }; 29 in 30 x: h.${x}; 31 callService = 32 path: parameters: 33 let 34 pkg = callPackage path { }; 35 checkTypes = t: p: typeChecked (builtins.toString path) t p; 36 in 37 { 38 inherit parameters; 39 build = 40 { 41 dependencies ? [ ], 42 ... 43 }@args: 44 let 45 s = pkg (checkTypes parameters (builtins.removeAttrs args [ "dependencies" ])); 46 in 47 s.overrideAttrs (o: { 48 dependencies = dependencies ++ o.dependencies; 49 buildInputs = dependencies ++ o.buildInputs; 50 }); 51 }; 52 lib = { 53 types = 54 let 55 inherit (lib) mkOption types isDerivation; 56 in 57 rec { 58 service = types.package // { 59 name = "service"; 60 description = "s6-rc service"; 61 check = x: isDerivation x && x ? serviceType; 62 }; 63 interface = service; 64 serviceDefn = types.attrs // { 65 name = "service-defn"; 66 description = "parametrisable s6-rc service definition"; 67 check = x: lib.isAttrs x && x ? parameters && x ? build; 68 }; 69 replacable = 70 t: 71 types.either t 72 # function might return a service or a path 73 (types.functionTo types.anything); 74 }; 75 inherit typeChecked; 76 }; 77 networking = callPackage ./liminix-tools/networking { }; 78 services = callPackage ./liminix-tools/services { }; 79 }; 80 81 # please keep the rest of this list alphabetised :-) 82 83 anoia = callPackage ./anoia { }; 84 certifix-client = callPackage ./certifix-client { }; 85 devout = callPackage ./devout { }; 86 fetch-freebsd = callPackage ./fetch-freebsd { }; 87 fennel = callPackage ./fennel { }; 88 fennelrepl = callPackage ./fennelrepl { }; 89 firewallgen = callPackage ./firewallgen { }; 90 firmware-utils = callPackage ./firmware-utils { }; 91 gen_init_cpio = callPackage ./gen_init_cpio { }; 92 go-l2tp = callPackage ./go-l2tp { }; 93 hi = callPackage ./hi { }; 94 ifwait = callPackage ./ifwait { }; 95 initramfs-peek = callPackage ./initramfs-peek { }; 96 incz = callPackage ./incz { }; 97 json-to-fstree = callPackage ./json-to-fstree { }; 98 kernel-backport = callPackage ./kernel-backport { }; 99 kmodloader = callPackage ./kmodloader { }; 100 levitate = callPackage ./levitate { }; 101 libubootenv = callPackage ./libubootenv { }; 102 linotify = callPackage ./linotify { }; 103 logshipper = callPackage ./logshipper { }; 104 lualinux = callPackage ./lualinux { }; 105 106 # we need to build real lzma instead of using xz, because the lzma 107 # decoder in u-boot doesn't understand streaming lzma archives 108 # ("Stream with EOS marker is not supported") and xz can't create 109 # non-streaming ones. See 110 # https://sourceforge.net/p/squashfs/mailman/message/26599379/ 111 lzma = callPackage ./lzma { }; 112 113 mac80211 = callPackage ./mac80211 { }; 114 zyxel-bootconfig = callPackage ./zyxel-bootconfig { }; 115 min-collect-garbage = callPackage ./min-collect-garbage { }; 116 min-copy-closure = callPackage ./min-copy-closure { }; 117 minisock = callPackage ./minisock { }; 118 nellie = callPackage ./nellie { }; 119 netlink-lua = callPackage ./netlink-lua { }; 120 nginx-small = callPackage ./nginx-small { }; 121 odhcp-script = callPackage ./odhcp-script { }; 122 odhcp6c = callPackage ./odhcp6c { }; 123 openwrt = callPackage ./openwrt { }; 124 openwrt_24_10 = callPackage ./openwrt/2410.nix { }; 125 output-template = callPackage ./output-template { }; 126 ppp = callPackage ./ppp { }; 127 pppoe = callPackage ./pppoe { }; 128 preinit = callPackage ./preinit { }; 129 pseudofile = callPackage ./pseudofile { }; 130 routeros = callPackage ./routeros { }; 131 rxi-json = callPackage ./rxi-json { }; 132 run-liminix-vm = callPackage ./run-liminix-vm { }; 133 s6-init-bin = callPackage ./s6-init-bin { }; 134 s6-rc-database = callPackage ./s6-rc-database { }; 135 s6-rc-round-robin = callPackage ./s6-rc-round-robin { }; 136 s6-rc-up-tree = callPackage ./s6-rc-up-tree { }; 137 138 # schnapps is written by Turris and provides a high-level interface 139 # to btrfs snapshots. It may be useful on the Turris Omnia to 140 # install Liminix while retaining the ability to rollback to the 141 # vendor OS, or even to derisk Liminix updates on that device 142 schnapps = callPackage ./schnapps { }; 143 144 seedrng = callPackage ./seedrng { }; 145 serviceFns = callPackage ./service-fns { }; 146 swconfig = callPackage ./swconfig { }; 147 systemconfig = callPackage ./systemconfig { }; 148 tangc = callPackage ./tangc { }; 149 tufted = callPackage ./tufted { }; 150 uevent-watch = callPackage ./uevent-watch { }; 151 usb-modeswitch = callPackage ./usb-modeswitch { }; 152 watch-outputs = callPackage ./watch-outputs { }; 153 watch-ssh-keys = callPackage ./watch-ssh-keys { }; 154 writeAshScript = callPackage ./write-ash-script { }; 155 writeAshScriptBin = callPackage ./write-ash-script/bin.nix { }; 156 writeFennel = callPackage ./write-fennel { }; 157 }