The GIN index doesn't just require a custom operator. It requires a whole family of operators. Basically you need to:
Consult the documentation regarding GIN opclasses.
Write a set of IMMUTABLE functions to handle those.
Write a set of operators based on those functions.
Tie those together in a custom operator class.
This isn't a simple, small amount of work. It requires a fair bit of though (what does "overlap" mean in the context of your type?" and so you need to expect to spend a fair bit of time in the design phase.
Basically if you want GIST/GIN support you are designing a custom type not just for storage but for operational purposes. This is a project.