liminix

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

default.nix (2447B)


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