{ nixpkgs , unstable , liminix , ... }: let inherit (builtins) map; pkgs = (import nixpkgs {}); borderVmConf = ./bordervm.conf-example.nix; inherit (pkgs.lib.attrsets) genAttrs; devices = [ "gl-ar750" "gl-mt300a" "gl-mt300n-v2" "qemu" "qemu-aarch64" "qemu-armv7l" "tp-archer-ax23" "zyxel-nwa50ax" ]; vanilla = ./vanilla-configuration.nix; for-device = name: (import liminix { inherit nixpkgs borderVmConf; device = import (liminix + "/devices/${name}"); liminix-config = vanilla; }).outputs.default; tests = import ./tests/ci.nix; jobs = (genAttrs devices for-device) // tests // { buildEnv = (import liminix { inherit nixpkgs borderVmConf; device = import (liminix + "/devices/qemu"); liminix-config = vanilla; }).buildEnv; doc = let json = (import liminix { inherit nixpkgs borderVmConf; device = import (liminix + "/devices/qemu"); liminix-config = {...} : { imports = [ ./modules/all-modules.nix ]; }; }).outputs.optionsJson; installers = map (f: "system.outputs.${f}") [ "vmroot" "mtdimage" "ubimage" ]; inherit (pkgs.lib) concatStringsSep; in pkgs.stdenv.mkDerivation { name = "liminix-doc"; nativeBuildInputs = with pkgs; [ gnumake sphinx fennel luaPackages.lyaml ]; src = ./.; buildPhase = '' cat ${json} | fennel --correlate doc/parse-options.fnl > doc/modules-generated.rst cat ${json} | fennel --correlate doc/parse-options-outputs.fnl > doc/outputs-generated.rst cp ${(import ./doc/hardware.nix)} doc/hardware.rst make -C doc html ''; installPhase = '' mkdir -p $out/nix-support $out/share/doc/ cd doc cp *-generated.rst $out ln -s ${json} $out/options.json cp -a _build/html $out/share/doc/liminix echo "file source-dist \"$out/share/doc/liminix\"" \ > $out/nix-support/hydra-build-products ''; }; with-unstable = (import liminix { nixpkgs = unstable; inherit borderVmConf; device = import (liminix + "/devices/qemu"); liminix-config = vanilla; }).outputs.default; }; in jobs