Faits : A. Par jugement du 25 septembre 2019, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a reconnu A._ coupable de contravention, d'infraction simple et d'infraction grave à la LStup ainsi que d'infractions à la LCR. Il a révoqué le sursis octroyé le 6 mars 2013 par le Regionalgericht Bern-Mittelland, et l'a condamné à une peine privative de liberté d'ensemble de 40 mois, sous déduction de la détention subie avant jugement et de la détention subie dans des conditions illicites, ainsi qu'à une amende de 1'000 fr., la peine privative de liberté de substitution étant fixée à 20 jours. Par jugement du 27 janvier 2020, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel formé par A._ contre le jugement de première instance. B. Par arrêt du 15 mai 2020 (6B_291/2020), le Tribunal fédéral a partiellement admis le recours formé par A._ contre le jugement du 27 janvier 2020, l'a annulé s'agissant de la peine et a renvoyé la cause à la cour cantonale pour nouvelle décision sur ce point. Pour le surplus, le recours a été rejeté dans la mesure de sa recevabilité. C. Par jugement du 22 juin 2020, rendu à la suite de l'arrêt de renvoi du 15 mai 2020, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté l'appel et a maintenu son dispositif. D. A._ forme un recours en matière pénale auprès du Tribunal fédéral contre le jugement du 22 juin 2020 et conclut, avec suite de frais et dépens, au prononcé d'une peine privative de liberté qui ne saurait excéder la durée de la détention déjà subie et au prononcé de sa liberté immédiate. Subsidiairement, il conclut à l'annulation du jugement et au renvoi de la cause à la cour cantonale pour nouvelle décision. Il sollicite en outre le bénéfice de l'assistance judiciaire. E. Invités à se déterminer sur le recours de A._, la cour cantonale et le Ministère public vaudois y ont renoncé.