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 }