I have a WinXP based laptop with pretty basic hardware configuration by today's standards. I am planning to upgrade to a WinXP based laptop with a lot better hardware.The problem: My current laptop has truck loads of software like cygwin, perl, ruby etc. Installing each software manually is going to be pretty cumbersome. Not to mention customizing the packages. Is there any software (freeware or commercial, both okay) that can migrate my current programming environment with minimum fuss? 
What is the easiest way to migrate your current programming environment to a new laptop?
development environment
A new computer means a great opportunity to verify that your work environment is reproducible. What if your current hard disk got trashed or stolen? During a move to clean you'll find out about the installation CDs that got lost or damaged, the software that has been deprecated, and other quirks in your setup.The new hard disk will likely have double or more capacity than the previous one, so I agree with the recommendation of doing a clean install, and copying the complete contents of the old disc to a directory in the new one.I also agree that is time to leave WinXP behind, at least as the main OS.To answer your question, the tools you need are gparted and VirtualBox. With gparted you can transfer an image of the old disk to the new one, and then transfer that image to a VirtualBox virtual disk. I was going to write the steps (I did it once), but I don't remember them exactly, and I have no notes (if I had them, they would be for a new system that boots to Linux). P.S. A new computer is a good opportunity to reserve a partition for Linux. Experimentation is a good enough excuse, but a more urgent one is that the tools for replication, redundancy, backup, translation, and transformation are readily available in Linux, and they are free. Why not a virtualized Linux? Because some of the tasks require more low level access to the hardware. My last computer upgrade was to Linux as base OS, and everything (WinXP included) works as I want it.P.P.S With the requested detailsWith Linux on the receiving side, the tools in gparted live (and other migration and recovry live CDs) will let you transfer an image of the old disk to the receiving end through the network. The time it takes doesn't matter, because it's unattended. It's the first thing I do when friends come to me with what has symptoms of an agonizing hard disk.The images created can be transferred to a partition that has the same or grater size, on any disk, or can be backed up to optical media.If you reserve a bootable partition for Linux on the new machine, then you can give it very little disk space, because it will be able to use the NTFS partitions to store large stuff, like disk images.gparted will handle transfers between partitions of different sizes.A virtualized WinXP sucks if you need access to special hardware (graphics, pen tablets, etc.), but works perfectly for programming if the base OS is Linux. That was my WinXP setup until recent versions of wine let me run everything I need (Delphi7 is one) without booting the virtual WinXP.The details that are not in my memory, are readily available on the Web. That's probably why I didn't keep notes.To be honest, switching to Ubuntu as the main OS took three months of weekends to verify that it could work, a couple of days to do the backups and the switch, and six more months until I came to rarely booting XP. My development tools are Java, Eclipse, Python and PyDev, Java, gfortran (Intel Fortran is available too), Web (HTML, CSS, JavaScript), Subversion, Mercurial, and Delphi7 for a legacy app. I ditched word processors in favor of structured plain-text, bu there's nothing that compares to MS Excel. For everything else, I've found several ready-to-try options over Linux, some of them the best.In the end, even if I had stuck with WinXP, my experience is that the process of setting up a new work computer from scratch is GOOD. It is provably false that you know where you're standing, or that you can quickly recover from the unforseen until you do it.