/** Convert a NixOS configuration to one for a minimal installer ISO WARNING: Running this installer will format the target disk! */ nixpkgs: machine: let installer = { config, pkgs, lib, ... }: let bootstrap = pkgs.writeShellApplication { name = "bootstrap"; runtimeInputs = with pkgs; [ nixos-install-tools ]; text = '' ${machine.config.system.build.diskoScript} nixos-install --no-root-password --no-channel-copy --system ${machine.config.system.build.toplevel} \ && poweroff ''; }; in { imports = [ "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix" ]; nixpkgs.hostPlatform = "x86_64-linux"; services.getty.autologinUser = lib.mkForce "root"; programs.bash.loginShellInit = '' ${nixpkgs.lib.getExe bootstrap} ''; isoImage = { compressImage = false; squashfsCompression = "lz4"; isoName = lib.mkForce "installer.iso"; ## ^^ FIXME: Use a more interesting name or keep the default name and ## use `isoImage.isoName` in the tests. }; }; in (nixpkgs.lib.nixosSystem { modules = [installer];}).config.system.build.isoImage