Linux

Where Does GNU Guix Store Packages and Profiles?

Guix stores packages in /gnu/store, user profiles in ~/.guix-profile, and channels in ~/.config/guix.

Last updated

Guix centers on three locations. The store at /gnu holds every package version in content addressed isolation. Profiles (symlink forests into the store) give each user a working set, defaulting to ~/.guix-profile. Channels listed in ~/.config/guix/channels.scm decide where packages come from.

Home environments add ~/.guix-home provenance plus per user generation links under the profiles tree. Because store paths hash their inputs, copying configs reproduces environments bit for bit instead of approximately.

Where Guix stores this, by platform

Linux
/gnu/store

Content addressed package store plus per user profiles. Default user profile links here; Guix commands profile sits in config guix.

Linux
~/.config/guix/channels.scm

Channel list for pulls. Home environment declarations live as sibling files. Version control this directory to version the system.

Frequently asked questions

How do I reproduce my Guix setup elsewhere?

Copy channels.scm and the home config, then pull and reconfigure on the new machine. Store paths are content addressed and rebuild identically.

How do I roll back a Guix profile?

Run the list generations command for the profile, then switch or delete by number. Rollback is just activating the previous generation link.

How do I add a third party channel?

Add it to channels.scm and pull. The default Savannah channel stays unless replaced, so third party repos extend rather than swap.

Notice an outdated path? Let us know.