Basically, there aren't any architectural differences between the two distributions, except for the way they handle the init system:
Guix System uses GNU Sheperd while NixOS uses System D.
To the best of my understanding, Guix/Guix System is a re-implementation of the framework seen in Nix/NixOS, utilizing GNU tooling. In other words, it is like NixOS but with a different user experience:
- The entirety of its codebase is developed using Guile and Lisp, in contrast to Nix and Bash.
- It employs GNU Shepherd in lieu of System D.
- Guix does not package non free software while
nixpkgs
do.
- Guix provides support for the GNU Herd kernel.
I tried Guix out about a year ago and found some limitations back then:
- Impossibility to install the root filesystem on LVM.
- Building a package requires to recompile all Guix modules.
It is noteworthy that nixpkgs
is one of the largest package repositories, whereas Guix repositories are constrained by the limited number of maintainers and the "libre software only" limitation.
The Nix project is also more mature, enjoying a ten-year head start and a much larger community.
Furthermore, since Nix is a package manager, it can be installed on any distribution, including Guix System. This means that you can install packages from nixpkgs
using Nix on a Guix System.
As pointed out in the comments by MegaTux, Guix is also a standalone package manager (that is shipped with the Guix System distribution) and can be installed on any distribution.