To be honest, most of that stuff works just fine in BASH too.
That's my bash prompt, doing the same. Except, it doesn't factor in mercurial repositories, but that'll be a breeze to add.
Displaying: (<virtual_env>) user@host [ <folder> ~<branch> <* available changes>]$