Hi, (Sorry for the duplicate email, I forgot to CC help-guix.)
Esteban Venialgo <[email protected]> writes: > [...] I'd like to understand a bit better the file system > structure. Is there any guide that explains, for instance, what is > inside /run/current-system, or /gnu/store, or /var/guix? I am not aware of such a guide, but there might be a Guix Days talk about it. In any case, here is a brief answer. It might be incomplete, but hopefully contains interesting elements. Feel free to ask follow-up questions that I (or others) can answer. On /gnu/store: `````````````` Guix users can¹ use declarative programming to describe the system they expect at different levels: system-wide configuration [1], user-wide configuration [2], profiles (collection of packages) [3], individual Guix packages [4], ... ¹: other users may use the command-line for some of these operations (e.g., install/update packages) without editing Scheme files From these declarations, Guix builds files and directories, located in /gnu/store/. These correspond to, for example, package contents (binaries, libraries, images, etc.). Only Guix should add to this directory, which is read-only for normal users. For example, running `guix build hello` in a terminal prints `/gnu/store/ab584kfyc7pymc1cmdrkwzz3lwv86yf6-hello-2.12.3`. Inside this directory, you will find files pertaining to the GNU Hello package. The first part of the name can be ignored and is derived from the package declaration and its dependencies. This way, if a dependency changes, so does this prefix. Note: Every file in /gnu/store should be reproducible. On /run/current-system: ``````````````````````` This is a symlink to your current system (by default configured via /etc/config.scm during the installation IIRC). It contains: - files/packages available system-wide (in profile), - how to "activate" this system generation (startup files), - the kernel and boot-related files, - information to reproduce this directory: channels.scm, configuration.scm, and provenance. You can run `ls -l /run/current-system` to see its path in /gnu/store. Note: Home configurations are similar to system configurations. Running `guix home build /path/to/config/file.scm` prints a directory path (/gnu/store/...-home). Inside, one can find files to install in $HOME (in files/), configuration.scm, a profile, ... On /var/guix: ````````````` This directory contains stateful information used by Guix and which is preserved on reboot. For example, /var/guix/profiles/ is used to make sure that `guix gc` does not remove files currently in-use. Documentation links below can be visited (without Emacs) by: - executing `info "(guix)..."` in the terminal, or - finding the chapters in the online manual, available at https://guix.gnu.org/manual/devel/en/html_node/ [1] See (info "(guix)Using the Configuration System") [2] See (info "(guix)Declaring the Home Environment") [3] See (info "(guix)Writing Manifests") [4] See (info "(guix)Defining Packages") HTH! -- Arnaud
signature.asc
Description: PGP signature
