Corta la calabaza en trozos no muy grandes y hornea a 200 ºC durante 45-50 minutos, hasta que esté tierna. Deja enfriar y machácala con un tenedor hasta que quede deshecha. Salpimienta.
En una sartén a fuego medio con aceite de oliva, saltea el ajo y los champiñones hasta que estos estén tiernos. Salpimienta y reserva.
En otra sartén (o en la misma), pocha a fuego medio en aceite de oliva la cebolla picada. Cuando esté tierna, añade las espinacas y deja que pierdan todo el agua. Salpimienta y reserva.
Pon a calentar un litro y medio de leche en un cazo a fuego medio. Mientras tanto disuelve la maicena en los 250 ml restantes de leche. Cuando la leche del cazo haya empezado a humear, vierte el vaso de la maicena y remueve con unas varillas hasta que espese, con mucho cuidado de que no se agarre al fondo del cazo. Aparta el cazo del fuego y añade la mitad (100 g ) del parmesano, la nuez moscada, la albahaca, sal y pimienta, y remueve para incorporarlo todo.
Cuece las láminas de pasta siguiendo las indicaciones del envase.
Precalienta el horno a 200 ºC, con calor arriba y abajo.
Vierte un par de cucharones de la bechamel en el fondo de una fuente apta para horno de unos 30-35 cm de largo. Dispón una capa de placas de pasta sobre ella.
A continuación dispón la mitad de la calabaza, un cucharón de bechamel y otra capa de pasta.
Distribuye por encima la mezcla de espinaca y cebolla, otro cucharón de bechamel y otra capa de pasta.
Ahora dispón la mitad de la mozzarella, una capa de champiñones, otro cucharón de bechamel y una nueva capa de pasta.
A continuación, añade lo que queda de calabaza, otro cucharón de bechamel y las últimas láminas de pasta.
Para terminar, corona con lo que queda de bechamel, el resto de la mozzarella y lo que queda de parmesano.
Hornea durante 30-35 minutos. Deja reposar 5-10 minutos antes de servir.