GuixPkgs: every Guix package, as a Nix flake
Farid Zakaria announced GuixPkgs, a Nix flake that exposes the entire GNU Guix package set for use in Nix. Building on his earlier tool guix-transfer, which rewrites Guix derivations into Nix derivations, GuixPkgs pins a specific Guix commit and uses guix time-machine to obtain derivations from that exact commit, decoupling the result from the host's guix-daemon version. It dumps every package's .drv file, feeds them to guix-transfer with flags --disable-tests --emit-nix-dir pkgs, rebuilds the by-name index, and records the Guix channel, commit, and timestamp in guix-metadata.json. The resulting packages land in /nix/store and behave like any other Nix package, with no Guix required on the consuming side. Because realizing a Guix package under Nix recompiles Guix's entire source bootstrap (a 357-byte seed up to GCC and glibc), which takes hours per closure, GuixPkgs ships a Cachix binary cache (cachix use guixpkgs) included in the flake, sponsored by Domen Kožar. Zakaria suggests the project makes packages that only exist in Guix, such as GNU Guile built software like guile-png, easily available in Nix. He also teases future possibilities like an overlay that replaces every Nixpkgs package with its Guix equivalent, potentially building a NixOS machine where every package is the Guix equivalent.
Developers can now mix Guix and Nix packages in the same flake, accessing Guix-only packages like guile-png without needing Guix installed.