Two years, $18.5 million. This is probably a good deal for the Dodgers, but there are some mitigating factors. Garciaparra has still got it with the bat, but he's fragile, and if the Dodgers are going to continue having him play first base, the negatives (cost and injury risk) may outweigh the positives here. If he could still play third, it'd be a different story. I'm not sure whether he can or not, but the Dodgers have shown no interest in having him play there. If Garciaparra can play third, it would behoove the Dodgers to put him there, find a first baseman (like James Loney, who looks like he's ready), and move Wilson Betemit to the bench. In any case, this was probably a smart move by the Dodgers - it would be hard to get someone else with Nomar's stick nearly this cheaply on the free agent market. In the next two years, they'll have to find ways to work in Loney, a first baseman, and Andy LaRoche, another top prospect and a third baseman, but that's a good problem for a team in their position to have.
(Loney would be a great player for the Pirates to pursue this offseason, by the way. He's young, he's blocked, he has a non-zero chance of becoming a star, and Dodgers GM Ned Coletti has shown a willingness to trade high-upside youngsters like Joel Guzman for role players.)
UPDATE: Actually, Garciaparra may indeed be moving to third.