| 
									
										
										
										
											2006-11-17 14:13:21 +00:00
										 |  |  | { stdenv, cdrtools | 
					
						
							| 
									
										
										
										
											2006-11-02 17:56:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # The file name of the resulting ISO image. | 
					
						
							|  |  |  | , isoName ? "cd.iso" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | , # The files and directories to be placed in the ISO file system. | 
					
						
							|  |  |  |   # This is a list of attribute sets {source, target} where `source' | 
					
						
							|  |  |  |   # is the file system object (regular file or directory) to be | 
					
						
							|  |  |  |   # grafted in the file system at path `target'. | 
					
						
							|  |  |  |   contents | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-17 14:13:21 +00:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2006-11-03 23:41:57 +00:00
										 |  |  | , # In addition to `contents', the closure of the store paths listed | 
					
						
							|  |  |  |   # in `packages' are also placed in the file system. | 
					
						
							|  |  |  |   packages ? [] | 
					
						
							| 
									
										
										
										
											2006-11-17 14:13:21 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2006-11-03 23:41:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | , # `init' should be a store path, the closure of which is added to | 
					
						
							|  |  |  |   # the image, just like `packages'.  However, in addition, a symlink | 
					
						
							|  |  |  |   # `/init' to `init' will be created. | 
					
						
							|  |  |  |   init ? null | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-11-02 17:56:50 +00:00
										 |  |  |   # Whether this should be an El-Torito bootable CD. | 
					
						
							|  |  |  | , bootable ? false | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # The path (in the ISO file system) of the boot image. | 
					
						
							|  |  |  | , bootImage ? "" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | assert bootable -> bootImage != ""; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | stdenv.mkDerivation { | 
					
						
							|  |  |  |   name = "iso9660-image"; | 
					
						
							|  |  |  |   builder = ./make-iso9660-image.sh; | 
					
						
							| 
									
										
										
										
											2006-11-17 14:13:21 +00:00
										 |  |  |   buildInputs = [cdrtools]; | 
					
						
							|  |  |  |   inherit isoName init bootable bootImage; | 
					
						
							| 
									
										
										
										
											2006-11-03 23:41:57 +00:00
										 |  |  |   sources = map ({source, target}: source) contents; | 
					
						
							|  |  |  |   targets = map ({source, target}: target) contents; | 
					
						
							| 
									
										
										
										
											2006-11-17 14:13:21 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   # For obtaining the closure of `init'. | 
					
						
							|  |  |  |   exportReferencesGraph = ["init-closure" init]; | 
					
						
							|  |  |  |   pathsFromGraph = ./paths-from-graph.sh; | 
					
						
							| 
									
										
										
										
											2006-11-02 17:56:50 +00:00
										 |  |  | } |