This commit add nix support for development shells. The developer can use `nix develop` to setup a complete and reproducable devleopment environment using Nix.