liminix

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

default.nix (6055B)


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