liminix

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

default.nix (2333B)


      1 {
      2   deviceName ? null,
      3   device ? (import ./devices/${deviceName}),
      4   liminix-config ? <liminix-config>,
      5   borderVmConf ? ./bordervm.conf.nix,
      6   imageType ? "primary",
      7 }:
      8 
      9 let
     10   overlay = import ./overlay.nix;
     11   pkgs = import <nixpkgs> (
     12     device.system
     13     // {
     14       overlays = [ overlay ];
     15       config = {
     16         allowUnsupportedSystem = true; # mipsel
     17         permittedInsecurePackages = [
     18           "python-2.7.18.6" # kernel backports needs python <3
     19           "python-2.7.18.7"
     20         ];
     21       };
     22     }
     23   );
     24 
     25   eval = pkgs.lib.evalModules {
     26     specialArgs = {
     27       modulesPath = builtins.toString ./modules;
     28     };
     29     modules = [
     30       {
     31         _module.args = {
     32           inherit pkgs;
     33           inherit (pkgs) lim;
     34         };
     35       }
     36       ./modules/hardware.nix
     37       ./modules/base.nix
     38       ./modules/busybox.nix
     39       ./modules/hostname.nix
     40       ./modules/kernel
     41       ./modules/logging.nix
     42       ./modules/klogd.nix
     43       device.module
     44       liminix-config
     45       ./modules/s6
     46       ./modules/users.nix
     47       ./modules/outputs.nix
     48       {
     49         boot.imageType = imageType;
     50       }
     51     ];
     52   };
     53   config = eval.config;
     54 
     55   borderVm =
     56     ((import <nixpkgs/nixos/lib/eval-config.nix>) {
     57       system = builtins.currentSystem;
     58       modules = [
     59         {
     60           nixpkgs.overlays = [
     61             (final: prev: {
     62               go-l2tp = final.callPackage ./pkgs/go-l2tp { };
     63               tufted = final.callPackage ./pkgs/tufted { };
     64             })
     65           ];
     66         }
     67         (import ./bordervm-configuration.nix)
     68         borderVmConf
     69       ];
     70     }).config.system;
     71 in
     72 {
     73   outputs = config.system.outputs // {
     74     default = config.system.outputs.${config.hardware.defaultOutput};
     75     optionsJson =
     76       let
     77         o = import ./doc/extract-options.nix {
     78           inherit pkgs eval;
     79           lib = pkgs.lib;
     80         };
     81       in
     82       pkgs.writeText "options.json" (builtins.toJSON o);
     83   };
     84 
     85   # this is just here as a convenience, so that we can get a
     86   # cross-compiling nix-shell for any package we're customizing
     87   inherit pkgs;
     88 
     89   buildEnv = pkgs.mkShell {
     90     packages = with pkgs.pkgsBuildBuild; [
     91       tufted
     92       routeros.routeros
     93       routeros.ros-exec-script
     94       run-liminix-vm
     95       borderVm.build.vm
     96       go-l2tp
     97       min-copy-closure
     98       fennelrepl
     99       lzma
    100       lua
    101     ];
    102   };
    103 }