Separate image and machine type choices in "Spawner options"?

I’m running JupyterHub on Kubernetes (based on the z2jh tutorial), and am currently using the profileList options in config.yaml to allow users to choose between different images and levels of computing resources (the latter by using taints and tolerations to ensure that users selecting e.g. a “High CPU” machine get assigned to a suitable node on the cluster.

I would like to offer my users three different types of machine (“Standard”, “High memory” and “High CPU”) and three different images, each customised for different applications. This works OK, but having 9 different image-machine-type combinations on the “Spawner options” page is a bit cluttered and awkward to navigate.

I was wondering if anyone has figured out a way to separate these two components i.e. show a screen listing the images available and then one listing the machine types, and then build the profile specification based on these choices? Two screens with three options each would be a cleaner way for users to select the environment they want to use, and it would also generalise better to more images or machine types in the future.

I guess this probably isn’t too difficult, but I’m not sure where to start in terms of customising the login part of my Hub. Can anyone point me in the right direction, please?

Thank you! :slightly_smiling_face: