liminix

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

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 }