Here's a good quote:
Essentially, the GPL says that by receiving a GPL software package, you agree that you have full rights to the software and that you can redistribute the code as an enhanced or modified package so long as all the source code is released, modifications are noted and attributed and the copyright and attribution for the original code is left in place.
A common misunderstanding of GPL is that people can’t get paid for it. This is actually incorrect. The physical act of transferring data is a chargeable action. So, in essence, a software manufacturer can bundle GPL software and charge a “sales fee” that covers the transmission and transfer of the source code. Because GPL requires that the source be distributed with the software ....
In short the answer is yes if you do it correctly, but no you cannot keep the source code private.
Matt, himself has "spoken" on this in this podcast interview:
(About 11 minutes in)