| 
									
										
										
										
											2009-09-18 15:10:32 +00:00
										 |  |  | { pkgs, options | 
					
						
							|  |  |  | # revision can have multiple values: local, HEAD or any revision number. | 
					
						
							|  |  |  | , revision ? "HEAD" | 
					
						
							|  |  |  | }: | 
					
						
							| 
									
										
										
										
											2008-06-05 15:33:17 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | let | 
					
						
							| 
									
										
										
										
											2009-10-05 23:15:06 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-21 09:08:55 +00:00
										 |  |  |   # To prevent infinite recursion, remove system.path from the | 
					
						
							|  |  |  |   # options.  Not sure why this happens. | 
					
						
							| 
									
										
										
										
											2009-09-15 14:09:18 +00:00
										 |  |  |   options_ = | 
					
						
							|  |  |  |     options // | 
					
						
							|  |  |  |     { system = removeAttrs options.system ["path"]; }; | 
					
						
							| 
									
										
										
										
											2009-08-21 09:08:55 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-05 23:47:50 +00:00
										 |  |  |   optionsXML = builtins.toFile "options.xml" (builtins.unsafeDiscardStringContext | 
					
						
							| 
									
										
										
										
											2009-09-15 14:09:18 +00:00
										 |  |  |     (builtins.toXML (pkgs.lib.optionAttrSetToDocList "" options_))); | 
					
						
							| 
									
										
										
										
											2008-01-04 14:24:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   optionsDocBook = pkgs.runCommand "options-db.xml" {} ''
 | 
					
						
							| 
									
										
										
										
											2009-10-05 23:47:50 +00:00
										 |  |  |     ${pkgs.libxslt}/bin/xsltproc \ | 
					
						
							|  |  |  |       --stringparam revision '${revision}' \ | 
					
						
							|  |  |  |       -o $out ${./options-to-docbook.xsl} ${optionsXML} | 
					
						
							| 
									
										
										
										
											2008-01-04 14:24:42 +00:00
										 |  |  |   '';
 | 
					
						
							| 
									
										
										
										
											2009-09-18 15:10:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-11 12:28:53 +00:00
										 |  |  | in rec { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Generate the NixOS manual. | 
					
						
							| 
									
										
										
										
											2008-01-04 14:24:42 +00:00
										 |  |  |   manual = pkgs.stdenv.mkDerivation { | 
					
						
							|  |  |  |     name = "nixos-manual"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     sources = pkgs.lib.sourceFilesBySuffices ./. [".xml"]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-11 12:28:53 +00:00
										 |  |  |     buildInputs = [ pkgs.libxml2 pkgs.libxslt ]; | 
					
						
							| 
									
										
										
										
											2008-01-04 14:24:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     xsltFlags = ''
 | 
					
						
							|  |  |  |       --param section.autolabel 1 | 
					
						
							|  |  |  |       --param section.label.includes.component.label 1 | 
					
						
							|  |  |  |       --param html.stylesheet 'style.css' | 
					
						
							|  |  |  |       --param xref.with.number.and.title 1 | 
					
						
							|  |  |  |       --param toc.section.depth 3 | 
					
						
							|  |  |  |       --param admon.style '''
 | 
					
						
							|  |  |  |       --param callout.graphics.extension '.gif' | 
					
						
							|  |  |  |     '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     buildCommand = ''
 | 
					
						
							| 
									
										
										
										
											2009-09-18 15:10:32 +00:00
										 |  |  |       ln -s $sources/*.xml . # */ | 
					
						
							| 
									
										
										
										
											2008-01-04 14:24:42 +00:00
										 |  |  |       ln -s ${optionsDocBook} options-db.xml | 
					
						
							| 
									
										
										
										
											2009-07-14 15:47:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-05 13:17:45 +00:00
										 |  |  |       # Check the validity of the manual sources. | 
					
						
							|  |  |  |       xmllint --noout --nonet --xinclude --noxincludenode \ | 
					
						
							|  |  |  |         --relaxng ${pkgs.docbook5}/xml/rng/docbook/docbook.rng \ | 
					
						
							|  |  |  |         manual.xml | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # Generate the HTML manual. | 
					
						
							| 
									
										
										
										
											2009-07-14 15:47:03 +00:00
										 |  |  |       dst=$out/share/doc/nixos | 
					
						
							|  |  |  |       ensureDir $dst | 
					
						
							| 
									
										
										
										
											2008-01-04 14:24:42 +00:00
										 |  |  |       xsltproc $xsltFlags --nonet --xinclude \ | 
					
						
							| 
									
										
										
										
											2009-10-05 23:15:06 +00:00
										 |  |  |         --output $dst/manual.html \ | 
					
						
							| 
									
										
										
										
											2009-06-05 17:16:42 +00:00
										 |  |  |         ${pkgs.docbook5_xsl}/xml/xsl/docbook/xhtml/docbook.xsl \ | 
					
						
							| 
									
										
										
										
											2008-01-04 14:24:42 +00:00
										 |  |  |         ./manual.xml | 
					
						
							| 
									
										
										
										
											2009-09-18 15:10:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-07-25 11:54:24 -04:00
										 |  |  |       mkdir -p $dst/images/callouts | 
					
						
							|  |  |  |       cp ${pkgs.docbook5_xsl}/xml/xsl/docbook/images/callouts/*.gif $dst/images/callouts/
 | 
					
						
							| 
									
										
										
										
											2013-01-09 13:43:57 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-07-14 15:47:03 +00:00
										 |  |  |       cp ${./style.css} $dst/style.css | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-11 12:28:53 +00:00
										 |  |  |       ensureDir $out/nix-support | 
					
						
							|  |  |  |       echo "doc manual $dst manual.html" >> $out/nix-support/hydra-build-products | 
					
						
							| 
									
										
										
										
											2012-07-25 11:54:24 -04:00
										 |  |  |     ''; # */
 | 
					
						
							| 
									
										
										
										
											2010-08-11 12:28:53 +00:00
										 |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   # Generate the NixOS manpages. | 
					
						
							|  |  |  |   manpages = pkgs.stdenv.mkDerivation { | 
					
						
							|  |  |  |     name = "nixos-manpages"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     sources = pkgs.lib.sourceFilesBySuffices ./. [".xml"]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     buildInputs = [ pkgs.libxml2 pkgs.libxslt ]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     buildCommand = ''
 | 
					
						
							|  |  |  |       ln -s $sources/*.xml . # */ | 
					
						
							|  |  |  |       ln -s ${optionsDocBook} options-db.xml | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # Check the validity of the manual sources. | 
					
						
							|  |  |  |       xmllint --noout --nonet --xinclude --noxincludenode \ | 
					
						
							|  |  |  |         --relaxng ${pkgs.docbook5}/xml/rng/docbook/docbook.rng \ | 
					
						
							|  |  |  |         ./man-pages.xml | 
					
						
							| 
									
										
										
										
											2009-07-14 15:47:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-05 13:17:45 +00:00
										 |  |  |       # Generate manpages. | 
					
						
							| 
									
										
										
										
											2009-07-14 15:47:03 +00:00
										 |  |  |       ensureDir $out/share/man | 
					
						
							|  |  |  |       xsltproc --nonet --xinclude \ | 
					
						
							|  |  |  |         --param man.output.in.separate.dir 1 \ | 
					
						
							|  |  |  |         --param man.output.base.dir "'$out/share/man/'" \ | 
					
						
							| 
									
										
										
										
											2009-10-05 23:15:06 +00:00
										 |  |  |         --param man.endnotes.are.numbered 0 \ | 
					
						
							| 
									
										
										
										
											2009-07-14 15:47:03 +00:00
										 |  |  |         ${pkgs.docbook5_xsl}/xml/xsl/docbook/manpages/docbook.xsl \ | 
					
						
							|  |  |  |         ./man-pages.xml | 
					
						
							| 
									
										
										
										
											2008-01-04 14:24:42 +00:00
										 |  |  |     '';
 | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-14 18:20:50 +00:00
										 |  |  | } |