GuixPkgs: every Guix package, as a Nix flake

Lobsters Hottest Tools

Summary

GuixPkgs is a project that makes every GNU Guix package available as a Nix flake, allowing users to mix Guix and Nixpkgs packages in a single flake. It uses guix-transfer to convert Guix derivations to Nix derivations and provides a binary cache to avoid rebuilding the entire Guix bootstrap.

<p><a href="https://lobste.rs/s/rm7qnt/guixpkgs_every_guix_package_as_nix_flake">Comments</a></p>
Original Article
View Cached Full Text

Cached at: 06/26/26, 02:09 PM

# GuixPkgs: every Guix package, as a Nix flake Source: [https://fzakaria.com/2026/06/25/guixpkgs-every-guix-package-as-a-nix-flake](https://fzakaria.com/2026/06/25/guixpkgs-every-guix-package-as-a-nix-flake) Published 2026\-06\-25 on[Farid Zakaria's Blog](https://fzakaria.com/) ![GuixPkgs Logo](https://fzakaria.com/assets/images/guixpkgs-logo.png) I wrote earlier about what I believe to be an*absurd idea*,[The Guix Nix Abomination](https://fzakaria.com/2026/06/05/the-guix-nix-abomination-leveraging-guix-derivations-in-nix): a tool,[guix\-transfer](https://github.com/fzakaria/guix-transfer), that takes**any**Guix derivation and rewrites it into a Nix derivation, and lets`nix\-daemon`build it\. With this primitive in hand, I pondered what it would mean to**import the entire Guix package set**into Nix\. > That means we could even build a`flake`that is all of Guix packages available for use\. Well…\. Hello[GuixPkgs](https://github.com/fzakaria/guixpkgs)\. 🤯 [Nixpkgs](https://github.com/NixOS/nixpkgs)is famously the largest package repository in the world\. GuixPkgs makes it bigger by including in the*entire*GNU Guix package set so you can mix and match Guix and Nixpkgs packages in the same flake\. ``` { description = "A project mixing Nix and Guix"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; guixpkgs.url = "github:fzakaria/guixpkgs"; }; outputs = { self, nixpkgs, guixpkgs }: let system = "x86_64-linux"; pkgs = nixpkgs.legacyPackages.${system}; guixPkgs = guixpkgs.packages.${system}; in { devShells.${system}.default = pkgs.mkShell { buildInputs = [ pkgs.git # from Nixpkgs guixPkgs.hello # from Guix, via GuixPkgs ]; }; }; } ``` ``` ❯ nix build github:fzakaria/guixpkgs#hello ❯ ./result/bin/hello Hello, world! ``` ☝ Don’t forget, that`hello`is built from Guix’s source bootstrap, a 357\-byte seed all the way up to GCC and glibc but it lands in`/nix/store`and behaves like any other Nix package\. No`guix`required on the consuming side\. Is this just a joke or is there anything of value here? Well, some packages only exist in Guix, notable many GNU Guile built software, like[guile\-png](https://github.com/artyom-poptsov/guile-png)that are now easily available in Nix\. 🤷 How does it work? 1. Pins a Guix commit and uses`guix time\-machine`to get derivations from*that exact*Guix thus decoupling the result from whatever`guix\-daemon`version happens to be on the host\. 2. Dumps every package’s`\.drv`and feeds them to`guix\-transfer \-\-disable\-tests \-\-emit\-nix\-dir pkgs`\. 3. Rebuilds the`by\-name/`index and records the Guix channel \+ commit \+ timestamp in`guix\-metadata\.json`\. Realising a Guix package under Nix recompiles Guix’s**entire source bootstrap**\. That’s*hours*per closure\. To skip it, GuixPkgs ships a[Cachix](https://www.cachix.org/),`cachix use guixpkgs`, binary cache that is included in the flake\. Thank you[@domenkozar](https://github.com/domenkozar)for sponsoring me with extra storage\. 🙏 What’s next? We can now do some truly horrendous evil stuff\. What about an overlay that replaces every package from Nixpkgs which one that exists in Guix? 😈 We can then build a NixOS machine where every package is the Guix equivalent 😱\. This was a really fun project to pursue during[TacoSprint](https://tacosprint.org/)\. [![taco sprint group photo](https://fzakaria.com/assets/images/tacosprint_group_50p.jpg)](https://fzakaria.com/assets/images/tacosprint_group.jpg) --- [Improve this page @ 9991133](https://github.com/fzakaria/fzakaria.com/tree/9991133c6c9f27b84bc88507a892529b137df450/_posts/2026-06-25-guixpkgs-every-guix-package-as-a-nix-flake.md) The content for this site is[CC\-BY\-SA](https://creativecommons.org/licenses/by-sa/2.0/)\.

Similar Articles

Nix Flakes and their Guix Equivalents

Lobsters Hottest

A detailed comparison between Nix Flakes and their equivalents in the Guix package management system, covering dependency declarations, pinning, purity, outputs, development environments, and system configuration.

Understanding Nix flakes

Lobsters Hottest

An LWN deep dive into Nix flakes, the experimental Nix feature that pins dependencies via flake.nix and flake.lock files to enable reproducible, distribution-independent development environments, along with their history and uncertain stabilization path.

One Nix flake to rule them all

Hacker News Top

The article introduces omniflake, a Nix tool that consolidates thousands of flakes into a single input to simplify dependency management and improve user experience in Nix-based systems.

nixpkgs-multiverse: every version that ever existed

Lobsters Hottest

nixpkgs-multiverse is a Nix flake that provides access to every version of every package that ever existed in Nixpkgs, allowing users to easily pin and mix historical package versions without multiple flake inputs.