If you are using mixinto remember about additive stuff as usual.
As for the customization variants,
if variant.models then
local variant_name = "default"
local random_model = variant.models[1]
local model_variants_component = entity:add_component("model_variants")
model_variants_component:add_variant(variant_name):add_model(random_model)
end
if variant.variants then
for _, variant_set in ipairs(variant.variants) do
local random_option = variant_set[math.random(#variant_set)]
self:customize_citizen(entity, all_variants, random_option)
end
end
This should shed (some) light. Basically, eyebrows has to be reachable through some variants from root.
In your case, root, topknot, [ topknot_black, topknot_grey ], [ [ nothing, eyebrows ], [ nothing ] ] eyebrows is only reached if topknot_black is used.
If I am reading this code properly, then there’s the xkcd issue.
But that’s just for the model, not the variant. In theory, there should be some citizen that has head_topknot_1_grey.qb as model. Feel free to post your mod so I can throw a few prints into the SH code to look for it - but right now it looks like the bit is still WIP.