anchor.diff:    cfg = config.virtualisation;
   
     qemuGraphics = lib.optionalString (!cfg.graphics) "-nographic";
  -  kernelConsole = if cfg.graphics then "" else "console=${qemuSerialDevice}";
  +
  +  # enable both serial console and tty0. select preferred console (last one) based on cfg.graphics
  +  kernelConsoles = let
  +    consoles = [ "console=${qemuSerialDevice}" "console=tty0" ];
  +    in lib.concatStringsSep " " (if cfg.graphics then consoles else reverseList consoles);
   
     # XXX: This is very ugly and in the future we really should use attribute
     # sets to build ALL of the QEMU flags instead of this mixed mess of Nix
  
positive.code:             ${mkDiskIfaceDriveFlag "0" "file=$NIX_DISK_IMAGE,cache=writeback,werror=report"} \
              -kernel ${config.system.build.toplevel}/kernel \
              -initrd ${config.system.build.toplevel}/initrd \
              -append "$(cat ${config.system.build.toplevel}/kernel-params) init=${config.system.build.toplevel}/init regInfo=${regInfo}/registration ${kernelConsole} $QEMU_KERNEL_PARAMS" \
            ''} \
            $extraDisks \
            ${qemuGraphics} \
  
negative.code:         default = true;
          description =
            ''
              Whether to run QEMU with a graphics window, or in nographic mode.
              Serial console will be enabled on both settings, but this will
              change the preferred console.
              '';
        };
  
      virtualisation.cores =
  