To make filling: Wash and dry potatoes, then cut into halves. Add to a large pot of cold, salted water and bring to a boil. Reduce heat and cook potatoes until fork tender, about 7-10 minutes. Remove from heat, drain and transfer to a large bowl.
Add cheese, bacon, 4 tbsp butter, milk, salt and pepper to the potatoes. Mash to incorporate all ingredients. Set aside.
To make dough: Combine flour and salt in a large bowl and stir in buttermilk. Gather into a ball and knead on a lightly floured surface. Cover and let rest for 30 minutes.
To make garnish: Melt 2 tbsp butter in a medium-size pan over medium heat. Add chopped onions and cook until browned and crispy, about 20-30 minutes.
To assemble: Cut dough in half. Take one half and roll on floured surface until ¼-inch thick. Cut out 3-inch circles and place 1 tbsp of potato filling in the centre of each circle. Fold opposite side of dough over to make a semi-circle and pinch edges to seal. Repeat with other half of dough. Place completed perogies on a floured cutting board. Lightly cover and refrigerate for 2 hours.
Bring a large pot of water to a boil. Adding 6-8 perogies at a time, stir gently and cook for 3-5 minutes. When cooked, perogies should float to the top. Remove with a slotted spoon. Place cooked perogies on a serving platter and garnish with remaining chopped bacon, fried onions and chives. Serve with sour cream. Enjoy!