I have recently been helping set up servers at work, and got keen on an idea - i wasnt sure what forum to put this in, and really want to use you guys as a sounding board if that's ok.

My (rough) plan.
I use intensive software such as 3D cad software reasonably regularly - I currently run that on an i5 8gb ram local desktop.
I have many movies stored on it, aswell as music.
I do quite a lot of programming.

My TV is plugged into my router (which provides cable and internet). What I want to do is get one of these:

Option 1.
Plug it directly into a network port on the router for fast internet. install ESXI on it and run a few virtual machines:
A version of Ubuntu, from here I can program in Java/C/C++
A Version of FreeNas which handles file sharing between computers.
By a Raspberry Pi, install XBMC media center, connect that directly to the router and give it access to the FreeNas file sharing to access movies/music. output music to my Amp, and HDMI video/sound to the TV.

From my Desktop, by a solidstate drive, install windows, install SolidWorks(Cad software) and use the FreeNas file server to store all files on the HP Poliant Server above (as backup).

Run Another VM on the server, with a version of Gerrit on, that I use as code backup, and use this as a code repository. This vm will also have Shell in a Box so i can access code/Gerrit and remotely via a web browser.

I dont want all of these VMs to have access to the web for security - for instance the file sharing.

Can anyone improve on my idea?
I have not interacted with these packages together before so Im not sure of the logistics of that side of things