I'm not sure Ansible would be very useful for the use-case of "getting your desktop right". Generally there's three things that is needed to get a (personal) dekstop set up:
1) Get the right packages (eg: dpkg --get-selections > my-pacakges.list; dpkg --set-selections 2) Set up your account (This can be done with kicstart, FAI or preseed.cfg) If you only have one user, this might not be worth automating. This is also a task ansible can handle fine.
3) Set up your preferences/restore your home folder etc.
This is the area that tends to take the most time and care.
Personally I've pretty much stabilized on a very spartan xmonad config (driven from ~/.xsession), and have a mercurial repo with various dot-files that I just clone and symlink to (and I have a bash-script that takes care of setting up the symlinks) -- I also manually set up a python virtualenv (which bin I add to my path), an ~/opt hierarchy managed by xstow (I usually recreate this, as the whole point is to follow upstream, unpackaged software) and a ~/bin folder that's also in a mercurial repo (a few shell scripts for toggling vga/internal displays for my laptop and some similar small utilities).
Now, "manually" symlinking your dot-files probably isn't the best idea -- the main reason I do it this way, is that I've had to manage my profile across different distributions (and for a time also on Solaris) -- and then just keeping home in version control can be a little to simplistic (now with mercurial/git I suppose using named branches for the various machines might be a viable option though -- not sure if I want a check-out command in my .bashrc/.xsession though -- too much can go wrong... eg if git/mercurial for some reason isn't available won't run without errors...).