 5f8d14546b
			
		
	
	
		5f8d14546b
		
	
	
	
	
		
			
			* manual: Mark commands that require root Mark every command that requires to be run as root by prefixing them with '#' instead of '$'. * manual: Add note about commands that require root
		
			
				
	
	
		
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <chapter xmlns="http://docbook.org/ns/docbook"
 | ||
|         xmlns:xlink="http://www.w3.org/1999/xlink"
 | ||
|         xmlns:xi="http://www.w3.org/2001/XInclude"
 | ||
|         version="5.0"
 | ||
|         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 (<filename>/nix/store</filename>).
 | ||
| You should periodically run Nix’s <emphasis>garbage
 | ||
| collector</emphasis> to remove old, unreferenced packages.  This is
 | ||
| easy:
 | ||
| 
 | ||
| <screen>
 | ||
| $ nix-collect-garbage
 | ||
| </screen>
 | ||
| 
 | ||
| Alternatively, you can use a systemd unit that does the same in the
 | ||
| background:
 | ||
| 
 | ||
| <screen>
 | ||
| # systemctl start nix-gc.service
 | ||
| </screen>
 | ||
| 
 | ||
| You can tell NixOS in <filename>configuration.nix</filename> to run
 | ||
| this unit automatically at certain points in time, for instance, every
 | ||
| night at 03:15:
 | ||
| 
 | ||
| <programlisting>
 | ||
| nix.gc.automatic = true;
 | ||
| nix.gc.dates = "03:15";
 | ||
| </programlisting>
 | ||
| 
 | ||
| </para>
 | ||
| 
 | ||
| <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:
 | ||
| <screen>
 | ||
| $ nix-collect-garbage -d
 | ||
| </screen>
 | ||
| You can also do this for specific profiles, e.g.
 | ||
| <screen>
 | ||
| $ nix-env -p /nix/var/nix/profiles/per-user/eelco/profile --delete-generations old
 | ||
| </screen>
 | ||
| Note that NixOS system configurations are stored in the profile
 | ||
| <filename>/nix/var/nix/profiles/system</filename>.</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.
 | ||
| <screen>
 | ||
| $ nix-store --optimise
 | ||
| </screen>
 | ||
| Since this command needs to read the entire Nix store, it can take
 | ||
| quite a while to finish.</para>
 | ||
| 
 | ||
| </chapter>
 |