| 
									
										
										
										
											2018-07-20 20:56:59 +00:00
										 |  |  | { lib, ... }: | 
					
						
							| 
									
										
										
										
											2014-08-25 00:46:23 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | with lib; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | let | 
					
						
							|  |  |  |   maintainer = mkOptionType { | 
					
						
							|  |  |  |     name = "maintainer"; | 
					
						
							|  |  |  |     check = email: elem email (attrValues lib.maintainers); | 
					
						
							|  |  |  |     merge = loc: defs: listToAttrs (singleton (nameValuePair (last defs).file (last defs).value)); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   listOfMaintainers = types.listOf maintainer // { | 
					
						
							|  |  |  |     # Returns list of | 
					
						
							|  |  |  |     #   { "module-file" = [ | 
					
						
							|  |  |  |     #        "maintainer1 <first@nixos.org>" | 
					
						
							|  |  |  |     #        "maintainer2 <second@nixos.org>" ]; | 
					
						
							|  |  |  |     #   } | 
					
						
							|  |  |  |     merge = loc: defs: | 
					
						
							|  |  |  |       zipAttrs | 
					
						
							| 
									
										
										
										
											2017-07-04 23:29:23 +01:00
										 |  |  |         (flatten (imap1 (n: def: imap1 (m: def': | 
					
						
							| 
									
										
										
										
											2014-08-25 00:46:23 +02:00
										 |  |  |           maintainer.merge (loc ++ ["[${toString n}-${toString m}]"]) | 
					
						
							|  |  |  |             [{ inherit (def) file; value = def'; }]) def.value) defs)); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   docFile = types.path // { | 
					
						
							|  |  |  |     # Returns tuples of | 
					
						
							|  |  |  |     #   { file = "module location"; value = <path/to/doc.xml>; } | 
					
						
							|  |  |  |     merge = loc: defs: defs; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | in | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |   options = { | 
					
						
							|  |  |  |     meta = { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       maintainers = mkOption { | 
					
						
							|  |  |  |         type = listOfMaintainers; | 
					
						
							|  |  |  |         internal = true; | 
					
						
							|  |  |  |         default = []; | 
					
						
							|  |  |  |         example = [ lib.maintainers.all ]; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							| 
									
										
										
										
											2016-05-09 14:53:27 +09:00
										 |  |  |           List of maintainers of each module.  This option should be defined at | 
					
						
							| 
									
										
										
										
											2014-08-25 00:46:23 +02:00
										 |  |  |           most once per module. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       doc = mkOption { | 
					
						
							|  |  |  |         type = docFile; | 
					
						
							|  |  |  |         internal = true; | 
					
						
							|  |  |  |         example = "./meta.xml"; | 
					
						
							|  |  |  |         description = ''
 | 
					
						
							| 
									
										
										
										
											2016-05-09 14:53:27 +09:00
										 |  |  |           Documentation prologe for the set of options of each module.  This | 
					
						
							| 
									
										
										
										
											2014-08-25 00:46:23 +02:00
										 |  |  |           option should be defined at most once per module. | 
					
						
							|  |  |  |         '';
 | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-09 14:53:27 +09:00
										 |  |  |   meta.maintainers = singleton lib.maintainers.pierron; | 
					
						
							| 
									
										
										
										
											2014-08-25 00:46:23 +02:00
										 |  |  | } |