Solution
B N . N B
N . R . N
. R . R .
N . R . N
B N . N B
Image representation (thanks to @ibrahimmahrir):
This works because
each knight is defended by exactly one rook while not attacking anything, and the rooks and bishops cover each other in a perfect one-to-one correspondence.
Methodology / ramblings
I swiftly realised that one of the keys to this puzzle is to use
symmetry. We can split the squares of the $5\times5$ chessboard into five symmetrical sets, labelling these sets A, B, C, D, E as follows (and ignoring the central square since it's not perfectly symmetric with anything):
A B C B A
B D E D B
C E . E C
B D E D B
A B C B A
It makes sense that a neat solution will involve all squares of the same letter being occupied by pieces of the same type (or unoccupied). Maybe not all solutions are symmetric (if there are more than one), but surely the one you have in mind is, since it should be elegant enough to find by hand.
After fiddling around a bit with trial and error, I started to consider it logically. The squares labelled E
can't be occupied by knights, since then the squares labelled A and C and D would have to be empty (each of these is covered by TWO knights), contradiction. They can't be occupied by bishops either, since then each bishop would be covered by TWO bishops. So let's try putting rooks on those squares (the other possibility is that they're empty).
Now the squares labelled D must be empty, since each one is covered by TWO rooks. So we have four A squares, eight B squares, and four C squares on which to fit four bishops and eight knights.
Putting the knights on the B squares works beautifully, and then the bishops can easily be slotted in to the A squares, giving the solution found above.