boot live usb
open gparted
create gpt label on nvme
copy root and home partitions from ssd to nvme
change the uuids of the new partitions to avoid conflicts with the old ones
adjust the fstab file on the nvme to use the new uuids
make room on ssd for boot partition and format to ext4
mount nvme root partition to /mnt
mount and copy the contents of /boot from nvme to new boot partition
mount efi partition to /mnt/boot/efi
get uuid of boot partition, add an entry to fstab on the nvme for it.
sudo mount /dev/nvme0n1p2 /mnt #nvme0n1p2 is the root partition
sudo mount /dev/sda2 /mnt/boot #sda2 is the boot partition
sudo mount /dev/sda1 /mnt/boot/efi #sda1 is the efi partition
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting
modprobe efivars # make sure this is loaded
sudo chroot /mnt
reinstall grub
apt-get install --reinstall grub-efi-amd64
make sure there's a entry for your ssd, I found this confusing to interpret. ymmv
efibootmgr -c --disk /dev/sda --part 1 --label Ubuntu
efibootmgr -v # verify a new record called Linux is there
cp /mnt/boot/efi/EFI/neon/* /mnt/boot/efi/EFI/ubuntu/
If everything went ok
for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
sudo umount /mnt/boot/efi #please do this. Corrupted efi partitions are not nice
sudo umount /mnt/boot
sudo umount /mnt
sudo reboot