{ sources ? import ./lon.nix , nixpkgs ? sources.nixpkgs , unstable ? nixpkgs , liminix ? ./. , ... }: let pkgs = (import nixpkgs { }); borderVmConf = ./bordervm.conf-example.nix; inherit (pkgs.lib.attrsets) genAttrs; devices = [ "qemu" "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; 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