Nichols joined Exeter City from local club Twyford Spartans as a youth at the under-11 age group.
He made his professional debut on 7 May 2011, coming on as a half-time substitute for Bertrand Cozic in a 2–1 victory against Sheffield Wednesday at Hillsborough in League One.
Nichols scored his first professional goal in a 2–1 victory against Chesterfield at St James Park on the eve of his 18th birthday.
In 2012, Nichols joined Conference South side Dorchester Town on loan. He made 12 appearances and scored nine goals for the Magpies.
In August 2012, Nichols joined Conference side Hereford United on a one-month loan deal. He made nine appearances and scored one goal for the Bulls.
In November 2012, Nichols joined Conference South side Bath City on a one-month loan. He made seven appearances and scored one goal for the City.
In March 2013, Nichols re-joined Conference South side Dorchester Town on loan. He made five appearances and scored one goal during his second spell at The Avenue Stadium.
In November 2013, Nichols began to reestablish his role in the first team. He went on to make 29 appearances and scored six goals during the 2013–14 season in League Two. He finished the season as joint top goalscorer with Scot Bennett.
Nichols cemented his place in the starting line-up during the 2014–15 season. He finished the season as the club's leading goalscorer with 15 goals in 39 appearances for the Grecians.
Nichols scored and was named the Man of the Match against Liverpool in the 3rd round of the FA Cup on 8 January 2016 during a 2–2 draw.
On 1 February 2016 Nichols joined League One side Peterborough United for an undisclosed fee, making his debut and scoring the winner in a 1–0 victory at Chesterfield F.C. In April he got injured for the rest of the season.
On 17 July 2017 Nichols joined Football League One side Bristol Rovers F.C. for an undisclosed fee, subject to him passing a medical.As of 16 July 2017