When comparing Elementary OS vs Nix os , the Slant community recommends Nix os for most people. In the question“What are the best Linux distributions for a backend developer?” Nix os is ranked 4th while Elementary OS is ranked 16th. The most important reason people chose Nix os is:
It has all of hackage in it's package manager (which is confusingly named "nix" as well) due to being based around hashing and allowing you to compile in a sort of virtual machine (really just changing the PATH variable temporarily) it solves many of the versioning problems that you commonly have with cabal. Here's a tutorial (there's many others as well) http://www.cse.chalmers.se/~bernardy/nix.html. Also I should note that you can use the package manager a la carte on Mac and most any linux distro.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro UI design consistency
Excellent uniformity between all the stock application and an overall extremely clean design with simple animations.
Pro Lightweight & fast
Runs well on limited-resources hardware, including netbooks or chromebooks.
Pro Built on Ubuntu
Built on Ubuntu LTS with all its qualities and support.
Pro If you like MacOSX the UI/UX is similar
Pro Extremely user-friendly
This distribution promises you a very tailored user experience and it does deliver on that promise. The developers provide you with a custom desktop environment and a set of neat programs. And the whole desktop looks simply gorgeous.
Pro Active Google+ community
There is a place where Elementary users can ask their questions and usually get answers pretty quickly. Not only by the other users, but the devs are pretty active themselves, often engaging in the discussions on the hows, whys, and plans of the OS.
Pro Simplicity, limited configurability
Sane defaults with less confusion for new users.
Pro Consistent development practices
All Elementary apps are written in Vala and hosted on Launchpad, and there are standard APIs such as contractor for applications to interact with one another. This is different from most distros, in which apps are written in a variety of languages. This design decision makes it easy to get started developing for Elementary and to understand how the various pieces fit together.
Pro A dedicated StackExchange site
Elementary OS has a dedicated StackExchange site where users can easily find answers to common questions.
Pro With new tweak tools customisation is not a problem
Now the OS is amazingly customisable
Pro Great for Haskell development
It has all of hackage in it's package manager (which is confusingly named "nix" as well) due to being based around hashing and allowing you to compile in a sort of virtual machine (really just changing the PATH variable temporarily) it solves many of the versioning problems that you commonly have with cabal. Here's a tutorial (there's many others as well) http://www.cse.chalmers.se/~bernardy/nix.html.
Also I should note that you can use the package manager a la carte on Mac and most any linux distro.
Pro Upgrading the system is extremely reliable
Since NixOS stores all its packages in isolation from each other in /nix/store
and because of the declarative configuration model, upgrading NoxOS systems is extremely reliable. Furthermore, it gives you the ability to roll back upgrades.
Pro Extremely reproducible state of installation
Every package in your system is generated from a configuration file. This makes it very easy to reproduce that environment. Just copy the config file into a new machine and it's done.
Pro Versatile snapshot system
You can use and test snapshots without rebooting. Booting into snapshots or test configurations is possible without risking the system's stability.
Pro Has docker like system built in
Pro Allows parallel configurations for multiple projects
As everything is isolated, you can have on the same machine multiple configurations to meet project requirements that would be mutually exclusive on other OSes.
Cons
Con UI doesn't let you change anything
Every installation of elementaryOS looks exactly like the same.
Con Old base and applications
The slow release schedule makes the applications outdated. It drags behind Ubuntu LTS (on which it's based) which itself drags behind Ubuntu which is often still quite far behind Arch for example.
Con Outdated or bad default applications
Con Poor Linux community reputation
The devs of elementary OS feel anyone not paying for their Ubuntu respin are not worthy of using it. Which upset a good bit of people. Obviously the core dev team have issues with their community outreach and PR.
Con Quite buggy
Con Very slow development cycle
Elementary does not offer any release date for their stable releases going more with an "it's done when it's done" attitude. Making depending on newer apps a difficulty as well as a poor choice for those that need consistent release schedules for their OS.
Con Not very configurable
Con The desktop doesn't let you to put icons by default
Con Limited and outdated packages
Packages can be very outdated, and many can't be installed from official repos.
Con Doesn't support 32-bit hardwares anymore
One can install pantheon DE from new ubuntu's repo but Elementry OS is not making new ISO's nor is it supporting them. It makes confuzzled to new users.
Con Upper panel requires extra spaces
The upper panel in Elementary OS requires more space. This can be a problem for computers with small monitors.
Con Emacs doesn't work
Emacs crashes due to a partial gnome library update.
Con Heavy animations
It has some animations that don‘t run well on older hardware.
Con Window control button placement may be unintuitive to some
elementary OS has window controls on the left side of the window. It may be less intuitive to users coming from other operating systems that put window controls on the right.
Con No proprietary driver installer
Elementary OS removed the driver installer of Ubuntu.
Con Problems with basic functions
Problems often arise with functions like keyboard layout and touchpad.
Con Boring UI
It can be very boring.
Con The configuration language is hard to figure out
For good reason. It's a purely functional language. However not even close to bash.