Faits :
A.
Par jugement du 8 octobre 2019, le Tribunal criminel de l'arrondissement de Lausanne a acquitté A._ du chef d'accusation de faux dans les titres, l'a reconnu coupable de fa ux dans les certificats, dénonciation calomnieuse, instigation à induire la justice en erreur, infraction grave et contravention à la LStup ( dont les art. 19 al. 2 et 19a ch. 1 LStup; RS 812.121), infraction et contravention à la loi fédérale sur les armes, les accessoires d'armes et les munitions du 20 juin 1997 ( dont l'art. 34 al. 1 let. b LArm; RS 514.54) et infraction grave à la LCR. Il a condamné A._ à une peine privative de liberté d'ensemble de 8 ans, sous déduction de 554 jours de détention avant jugement, peine partiellement complémentaire à celle prononcée le 15 juin 2017 par le Tribunal correctionnel de l'arrondissement de l'Est vaudois, ainsi qu'à une amende de 600 fr., avec une peine privative de liberté de substitution de 6 jours, a révoqué le sursis partiel qui lui avait été octroyé le 15 juin 2017 par le Tribunal correctionnel de l'arrondissement de l'Est vaudois et a prononcé son expulsion du territoire suisse pour une durée de 10 ans. Il a constaté que A._ avait subi 21 jours de détention provisoire dans des conditions illicites, ordonné que 11 jours soient déduits de la peine et rejeté sa requête en indemnisation à ce titre, rejeté sa demande de mise en liberté et ordonné son maintien en détention. Il a statué sur le sort des séquestres et des pièces à conviction, les frais et les indemnités.
B.
Statuant le 16 janvier 2020, la Cour d'appel pénale du Tribunal cantonal vaudois a très partiellement admis l'appel formé par A._ contre ce jugement. Elle l'a acquitté de la contravention à l'art. 34 al. 1 let. b LArm et l'a condamné à une amende de 300 fr., avec une peine privative de substitution de 3 jours, pour l'<ref-law>, le jugement étant confirmé pour le surplus.
Il en ressort notamment ce qui suit.
B.a. Entre le 21 avril 2016, date de sa libération après une détention pour des faits similaires, et le 4 avril 2018, date de son interpellation, A._ s'est adonné, à B._ et à C._, à un important trafic de produits stupéfiants. Compte tenu des éléments ressortant des surveillances téléphoniques rétroactives et des données contenues dans les téléphones cellulaires utilisés par A._, ainsi que de la drogue saisie, il a été établi que celui-ci a vendu ou voulu vendre 36,36 kg de marijuana, plus de 2'064 g de cocaïne et plus de 46,4 g de MDMA à 127 clients identifiés. Pour ce faire, il a agi par lui-même et avec l'aide de D._ du 22 juin 2017 au 20 mars 2018, par l'intermédiaire de E._ du mois de juin 2017 au mois de novembre 2017, puis de F._ dès le 12 février 2018 et jusqu'à son interpellation.
Lors de la perquisition effectuée au domicile de F._, où les produits stupéfiants étaient stockés, 1'200 g nets de marijuana, 620,2 g nets de cocaïne et 31,4 g nets de MDMA destinés à la vente ont été saisis. Le profil ADN de A._ a été identifié sur la surface intérieure de l'un des sachets contenant la cocaïne. L'analyse de celle-ci a révélé des taux de pureté moyen compris entre 22,5% et 81,6% représentant une quantité de cocaïne pure de 425,4 grammes.
Entre 2015 ou 2016 et le 4 avril 2018, respectivement entre le mois de mai 2016 et le 4 avril 2018, A._ a détenu un taser SP2000, ainsi qu'un pistolet Zoraki 7.65 mm, modèle M906-B, chargé avec des munitions, alors qu'il n'était pas au bénéfice des autorisations nécessaires.
Entre le début de l'année 2017 et le mois de juin 2017, A._ a établi un faux certificat de travail daté du 31 mai 2016, au nom de l'Auberge de G._, attestant faussement du fait qu'il y aurait travaillé, afin de le produire dans son dossier de candidature à l'Ecole H._.
Le 19 février 2018, à 10h55, à I._, A._ a circulé au volant d'un véhicule à une vitesse de 75 km/h, marge de sécurité déduite, sur un tronçon limité 50 km/h, dépassant ainsi de 25 km/h la vitesse autorisée. Entre le 23 février 2018 et le 6 mars 2018, à B._, A._ a demandé à J._ de se dénoncer à sa place comme étant l'auteur de l'excès de vitesse contre un montant de 1'500 fr., ce que celui-ci a accepté. A._ a annoncé faussement à la police que le conducteur fautif était J._.
Entre le 26 avril 2018 et le 3 juillet 2018, à la prison K._, A._ a convaincu, en faisant pression sur lui, son codétenu L._ de se dénoncer faussement comme étant son fournisseur de cocaïne ou celui qui l'avait mis en contact avec ses fournisseurs de cocaïne, ce que celui-ci a fait le 3 juillet 2018 lors de son audition par la police.
Le 4 mai 2018 et le 29 juin 2018, à l'Hôtel de police de B._, A._ a faussement dénoncé M._ comme étant son fournisseur de marijuana, celui qui l'obligeait à vendre de la cocaïne et celui qui lui avait présenté L._. Le 29 juin 2018, A._ a faussement dénoncé L._ comme étant son fournisseur de cocaïne et celui qui lui avait présenté ses fournisseurs d'origine albanaise basés à N._.
B.b. A._ est né en 1994 à O._, au Kosovo, pays dont il est ressortissant. Il a été élevé dans son pays d'origine par ses parents et y a fréquenté l'école obligatoire jusqu'à l'âge de 8 ans. Durant la guerre, il aurait vécu une année en Albanie, en Italie et en Suisse. En 2002, il s'est établi en Suisse avec sa mère, où séjournait déjà son père. Au bénéfice d'un permis d'établissement, il y a vécu avec ses parents jusqu'à leur divorce, alors qu'il avait 14 ou 15 ans, puis a poursuivi sa scolarité, en section "VSO" jusqu'en 7ème année, avant d'interrompre son cursus scolaire. Il a ensuite bénéficié d'un suivi durant une année au Centre d'orientation et de formation professionnelles (COFOP) dans le but de trouver une place d'apprentissage. Sa mère est tombée malade et A._ a commis ses premiers actes délictueux. Au bénéfice d'un suivi par une éducatrice ordonné par le Tribunal des mineurs, il s'est repris en mains et a effectué un apprentissage de spécialiste en restauration, conclu par l'obtention d'un certificat fédéral de capacité (CFC). Puis il a sombré dans la délinquance. Au printemps 2017, dans le cadre de sa procédure d'admission à l'Ecole H._, il a effectué un stage de cuisinier au Café P._ à Q._.
Son casier judiciaire suisse fait état de 4 condamnations entre 2013 et 2017, essentiellement pour infraction et contravention à la LStup, infraction à la LArm et violation des règles de la circulation routière, la dernière, le 15 juin 2017, pour contravention et infraction grave à la LStup à une peine privative de liberté de 18 mois, dont 10 mois avec sursis pendant trois ans et à une amende de 500 francs. Il a en outre des antécédents en tant que mineur.
C.
A._ forme un recours en matière pénale au Tribunal fédéral contre le jugement précité. Il conclut, avec suite de frais et dépens, à la réforme de la décision attaquée, en ce sens qu'il est reconnu pénalement irresponsable des actes qui lui sont reprochéset, en conséquence, qu'il ne peut être condamné pour ces derniers, u ne indemnité pour détention injustifiée devant lui être allouée à hauteur de 145'700 fr. pour les 718 jours de détention subis, dont 21 dans des conditions illicites, soit respectivement 200 fr. et 300 fr. avec intérêt moyen à 5%, augmentée pour tenir compte de la détention subie entre le 20 mars 2020 et le jour de sa libération. Subsidiairement, il conclut au renvoi de la cause à l'autorité cantonale pour nouvelles mesures d'instruction, en particulier la mise en oeuvre d'une expertise psychiatrique et, plus subsidiairement, pour nouvelle décision dans le sens des considérants. Par mémoire complémentaire du 20 mars 2020, A._ conclut "plus subsidiairement" à ce qu'il ne soit pas expulsé du territoire suisse, le jugement devant être "corrigé, respectivement annulé" sur ce point.

Considérant en droit :
1.
Dénonçant une violation de son droit d'être entendu, l'arbitraire dans l'appréciation des preuves et l'établissement des faits, ainsi qu'une violation de la présomption d'innocence, le recourant fait grief à la cour cantonale d'avoir refusé de le soumettre à une expertise psychiatrique et d'avoir en conséquence retenu que sa responsabilité pénale n'était pas diminuée.
1.1. Le droit d'être entendu, garanti à l'art. 29 al. 2 Cst., comprend notamment celui de produire ou de faire administrer des preuves, à condition qu'elles soient pertinentes et de nature à influer sur la décision à rendre (<ref-ruling> consid. 4.1 p. 72; <ref-ruling> consid. 2.3 p. 222; <ref-ruling> consid. 6.3.1 p. 299 et les références citées). Le droit d'être entendu n'empêche pas le juge de mettre un terme à l'instruction lorsque les preuves administrées lui ont permis de se forger une conviction et que, procédant de manière non arbitraire à une appréciation anticipée des preuves qui lui sont encore proposées, il a la certitude qu'elles ne pourraient pas l'amener à modifier son opinion. Le refus d'instruire ne viole ainsi le droit d'être entendu des parties que si l'appréciation anticipée de la pertinence du moyen de preuve offert, à laquelle le juge a procédé, est entachée d'arbitraire (<ref-ruling> consid. 3.1.3 p. 435; <ref-ruling> consid. 3.3 p. 64; <ref-ruling> consid. 5.3 p. 236).
Selon l'<ref-law>, la procédure de recours se fonde sur les preuves administrées pendant la procédure préliminaire et la procédure de première instance. L'<ref-law> règle les preuves complémentaires. Ainsi, la juridiction de recours administre, d'office ou à la demande d'une partie, les preuves complémentaires nécessaires au traitement du recours. Le droit d'être entendu, consacré par l'<ref-law>, garantit aux parties le droit de déposer des propositions relatives aux moyens de preuves (al. 1 let. e). Conformément à l'<ref-law>, il n'y a pas lieu d'administrer des preuves sur des faits non pertinents, notoires, connus de l'autorité ou déjà suffisamment prouvés. Cette disposition codifie, pour la procédure pénale, la règle jurisprudentielle déduite de l'art. 29 al. 2 Cst. en matière d'appréciation anticipée des preuves (arrêts 6B_220/2020 du 26 mai 2020 consid. 1.1; 6B_150/2020 du 19 mai 2020 consid. 3.1; 6B_312/2020 du 11 mai 2020 consid. 1.1).
1.2. Le Tribunal fédéral n'est pas une autorité d'appel, auprès de laquelle les faits pourraient être rediscutés librement. Il est lié par les constatations de fait de la décision entreprise (<ref-law>), à moins qu'elles n'aient été établies en violation du droit ou de manière manifestement inexacte au sens des art. 97 al. 1 et 105 al. 2 LTF, à savoir, pour l'essentiel, de façon arbitraire au sens de l'art. 9 Cst. Une décision n'est pas arbitraire du seul fait qu'elle apparaît discutable ou même critiquable; il faut qu'elle soit manifestement insoutenable et cela non seulement dans sa motivation mais aussi dans son résultat (<ref-ruling> consid. 1.1 p. 155 s.; <ref-ruling> consid. 1.1 p. 503; sur la notion d'arbitraire v. <ref-ruling> consid. 2.3.1 p. 244). Le Tribunal fédéral n'entre en matière sur les moyens fondés sur la violation de droits fondamentaux, dont l'interdiction de l'arbitraire, que s'ils ont été invoqués et motivés de manière précise (<ref-law>; ATF <ref-ruling> consid. 1.1 p. 503). Les critiques de nature appellatoire sont irrecevables (<ref-ruling> consid. 1.1 p. 156). Lorsque l'appréciation des preuves et la constatation des faits sont critiquées en référence à la présomption d'innocence (art. 14 par. 2 Pacte ONU II, 6 par. 2 CEDH, 32 al. 1 Cst. et 10 CPP), le principe in dubio pro reo n'a pas de portée plus large que l'interdiction de l'arbitraire (<ref-ruling> consid. 1.1 p. 156; <ref-ruling> consid. 1.1 p. 503).
1.3. S'agissant du rejet de la requête du recourant tendant à ce qu'il soit soumis à une expertise psychiatrique, la cour cantonale a d'abord confirmé l'appréciation anticipée des juges de première instance. Ceux-ci s'étaient ainsi fondés sur les déclarations du recourant, selon lesquelles il avait consommé de la cocaïne à une vingtaine de reprises sur une période de 3 ans, et en avaient conclu que cette faible consommation ne pouvait pas avoir d'influence sur sa responsabilité pénale. Les premiers juges avaient écarté les déclarations de E._ selon lesquelles le recourant aurait été un très gros consommateur de cocaïne, au motif que ce témoin était impliqué dans les faits délictueux et qu'il entretenait un lien d'amitié avec le recourant. Ils avaient en outre écarté l'existence d'une toxico-dépendance, relevant que les tests urinaires effectués sur le recourant étaient négatifs, que celui-ci n'avait manifesté aucun problème de santé qui aurait pu être mis en relation avec une interruption soudaine de sa consommation de cocaïne et qu'il n'avait jamais sollicité de médicaments pour lui permettre de mieux gérer un hypothétique état de manque. Les premiers juges en avaient conclu qu'aucun indice ou élément probant du dossier ne permettait de penser que le recourant était dépendant à la cocaïne ou à un autre produit stupéfiant. Pour la cour cantonale, cette analyse ne prêtait pas le flanc à la critique. Partant, c'était à juste titre que les premiers juges n'avaient pas ordonné d'expertise psychiatrique du recourant et avaient retenu une responsabilité pénale entière.
Au surplus, la cour cantonale a estimé qu'il était évident que le recourant exagérait sa consommation de cocaïne dans le but de réduire sa responsabilité et, partant, l'importance de la sanction prononcée. Le recourant avait d'ailleurs procédé de la même manière pour tenter de réduire l'importance de son trafic et son rôle dans celui-ci. Quant à E._ et F._, qui étaient les dépositaires et les vendeurs de la cocaïne fournie par le recourant, leurs témoignages en faveur de celui-ci ne suffisaient pas pour contrebalancer les éléments objectifs qui avaient été mis en évidence par les juges de première instance, selon lesquels le recourant n'avait présenté aucun symptôme de manque ou aucun signe de dépendance au moment de son incarcération. Les premières déclarations du recourant au sujet de sa faible consommation de drogue étaient donc conformes à la vérité et ses revirements n'étaient pas crédibles. La cour cantonale a souligné à cet égard que la "dépendance morbide" à la cocaïne dont celui-ci se prévalait n'était pas compatible avec la gestion professionnelle du trafic dont il avait fait preuve, le recourant ayant lui-même admis aux débats d'appel avoir été "d'une efficacité redoutable pour [son] trafic de drogue".
Concernant l'appréciation des preuves et l'établissement des faits, la cour cantonale, se référant à ce qui avait été dit au sujet du rejet de la réquisition de preuve, a précisé que les premiers juges ne s'étaient pas fondés sur des preuves inadéquates ou sans pertinence. Ils avaient au contraire écarté la prétendue dépendance du recourant en procédant à une saine administration des preuves, à l'issue de laquelle il ne subsistait aucun doute sérieux quant à la toxicomanie alléguée du recourant au moment des faits. Faute de doute, la version la plus favorable ne pouvait être retenue en faveur du recourant.
1.4. Invoquant les art. 29 al. 1 et 32 al. 2 Cst., 10, 107 al. 1 let. e, 195 al. 1 et 318 CPP et 20 CP, le recourant reproche à la cour cantonale d'avoir violé son droit d'être entendu en refusant de le soumettre à une expertise psychiatrique. Celle-ci serait indispensable afin de déterminer son degré de dépendance aux stupéfiants et, partant, sa responsabilité pénale au moment des faits. A teneur du dossier, sa toxico-dépendance serait établie. A tout le moins, bon nombre d'éléments auraient dû amener la cour cantonale à douter sérieusement de sa pleine responsabilité pénale. A cet égard, la cour cantonale n'aurait pas tenu compte des déclarations du recourant à l'audience d'appel, selon lesquelles il aurait minimisé sa consommation de drogue afin de ne pas s'accabler inutilement. Elle aurait arbitrairement écarté les déclarations de F._ et E._, qui corroboreraient son addiction, omettant en outre de se prononcer sur "le rapport de police". Elle aurait par ailleurs arbitrairement établi certains éléments, tels que le fait que chaque personne réagirait de la même manière à un manque ou que des tests urinaire effectués a posteriori seraient de nature à démontrer une absence d'addiction.
Pour l'essentiel, dans son recours devant la cour de céans, le recourant reprend les objections qu'il a formulées devant la cour cantonale, en se contentant d'opposer sa propre interprétation des pièces à celle de l'autorité précédente. Procédant par affirmation, il ne démontre aucunement en quoi l'appréciation anticipée des preuves offertes, à laquelle s'est livrée la cour cantonale, serait entachée d'arbitraire. Partant, son grief est irrecevable, à défaut de satisfaire aux exigences découlant des art. 42 al. 2 et 106 al. 2 LTF.
1.5. Invoquant les art. 14 par. 2 Pacte ONU II, 6 par. 2 CEDH, 9 et 32 al. 1 Cst., 10 CPP et 19 CP, le recourant reproche à la cour cantonale d'avoir apprécié les preuves et établi les faits de manière arbitraire. Il se plaint en outre, à cet égard, d'une violation de la présomption d'innocence. Ainsi, la cour cantonale aurait arbitrairement retenu qu'il n'était pas toxico-dépendant et, partant, que sa responsabilité pénale n'était pas diminuée. Dans le doute, la version qui lui était la plus favorable, à savoir qu'il consommerait de la cocaïne "de manière mortelle", devrait être retenue.
Le recourant n'étaye cependant pas ce second grief par une argumentation distincte de celle qu'il présente à l'appui du premier, se bornant à reprendre les mêmes critiques en qualifiant la décision attaquée d'arbitraire. A nouveau, le recourant se limite à opposer, d'une manière purement appellatoire, et, partant, également irrecevable, sa propre appréciation des faits à celle retenue par la cour cantonale. Il ne démontre ainsi pas en quoi la cour cantonale aurait arbitrairement retenu qu'aucun indice ne permettait de penser que le recourant serait dépendant à la cocaïne ou à un autre produit stupéfiant. Insuffisamment motivée, l'argumentation du recourant est irrecevable.
2.
Invoquant l'art. 4 par. 1 du protocole n° 7 à la CEDH ( ne bis in idem), le recourant se plaint d'avoir été puni deux fois pour les mêmes faits, soit d'avoir été condamné à une peine privative de liberté pour l'infraction à la LStup et à une expulsion pour cette même infraction.
L'expulsion est une mesure assortie à une condamnation, de sorte que l'invocation du principe ne bis in idemest dépourvue de portée en l'occurrence.
3.
Le recourant s'oppose à son expulsion du territoire suisse.
3.1. Aux termes de l'<ref-law>, le juge expulse de Suisse l'étranger qui est condamné pour infraction à l'<ref-law> (let. o), quelle que soit la quotité de la peine prononcée à son encontre, pour une durée de 5 à 15 ans.
Selon l'<ref-law>, le juge peut exceptionnellement renoncer à une expulsion lorsque celle-ci mettrait l'étranger dans une situation personnelle grave et que les intérêts publics à l'expulsion ne l'emportent pas sur l'intérêt privé de l'étranger à demeurer en Suisse. A cet égard, il tiendra compte de la situation particulière de l'étranger qui est né ou qui a grandi en Suisse.
La clause de rigueur permet de garantir le principe de la proportionnalité (art. 5 al. 2 Cst.). Elle doit être appliquée de manière restrictive (<ref-ruling> consid. 3.4.2 p. 108; <ref-ruling> consid. 3.3.1 p. 340). Selon la jurisprudence du Tribunal fédéral (<ref-ruling> consid. 3.4 p. 108 ss; <ref-ruling> consid. 3.3.2 p. 340 s.), il convient de s'inspirer des critères énoncés à l'art. 31 de l'ordonnance du 24 octobre 2007 relative à l'admission, au séjour et à l'exercice d'une activité lucrative (OASA; RS 142.201). L'art. 31 al. 1 OASA prévoit qu'une autorisation de séjour peut être octroyée dans les cas individuels d'extrême gravité. L'autorité doit tenir compte notamment de l'intégration du requérant selon les critères définis à l'art. 58a al. 1 de la loi fédérale sur les étrangers et l'intégration (LEI; RS 142.20), de la situation familiale, particulièrement de la période de scolarisation et de la durée de la scolarité des enfants, de la situation financière, de la durée de la présence en Suisse, de l'état de santé ainsi que des possibilités de réintégration dans l'Etat de provenance. Comme la liste de l'art. 31 al. 1 OASA n'est pas exhaustive et que l'expulsion relève du droit pénal, le juge devra également, dans l'examen du cas de rigueur, tenir compte des perspectives de réinsertion sociale du condamné (ATF <ref-ruling> consid. 3.3.2 p. 340 s.). En règle générale, il convient d'admettre l'existence d'un cas de rigueur au sens de l'<ref-law> lorsque l'expulsion constituerait, pour l'intéressé, une ingérence d'une certaine importance dans son droit au respect de sa vie privée et familiale garanti par la Constitution fédérale (art. 13 Cst.) et par le droit international, en particulier l'art. 8 CEDH (arrêts 6B_312/2020 du 11 mai 2020 consid. 2.1.1; 6B_255/2020 du 6 mai 2020 consid. 1.2.1; 6B_124/2020 du 1er mai 2020 consid. 3.2.1).
Selon la jurisprudence, pour se prévaloir du droit au respect de sa vie privée au sens de l'art. 8 par. 1 CEDH, l'étranger doit établir l'existence de liens sociaux et professionnels spécialement intenses avec la Suisse, notablement supérieurs à ceux qui résultent d'une intégration ordinaire. Le Tribunal fédéral n'adopte pas une approche schématique qui consisterait à présumer, à partir d'une certaine durée de séjour en Suisse, que l'étranger y est enraciné et dispose de ce fait d'un droit de présence dans notre pays. Il procède bien plutôt à une pesée des intérêts en présence, en considérant la durée du séjour en Suisse comme un élément parmi d'autres et en n'accordant qu'un faible poids aux années passées en Suisse dans l'illégalité, en prison ou au bénéfice d'une simple tolérance (cf. <ref-ruling> consid. 4.3 p. 24; arrêt 6B_312/2020 du 11 mai 2020 consid. 2.1.2). Un séjour légal de dix années suppose en principe une bonne intégration de l'étranger (<ref-ruling> consid. 3.9 p. 278).
3.2. La cour cantonale a rappelé que le recourant, né en 1994, était arrivé en Suisse en 2002, alors qu'il n'était âgé que de 8 ans. Au bénéfice d'un permis d'établissement, il avait passé l'essentiel de sa vie dans ce pays, où vivaient également ses parents, ses demi-soeurs et une grande partie de sa famille. Il ne s'était toutefois jamais intégré dans son pays d'accueil, où il avait commis des infractions dès l'âge de 15 ans. A 25 ans, il subissait sa cinquième condamnation en tant qu'adulte, pour des infractions de plus en plus graves. Malgré des mesures alors mises en place par le Tribunal des mineurs, puis le prononcé du sursis à l'exécution de deux de ses peines et les aménagements dont il avait bénéficié pour exécuter sa précédente peine privative de liberté, il avait démontré qu'il n'était pas digne de la confiance placée en lui par les autorités, en récidivant alors même qu'il purgeait encore sa peine sous le régime de la semi-détention et bénéficiait du sursis partiel pour le solde. Il n'était pas marié et n'avait pas d'enfants. S'il avait certes obtenu un CFC en Suisse, il n'avait jamais travaillé de manière fixe, ni gagné sa vie licitement. Bien qu'il parlât couramment le français, il maîtrisait également sa langue d'origine. Il avait encore de la famille au Kosovo, où l'un de ses oncles possédait notamment un hôtel.
La cour cantonale a considéré que déterminer si l'expulsion du territoire helvétique placerait le recourant dans une situation personnelle suffisamment grave pour que l'application de la clause de rigueur prévue à l'<ref-law> puisse être envisagée pouvait rester ouverte. En effet, l'intérêt public présidant à son expulsion l'emportait sur son intérêt privé à demeurer en Suisse, de sorte que l'expulsion se justifiait au regard de l'art. 8 par. 2 CEDH. Les intérêts en faveur de l'expulsion du recourant étaient importants, dès lors que celui-ci s'était livré pendant deux ans à un important trafic de drogue portant sur plus de 36 kg de marijuana et plus de 2 kg de cocaïne, pour plus d'une centaine de clients. Ainsi, compte tenu de la menace pour l'ordre et la santé publics que constituaient les infractions sanctionnées, de la médiocre intégration du recourant en Suisse et de sa persistance à violer l'ordre juridique suisse depuis son plus jeune âge, l'intérêt public à l'expulsion l'emportait manifestement sur l'intérêt privé du recourant à demeurer en Suisse. Il subirait sans conteste un préjudice du fait de son expulsion. Toutefois, rien ne permettait de présumer qu'il rencontrerait de graves difficultés à s'insérer socialement et professionnellement dans son pays d'origine, dont il parlait la langue et où il disposait de relais familiaux.
3.3. Le recourant ne conteste pas avoir été condamné pour une infraction à l'<ref-law>, qui tombe sous le coup de l'art. 66a al. 1 let. o CP. Il fait valoir que son expulsion du territoire suisse ne serait pas justifiée au regard de sa situation personnelle et invoque l'application de la clause de rigueur.
On peut admettre que la question de savoir si l'expulsion pourrait placer le recourant dans une situation personnelle grave - en particulier au regard de son droit au respect de sa vie privée et familiale au sens de l'art. 8 par. 1 CEDH - peut rester indécise, dès lors que l'expulsion peut de toute manière être confirmée au regard de l'art. 8 par. 2 CEDH. A cet égard, l'appréciation de la cour cantonale doit en effet être suivie.
Déterminer si l'intérêt privé du recourant à demeurer en Suisse pourrait l'emporter sur les intérêts publics présidant à son expulsion implique en particulier d'apprécier si la mesure litigieuse respecte le principe de la proportionnalité découlant des art. 5 al. 2 Cst. et 8 par. 2 CEDH (cf. arrêts 6B_312/2020 du 11 mai 2020 consid. 2.2; 6B_124/2020 du 1er mai 2020 consid. 3.4; 6B_2/2019 du 27 septembre 2019 consid. 7.1 non publié aux <ref-ruling>).
Concernant l'intérêt du recourant à rester en Suisse, il convient de relever que celui-ci vit dans ce pays depuis 18 ans, y dispose de ses liens familiaux principaux et bénéficie d'un permis d'établissement. Malgré cela, l'intégration en Suisse n'est pas réussie. Celui-ci a certes obtenu un CFC et maîtrise le français. Il n'a cependant jamais travaillé de manière fixe, ni gagné sa vie licitement, hormis l'accomplissement d'un stage de cuisinier en 2017. Sa réintégration pourrait se faire au Kosovo, pays dont il parle la langue. Sur le plan personnel, le recourant a encore de la famille dans son pays d'origine, notamment un oncle qui y possède un hôtel.
L'intérêt public présidant à l'expulsion du recourant s'avère considérable, compte tenu de la gravité et de la multiplicité des faits qui ont conduit à la présente condamnation. Malgré son jeune âge, le recourant semble installé dans la délinquance, ce que reflètent ses antécédents judiciaires. Comme l'a souligné la cour cantonale dans son examen de la peine (jugement entrepris, p. 33), le recourant n'a pas hésité à poursuivre son activité criminelle, quand bien même il avait bénéficié d'un sursis partiel octroyé le 15 juin 2017 par le Tribunal correctionnel de l'arrondissement de l'Est vaudois et qu'il se trouvait alors en semi-détention. A cet égard, il convient de rappeler que la Cour européenne des droits de l'Homme estime que, compte tenu des ravages de la drogue dans la population, les autorités sont fondées à faire preuve d'une grande fermeté à l'encontre de ceux qui contribuent à la propagation de ce fléau (cf. arrêts CourEDH K.M. c. Suisse du 2 juin 2015 [requête n° 6009/10] § 55; Dalia c. France du 19 février 1998, Recueil CourEDH 1998-I 76 § 54; cf. aussi arrêts 6B_312/2020 du 11 mai 2020 consid. 2.2.3; 6B_153/2020 du 28 avril 2020 consid. 1.4.3). Il apparaît ainsi que le recourant, qui manifeste depuis plusieurs années un mépris complet de l'ordre juridique suisse, constitue une sérieuse menace pour l'ordre et la sécurité publics, en raison de l'énergie délictueuse qu'il a déployée depuis son plus jeune âge.
Lorsque le recourant soutient que prononcer son expulsion reviendrait à méconnaître le soutien qu'il apporte à sa mère malade, son argumentation s'écarte des faits retenus par la cour cantonale sans démontrer en quoi cet élément aurait été arbitrairement omis. Il en va de même de celle selon laquelle il aurait par ailleurs créé un groupe de travail en prison visant à soulager les détenus souffrant de toxico-dépendance.
En définitive, compte tenu de la gravité des infractions sanctionnées, de la mauvaise intégration du recourant en Suisseet des perspectives de réintégration au Kosovo, l'intérêt public à l'expulsion du recourant l'emporte en l'espèce sur son intérêt privé à demeurer en Suisse. L'expulsion, ordonnée pour une durée de dix ans, s'avère conforme au principe de la proportionnalité découlant des art. 5 al. 2 Cst. et 8 par. 2 CEDH, étant précisé que le recourant n'élève aucun grief à l'encontre de la durée de la mesure. La seconde condition pour l'application de l'<ref-law> n'étant pas réalisée, la cour cantonale n'a pas violé le droit fédéral en ordonnant l'expulsion du recourant. Infondé, le grief est rejeté.
4.
C ompte tenu du sort du recours, il n'y a dès lors pas lieu d'entrer en matière sur les conclusions du recourant visant à une indemnisation.
5.
Le recours doit être rejeté dans la mesure où il est recevable. Le recourant, qui succombe, supporte les frais judiciaires, dont le montant sera fixé en tenant compte de sa situation financière, laquelle n'apparaît pas favorable (art. 65 al. 2 et 66 al. 1 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 1'200 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal du canton de Vaud.
Lausanne, le 9 juillet 2020
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Rettby