For the past year of software consulting I've been using nix to define the development environments