I booted the laptop from a live USB and suspended it then resumed. The laptop resumed properly but the SSD didn't show up, so referring to the logs I found:
nvme nvme0: Device not ready; aborting reset, CSTS=0x3
nvme nvme0: Removing after probe failure status: -19
Which turned out to be a known issue with some NVMe drives having broken sleep support. The solution (Quoting from arch wiki):
As a workaround, add the kernel parameter iommu=soft
to use a software replacement for the hardware IOMMU. (For further details, see this documentation.) This has the potential to cause some slight processing overhead.
Edit: For those who don't know how to add a kernel boot parameter, refer here.
The short version of it is:
1- Type sudo nano /etc/default/grub
in your terminal
2- Find the line with GRUB_CMDLINE_LINUX_DEFAULT
3- Add the parameter, it should look something like this (may slightly differ if you have other kernel options):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iommu=soft"
4- Save the file by pressing ctrl+X then y+enter
5- type sudo update-grub
6- Reboot and you should be done.
Edit: Since at least kernel 5.19, this workaround is no longer working, the one that works is iommu=off
.