Guix and Nix are both implementations of the functional package management idea. Nix has been around for quite a few more years than Guix.
In Guix package expressions are first-class and the DSL is embedded in Guile, a general purpose language, so packaging has a very different feel to it. It also allows for fun tools like "guix graph".
Guix is used in scientific environments (e.g. where I work); I don't know if there are deployments of Nix in HPC environments. I do think that there are more bioinformatics tools packaged for Guix.
Another difference is in how the two projects approach certain problems, such as bootstrapping from binaries. (Guix just got a new Java bootstrap from C.)
There is no rivalry between these projects and members of both projects cooperate in the reproducible builds efforts.