Here's my 5 cents of info. This had cost me a full day of work to figure out. Hope it will save you some time.
Install: xbmc on a ubuntu 12.10 minimal following this guide (http://forum.xbmc.org/showthread.php?tid=141369). Tvheadend was installed as part of the excellent script offered in that guide.
Ziggo is DVB-C (NB: A DVB-T TV card WILL NOT WORK!!! Took two full days to figure this out). PVR card will not acquire any information about the channels by itself, to go to the cable provider page, Ziggo in my case (https://www.ziggo.nl/#producten/televisie/zenderoverzicht/frequentiesoverzicht) and get a list of analog channels for your town. You will have to type them down one by one into the TVheadend's webUI (Configuration/TV adapters (choose adapter)/Services).
Please note that frequencies are entered down to single HZ, this means 9 digits per channel (last four will be zeroes)!
At this point you may already go to your xbmc and configure it to get the feeds from tvheadend. I followed "step 3" of the tutorial here (http://lifehacker.com/5981757/how-to-watch-and-record-live-tv-on-your-xbmc-media-center). You should get the LiveTV tab and be able to flip the channels.
Now on to the EPG (electronic program guide). The tv_grab_nl_py external grabber must be installed according to this page (
https://code.google.com/p/tvgrabnlpy/wiki/Installatie). Note that TVheadend has created a user hts on your system. Go to /home/hts folder and run "tv_grab_nl --configure". If all goes well, you will get a sub-folder .xmltv created, in which the tv_grab_nl_py.conf file will appear. This file contains names and channel numbers of all channels for which tvgids.nl carries the programming (right?). Comment out all the channels you didn't enter (with frequencies and all) into the WebUI of TVheadend/ I suggest you only leave a couple uncommented (Ned1,2,3) to begin with for testing, as fetching EPG for those will already take ~10 min! You can also try to run tv_grab_nl to see if it works (it will output to the terminal).
Now you MUST restart tvheadend by issuing "sudo service tvheadend restart" from a (SSH) terminal. After this this NL grabber should appear in the drop-down list (Configuration/EPG grabber/Internal Grabber/Module). Select it, leave the time at 12 hours (or make it longer). It takes at least an hour to get one full EPG from tvgids.nl, so fetching it more frequently is plain nonsense. Now hit "save changes" and if all goes well, the TVheadend will fire the grabber.
You can test if it works by issuing
ps aux |grep tv_grab
This will tell you if it is running. But is it doing anything? One way to see that is to see the "program_cache" file size growing in the .xmltv folder. But it will only increment once a full channel is grabbed. So after issuing the ps command you can get the PID of the tv_grab_nl process and issue
sudo strace -e write -p PID
This will also show you what the grabber is fetching right now. After it's done (takes a LONG time), go to the "Electronic Program Guide" on the webUI of TVheadend and hit the inconspicuous blue "recycle" button (two arrows in a circle) at the left bottom corner of the screen. The list of all fetched programs will appear (insh'allah :)
One more thing you may wish to do after this is go to "Configuration/Channels" and add numbers to your channels. In this sequence they will appear in your EPG on the xbmc "Live TV" screen, if you allow this in the "System/Settings/LiveTV" config screen of XBMC.
That's how I got it working. All comments/improvements are welcome!