git-subtree-dir: third_party/nix
git-subtree-mainline: cf8cd640c1
git-subtree-split: be66c7a6b24e3c3c6157fd37b86c7203d14acf10
		
	
			
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <section 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="ssec-copy-closure">
 | ||
| 
 | ||
| <title>Copying Closures Via SSH</title>
 | ||
| 
 | ||
| <para>The command <command
 | ||
| linkend="sec-nix-copy-closure">nix-copy-closure</command> copies a Nix
 | ||
| store path along with all its dependencies to or from another machine
 | ||
| via the SSH protocol.  It doesn’t copy store paths that are already
 | ||
| present on the target machine.  For example, the following command
 | ||
| copies Firefox with all its dependencies:
 | ||
| 
 | ||
| <screen>
 | ||
| $ nix-copy-closure --to alice@itchy.example.org $(type -p firefox)</screen>
 | ||
| 
 | ||
| See <xref linkend='sec-nix-copy-closure' /> for details.</para>
 | ||
| 
 | ||
| <para>With <command linkend='refsec-nix-store-export'>nix-store
 | ||
| --export</command> and <command
 | ||
| linkend='refsec-nix-store-import'>nix-store --import</command> you can
 | ||
| write the closure of a store path (that is, the path and all its
 | ||
| dependencies) to a file, and then unpack that file into another Nix
 | ||
| store.  For example,
 | ||
| 
 | ||
| <screen>
 | ||
| $ nix-store --export $(nix-store -qR $(type -p firefox)) > firefox.closure</screen>
 | ||
| 
 | ||
| writes the closure of Firefox to a file.  You can then copy this file
 | ||
| to another machine and install the closure:
 | ||
| 
 | ||
| <screen>
 | ||
| $ nix-store --import < firefox.closure</screen>
 | ||
| 
 | ||
| Any store paths in the closure that are already present in the target
 | ||
| store are ignored.  It is also possible to pipe the export into
 | ||
| another command, e.g. to copy and install a closure directly to/on
 | ||
| another machine:
 | ||
| 
 | ||
| <screen>
 | ||
| $ nix-store --export $(nix-store -qR $(type -p firefox)) | bzip2 | \
 | ||
|     ssh alice@itchy.example.org "bunzip2 | nix-store --import"</screen>
 | ||
| 
 | ||
| However, <command>nix-copy-closure</command> is generally more
 | ||
| efficient because it only copies paths that are not already present in
 | ||
| the target Nix store.</para>
 | ||
| 
 | ||
| </section>
 |