Season the pork. Pat the pork dry.
In a bowl, mix salt, pepper, cumin, oregano, chili powder, and smoked paprika. Rub the spice blend all over the pork chunks until well coated.
Set up your pot. In a large Dutch oven, slow cooker, or Instant Pot, add the sliced onion, garlic, bay leaves, orange juice, lime juice, and chicken broth. Place the seasoned pork on top.
Cook low and slow. Oven: Cover and cook at 300°F (150°C) for 3–3.5 hours until fork-tender.
Slow cooker: Cook on Low for 7–8 hours or High for 4–5 hours.
Instant Pot: Pressure cook on High for 60 minutes, then natural release for 10–15 minutes.
Shred and reduce. Remove pork to a large bowl and shred with two forks.
Skim excess fat from the cooking liquid, then simmer the liquid on the stove for 10–15 minutes to reduce and concentrate flavor. Stir some of the reduced liquid into the shredded pork to keep it juicy.
Crisp the edges. Heat a large skillet over medium-high with a thin film of oil. Add a layer of shredded pork and press gently.
Let it sizzle without stirring for 2–3 minutes until edges turn crisp and browned. Flip once, crisp the other side, and repeat with remaining pork. Spoon over a bit more reduced liquid to glaze.
Prep the lettuce and toppings. Separate lettuce leaves, wash, and pat dry.
Arrange on a platter with toppings so everyone can build their own wraps.
Assemble and serve. Add a generous scoop of crispy carnitas to a lettuce leaf. Top with avocado, salsa, cilantro, pickled onions, and a squeeze of lime. Serve immediately while the pork is hot and crackly.