Let me post my findings.
Based on immunities:
No fairy types.
No steel types.
No ghost types.
No ground types.
1 normal type.
1 dark type.
1 flying type or a Pokemon with levitate.
No Pokemon with any other abilities which provide immunities.
Other observations:
No normal resistance means there's no rock types.
There is a steel weakness, so there is one ice type (rock and fairy are already eliminated).
No poison weakness lets us eliminate all grass types besides grass/poison.
We do have a ground resist, which means there must be a bug type.
No psychic weakness eliminates the bug/fighting combination, and since the other rock resists are eliminated, our bug type is weak to rock.
The same logic also eliminates the ice/fighting combination, which means our ice type is also weak to rock.
In fact, because of there being no rock resists, we could eliminate all fighting types besides fight/fire and fight/flying, but they would also be weak to psychic.
In other words, there are no fighting types.
There is a dark weakness, and since ghosts have been eliminated, we need a psychic type not part dark, fairy or fighting.
We already knew about the fairy and fighting, but the dark is the interesting part. This means that we have one Pokemon that is a dark type, and one Pokemon that is a psychic type.
There is however only one bug weakness, so either the dark type or the psychic type's secondary typing must resist bug.
Quite a few types resist bug: fairy, fighting, fire, flying, ghost, poison, steel. Out of these, we have already eliminated fairy, fighting, ghost and steel.
We're left with fire, flying and poison.
Fire and flying would make the rock weakness incorrect, and poison/dark (there is no poison/psychic) would introduce a poison resist.
Did I make a mistake somewhere? Or am I forgetting something?