Too little memory in Android NAND ROMs. Cannot install apps! (I was about to ask it here, but since I found the answer I'll share it too)

After installing Android on NAND on my HD2, I found that the available system memory is too little for everyday use. It's around 180MB and after a few applications I need to move everything (manually) to SD card.

I would like to have more space for system, especially if I have a large (say, 8GB) SD card.
The answer is data2sd
What does it do?
It basically tells Android to use the ext2 partition (once available) on the SD card as internal storage, together with HD2's internal memory. This way you can get up to 4GBs.
How to install?
As specified in the forum, you can grab the recovery zip (check topic if link goes down) and install it in recovery. It's not that straightforward. If that's your first time, I suggest to:

Make a backup of the SD card on PC, laptop, tablet or cloud, because it's going to be wiped
Insert the card in HD2, boot in recovery (keep HOME down during HTC logo). Some ROMs allow you to reboot in recovery, some apps allow you to with one click: choose your favourite option
From Clockwork recovery, choose the option to partition SD card (Advanced -&gt; Partition SD Card), and choose your partition size. With card &gt;= 8GB, I recomment 4096MB
Once finished, power off, remove the card and copy the recovery zip you downloaded on the card. Also restore your previous backup
Insert the card, boot Recovery again and choose the option to install a ZIP from SD card, then choose that file and confirm
Reboot Android. You're done!!

How does it work?
When you partition the SD card, Android creates a swap partition (that works like in Linux, don't forget it's just plain Linux kernel) and an ext2 partition of the size you just chose in the end of the card. The first part of the card is partitioned with a FAT32 partition for easy interoperability, because Windows and other OSes only mount the first partition in a removable drive, if they can mount it.
Data2sd is basically an init script (running on system boot) that mounts this ext2 partition as the /data directory of the system.
Credit to user Anurag pandey@xda-developers