liminix

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

default.nix (4110B)


      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   liminix = {
     14     builders =  {
     15       squashfs = callPackage ./liminix-tools/builders/squashfs.nix {};
     16       dtb = callPackage ./kernel/dtb.nix {};
     17       uimage = callPackage ./kernel/uimage.nix {};
     18       kernel = callPackage ./kernel {};
     19     };
     20     callService = path : parameters :
     21       let pkg = callPackage path {};
     22           checkTypes = t : p : typeChecked (builtins.toString path) t p;
     23       in {
     24         inherit parameters;
     25         build = { dependencies ? [], ... } @ args :
     26           let
     27             s = pkg (checkTypes parameters
     28               (builtins.removeAttrs args ["dependencies"]));
     29           in s.overrideAttrs (o: {
     30             dependencies = (builtins.map (d: d.name) dependencies) ++ o.dependencies;
     31             buildInputs = dependencies ++ o.buildInputs;
     32           });
     33       };
     34     lib = {
     35       types =
     36         let inherit (lib) types isDerivation;
     37         in  rec {
     38           service = types.package // {
     39             name = "service";
     40             description = "s6-rc service";
     41             check = x: isDerivation x && x ? serviceType;
     42           };
     43           interface = service;
     44           serviceDefn = types.attrs // {
     45             name = "service-defn";
     46             description = "parametrisable s6-rc service definition";
     47             check = x: lib.isAttrs x && x ? parameters && x ? build;
     48           };
     49         };
     50       inherit typeChecked;
     51     };
     52     networking =  callPackage ./liminix-tools/networking {};
     53     services = callPackage ./liminix-tools/services {};
     54   };
     55 
     56   # please keep the rest of this list alphabetised :-)
     57 
     58   anoia = callPackage ./anoia {};
     59   fennel = callPackage ./fennel {};
     60   fennelrepl = callPackage ./fennelrepl {};
     61   firewallgen = callPackage ./firewallgen {};
     62   firmware-utils = callPackage ./firmware-utils {};
     63   gen_init_cpio = callPackage ./gen_init_cpio {};
     64   go-l2tp = callPackage ./go-l2tp {};
     65   hi = callPackage ./hi {};
     66   ifwait = callPackage ./ifwait {};
     67   initramfs-peek = callPackage ./initramfs-peek {};
     68   kernel-backport = callPackage ./kernel-backport {};
     69   kmodloader = callPackage ./kmodloader {};
     70   levitate = callPackage ./levitate {};
     71   libubootenv = callPackage ./libubootenv {};
     72   linotify = callPackage ./linotify {};
     73 
     74   # we need to build real lzma instead of using xz, because the lzma
     75   # decoder in u-boot doesn't understand streaming lzma archives
     76   # ("Stream with EOS marker is not supported") and xz can't create
     77   # non-streaming ones.  See
     78   # https://sourceforge.net/p/squashfs/mailman/message/26599379/
     79   lzma = callPackage ./lzma {};
     80 
     81   mac80211 = callPackage ./mac80211 {};
     82   min-collect-garbage = callPackage ./min-collect-garbage {};
     83   min-copy-closure = callPackage ./min-copy-closure {};
     84   netlink-lua = callPackage ./netlink-lua {};
     85   odhcp-script = callPackage ./odhcp-script {};
     86   odhcp6c = callPackage ./odhcp6c {};
     87   openwrt = callPackage ./openwrt {};
     88   ppp = callPackage ./ppp {};
     89   pppoe = callPackage ./pppoe {};
     90   preinit = callPackage ./preinit {};
     91   pseudofile = callPackage ./pseudofile {};
     92   routeros = callPackage ./routeros {};
     93   run-liminix-vm = callPackage ./run-liminix-vm {};
     94   s6-init-bin =  callPackage ./s6-init-bin {};
     95   s6-rc-database = callPackage ./s6-rc-database {};
     96 
     97   # schnapps is written by Turris and provides a high-level interface
     98   # to btrfs snapshots. It may be useful on the Turris Omnia to
     99   # install Liminix while retaining the ability to rollback to the
    100   # vendor OS, or even to derisk Liminix updates on that device
    101   schnapps = callPackage ./schnapps {};
    102 
    103   serviceFns = callPackage ./service-fns {};
    104   swconfig = callPackage ./swconfig {};
    105   systemconfig = callPackage ./systemconfig {};
    106   tufted = callPackage ./tufted {};
    107   writeAshScript = callPackage ./write-ash-script {};
    108   writeFennel = callPackage ./write-fennel {};
    109   writeFennelScript = callPackage ./write-fennel-script {};
    110 }