The deal is five years and worth $70 million, the source said. Desmond is expected to play first base for the Rockies, a position he's never played in professional baseball.
The news of the deal was first reported by Fox Sports.
Desmond, 31, batted .285 with 22 homers and 86 RBIs this season for the Texas Rangers. He got an $8 million, one-year deal from Texas at the end of February after turning down a qualifying offer from Washington. He spent the first six years of his major league career as the Nationals' starting shortstop before converting to center field for Texas in 2016.
Desmond has demonstrated an ability to quickly adapt and succeed in a variety of situations.
"He has been able to succeed because of who he is," Rangers outfielders coach Jayce Tingler said. "He is a student of the game. He's got a lot of experience in the big leagues. So when he transferred from shortstop to left and now to center, he used all that experience.
Desmond's contract is the largest free-agent deal for a position player in Rockies history. The only free agent to land a bigger contract with the club was pitcher Mike Hampton, who signed a $121 million deal in 2000.
Desmond will receive annual salaries of $8 million, $22 million, $15 million, $15 million and $8 million, a source told ESPN's Jerry Crasnick. The deal includes a $2 million buyout on a $15 million club option for 2022.
The Florida native's best pro season came with the Nationals in 2012, when he achieved career highs in home runs (25), batting average (.292) and OPS (.845). He has been an All-Star once and won three Silver Slugger awards.
Because Desmond turned down the Rangers' $17.2 million qualifying offer last month, Texas receives an extra selection after the first round of June's amateur draft. The Rockies lose their top draft pick, the 11th selection overall.
The Associated Press contributed to this report.