It's possible to write one from scratch but I just use what's built into the .tcl infrastructure since it's not worth re-inventing the wheel. You can take a look at the SGDMA components in this design to get an idea what you can do: http://www.altera.com/support/examples/nios2/exm-modular-scatter-gather-dma.html
9.1 has new features to make the GUIs look nicer but I haven't got around to using them yet. Typically I create a component in component editor first then hack up the .tcl afterwords. You can find the component .tcl API in chapter 7 of volume 4 of the Quartus II handbook.
There are other examples in the custom IP section of this forum and on the Nios wiki as well if you want other examples like this one:
http://www.nioswiki.com/systemconsole/programmablemaster