Оба сочетания пишутся через дефис. Правило примерно следующее:
Если есть одиночные приложение и определяемое слово, без именных в паре, то дефис ставится всегда, кроме 5-ти пунктов:
1. Первое слово заменяется прилагательным.
Существительное, которое идет первым, заменяется прилагательным, как ‟малютка сын” заменяется ‟маленький сын”. В ваших сочетаниях первые слова не заменяются такими прилагательными.
2. Род-вид отношения существительных.
Род-вид отношения, как в логике: цветок мальва, гриб лисичка. Но есть исключения, обычно из научной и другой специальной лексики, которые все же пишутся с дефисом: жук-плавунец, рак-отшельник, слесарь-инструментальщик, химик-органик. В ваших сочетаниях нет таких род-вид отношений.
3. Сочетания со словами: гражданин, господин, товарищ.
Вот пара примеров: гражданин посол, товарищ майор. В ваших сочетаниях нет таких слов.
4. Пояснение из одного слова.
Когда предложение прерывается, делается отступление с информацией из одного слов (данное правило про одиночные приложение и определяемое слово), и предложение продолжается, — все это с соответствующей интонацией отступления. Вот пример такого приложения: ‟Отца, пьяницу, кормила с малых лет, и сама себя”. В ваших сочетаниях нет приложений с пояснительным значением.
5. Особый вид отношений с тире.
В предложениях вроде: ‟Я не слишком люблю это дерево — осину”, ‟Было ещё одно препятствие на пути учёных — суеверие островитян”, ‟Профессия его была самая мирная — учитель”. То есть когда сначала что-то обозначается более общим словом, а потом, после паузы, как при двоеточии, это же обозначается менее общим словом. Такие предложения в справочнике Розенталя находятся в теме про пояснительные конструкции, но, на мой взгляд, это является крайне грубой ошибкой в построении терминологии и пояснение и вот это вот следует разделять. В ваших сочетаниях нет такого рода приложений.
Вывод: согласно данной формализации, оба сочетания пишутся через дефис.