liminix

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

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 }