| 
									
										
										
										
											2009-06-10 13:40:35 +00:00
										 |  |  | { stdenv, squashfsTools, perl, pathsFromGraph | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | , # The root directory of the squashfs filesystem is filled with the | 
					
						
							|  |  |  |   # closures of the Nix store paths listed here. | 
					
						
							|  |  |  |   storeContents ? [] | 
					
						
							|  |  |  | }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | stdenv.mkDerivation { | 
					
						
							|  |  |  |   name = "squashfs.img"; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-10 13:40:35 +00:00
										 |  |  |   buildInputs = [perl squashfsTools]; | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-10 13:40:35 +00:00
										 |  |  |   # For obtaining the closure of `storeContents'. | 
					
						
							|  |  |  |   exportReferencesGraph = | 
					
						
							|  |  |  |     map (x: [("closure-" + baseNameOf x) x]) storeContents; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   buildCommand = | 
					
						
							|  |  |  |     ''
 | 
					
						
							|  |  |  |       # Add the closures of the top-level store objects. | 
					
						
							|  |  |  |       storePaths=$(perl ${pathsFromGraph} closure-*) | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-06-10 13:40:35 +00:00
										 |  |  |       # Also include a manifest of the closures in a format suitable | 
					
						
							|  |  |  |       # for nix-store --load-db. | 
					
						
							|  |  |  |       printRegistration=1 perl ${pathsFromGraph} closure-* > nix-path-registration | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # Generate the squashfs image. | 
					
						
							|  |  |  |       mksquashfs nix-path-registration $storePaths $out \ | 
					
						
							|  |  |  |         -keep-as-directory -all-root | 
					
						
							|  |  |  |     '';
 | 
					
						
							|  |  |  | } |