Introduction Let's talk about some of the issues with Nix and NixOS, and how Guix does these things better. I'll say upfront that you shouldn't expect tons of examples - this is a fairly quick writeup, though I might come back later to revise sections and add more points.
Internal design issues ** Internal inconsistencies/issues *** Build system issues Guix uses so called [[https://guix.gnu.org/manual/en/html_node/Build-Systems.html][build systems]] - these ensure consistency in how packages are actually built across different toolchains and language ecosystems.
Each package ecosystem has its own build system. These define certain dependencies and standard procedures used for handling packages within that ecosystem.
All of these build systems are in a single place (see points below) - this helps keep the different build systems consistent in behaviour.
Combined these ensure /global/ consistency in the approaches used for handling different toolchains across all the definitions.
Nix /does/ have build phases, and even something similar to build systems, but...
All Guix package definitions are written exclusively in GNU Guile - a Scheme implementation
Now for the Nix language.
TLDR: the Nix language has all the problems of a general purpose language (namely too much expressiveness, allowing people to build new abstractions that make it harder for other people to understand their code, and making evaluation slow), while not having the features you would expect from a general purpose language, and at the same time not having many domain-specific features (indeed string contexts are one of the few). So it’s not that great as a DSL or a GPL.
Nixpkgs commits aren't signed - see https://github.com/NixOS/rfcs/pull/100 (at least it's being worked on... slowly).
Overall quality of definitions in Nixpkgs isn't always great - [[https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/r-modules][many R packages are autogenerated]] and thus broken.
Nixpkgs is unreliable - [[https://discourse.nixos.org/t/nixpkgss-current-development-workflow-is-not-sustainable][this]] speaks for itself... *** Missing features First of all grafts. What are they?
Grafts are Guix' way of not rebuilding the world when an important security is rolled out. Basically, they allow you to build and link against old versions of a library while running the program against a new one. Traditional distros do that all the time and you don't even notice, but on Guix you actually have two versions of that library still lying around. The ungrafted one and the grafted one. -- Guix documentation
+To my knowledge Nix has no such thing.+
Thank you to user [[https://github.com/dali99][dali99]] for correcting me here - [[https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/replace-dependency.nix][Nix does in fact have a mechanism similar to Guix's grafts]], however it isn't used and it doesn't seem recursive application is supported either.
+Nix also doesn't have an equivalent to ~guix pack~.+
** User experience issues *** Documentation
As I have mentioned multiple times before, the Nix documentation is infamously bad, see the blogpost below.
The Nix manual is also comparatively poor compared to what Guix offers (which includes a "cookbook" full of examples)
[[https://nixos.org/manual/nix/stable/command-ref/nix-env.html][nix-env]] is considered bad by a big part of the community ([[https://discourse.nixos.org/t/depreciate-the-use-of-nix-env-to-install-packages/20139][1]]) ([[https://stop-using-nix-env.privatevoid.net/][2]]). Yet the documentation doesn't mention any of it's shortcomings and it doesn't exactly have a great replacement.
Many tools are considered deprecated, yet are kept around for legacy compatability and referenced in the documentation, or they don't have good replacements (see ~nix-env~ section above).
Conclusion WARNING: opinionated conclusion!
Overall Nix is a very flawed piece of software and far inferior to Guix. Years and years of technical issues plague the project and there seems to be little interest in actually resolving these issues. Guix is comparatively much newer, yet the UX is much better and there are constant improvements in many areas. It also has the advantage of being built from the ground up with a clear design mind.
This isn't the complete document, I might come back and add more - for now I have already spent too long on this, and I think I outlined many of the issues rather clearly. If you find incorrent information please contact me and I'll be happy to correct myself :)!