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 }