MIME типы определяются по базе в которой они могут быть описаны как по расширению, так и по magic numbers. И то и другое тоже вместе можно, я думаю. Magic numbers может проводиться через битовую маску перед сравнением.

Вобще о структуре файлов можешь покопаться в Shared MIME-info database (standards.freedesktop.org). Правда как таки прикрутить иконку к типу не пихая его просто в папку с иконками по имени типа мне не понятно. Т.е. описание того как это сделать есть («icon» и «generic-icon» элементы), только вот что-то после изменения файлов и выполнения

update-mime-database ~/.local/share/mime

иконки не изменяются (хотя описания применились).