diff options
Diffstat (limited to 'nixos/doc/manual/from_md/administration/cleaning-store.chapter.xml')
-rw-r--r-- | nixos/doc/manual/from_md/administration/cleaning-store.chapter.xml | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/nixos/doc/manual/from_md/administration/cleaning-store.chapter.xml b/nixos/doc/manual/from_md/administration/cleaning-store.chapter.xml new file mode 100644 index 00000000000..4243d2bf53f --- /dev/null +++ b/nixos/doc/manual/from_md/administration/cleaning-store.chapter.xml @@ -0,0 +1,72 @@ +<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="sec-nix-gc"> + <title>Cleaning the Nix Store</title> + <para> + Nix has a purely functional model, meaning that packages are never + upgraded in place. Instead new versions of packages end up in a + different location in the Nix store (<literal>/nix/store</literal>). + You should periodically run Nix’s <emphasis>garbage + collector</emphasis> to remove old, unreferenced packages. This is + easy: + </para> + <programlisting> +$ nix-collect-garbage +</programlisting> + <para> + Alternatively, you can use a systemd unit that does the same in the + background: + </para> + <programlisting> +# systemctl start nix-gc.service +</programlisting> + <para> + You can tell NixOS in <literal>configuration.nix</literal> to run + this unit automatically at certain points in time, for instance, + every night at 03:15: + </para> + <programlisting language="bash"> +nix.gc.automatic = true; +nix.gc.dates = "03:15"; +</programlisting> + <para> + The commands above do not remove garbage collector roots, such as + old system configurations. Thus they do not remove the ability to + roll back to previous configurations. The following command deletes + old roots, removing the ability to roll back to them: + </para> + <programlisting> +$ nix-collect-garbage -d +</programlisting> + <para> + You can also do this for specific profiles, e.g. + </para> + <programlisting> +$ nix-env -p /nix/var/nix/profiles/per-user/eelco/profile --delete-generations old +</programlisting> + <para> + Note that NixOS system configurations are stored in the profile + <literal>/nix/var/nix/profiles/system</literal>. + </para> + <para> + Another way to reclaim disk space (often as much as 40% of the size + of the Nix store) is to run Nix’s store optimiser, which seeks out + identical files in the store and replaces them with hard links to a + single copy. + </para> + <programlisting> +$ nix-store --optimise +</programlisting> + <para> + Since this command needs to read the entire Nix store, it can take + quite a while to finish. + </para> + <section xml:id="sect-nixos-gc-boot-entries"> + <title>NixOS Boot Entries</title> + <para> + If your <literal>/boot</literal> partition runs out of space, + after clearing old profiles you must rebuild your system with + <literal>nixos-rebuild boot</literal> or + <literal>nixos-rebuild switch</literal> to update the + <literal>/boot</literal> partition and clear space. + </para> + </section> +</chapter> |