This CL can be used to compare the style of nixpkgs-fmt against other formatters (nixpkgs, alejandra). Change-Id: I87c6abff6bcb546b02ead15ad0405f81e01b6d9e Reviewed-on: https://cl.tvl.fyi/c/depot/+/4397 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Reviewed-by: wpcarro <wpcarro@gmail.com> Reviewed-by: Profpatsch <mail@profpatsch.de> Reviewed-by: kanepyork <rikingcoding@gmail.com> Reviewed-by: tazjin <tazjin@tvl.su> Reviewed-by: cynthia <cynthia@tvl.fyi> Reviewed-by: edef <edef@edef.eu> Reviewed-by: eta <tvl@eta.st> Reviewed-by: grfn <grfn@gws.fyi>
		
			
				
	
	
		
			103 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { depot, pkgs, lib, ... }:
 | |
| 
 | |
| let
 | |
|   inherit (pkgs)
 | |
|     gzip
 | |
|     mandoc
 | |
|     coreutils
 | |
|     ;
 | |
| 
 | |
|   inherit (depot.nix)
 | |
|     runExecline
 | |
|     getBins
 | |
|     ;
 | |
| 
 | |
|   bins = getBins mandoc [ "mandoc" ]
 | |
|     // getBins gzip [ "gzip" ]
 | |
|     // getBins coreutils [ "mkdir" "ln" "cp" ]
 | |
|   ;
 | |
| 
 | |
|   defaultGzip = true;
 | |
| 
 | |
|   basename = gzip: { name, section, ... }:
 | |
|     "${name}.${toString section}${lib.optionalString gzip ".gz"}";
 | |
| 
 | |
|   manDir = { section, ... }:
 | |
|     "\${out}/share/man/man${toString section}";
 | |
| 
 | |
|   target = gzip: args:
 | |
|     "${manDir args}/${basename gzip args}";
 | |
| 
 | |
|   buildManPage =
 | |
|     { requireLint ? false
 | |
|     , gzip ? defaultGzip
 | |
|     , ...
 | |
|     }:
 | |
|     { content
 | |
|     , ...
 | |
|     }@page:
 | |
|     let
 | |
|       source = builtins.toFile (basename false page) content;
 | |
|     in
 | |
|     runExecline (basename gzip page) { } ([
 | |
|       (if requireLint then "if" else "foreground")
 | |
|       [
 | |
|         bins.mandoc
 | |
|         "-mdoc"
 | |
|         "-T"
 | |
|         "lint"
 | |
|         source
 | |
|       ]
 | |
|       "importas"
 | |
|       "out"
 | |
|       "out"
 | |
|     ] ++ (if gzip then [
 | |
|       "redirfd"
 | |
|       "-w"
 | |
|       "1"
 | |
|       "$out"
 | |
|       bins.gzip
 | |
|       "-c"
 | |
|       source
 | |
|     ] else [
 | |
|       bins.cp
 | |
|       "--reflink=auto"
 | |
|       source
 | |
|       "$out"
 | |
|     ]));
 | |
| 
 | |
|   buildManPages =
 | |
|     name:
 | |
|     { derivationArgs ? { }
 | |
|     , gzip ? defaultGzip
 | |
|     , ...
 | |
|     }@args:
 | |
|     pages:
 | |
|     runExecline "${name}-man-pages"
 | |
|       {
 | |
|         inherit derivationArgs;
 | |
|       }
 | |
|       ([
 | |
|         "importas"
 | |
|         "out"
 | |
|         "out"
 | |
|       ] ++ lib.concatMap
 | |
|         ({ name, section, content }@page: [
 | |
|           "if"
 | |
|           [ bins.mkdir "-p" (manDir page) ]
 | |
|           "if"
 | |
|           [
 | |
|             bins.ln
 | |
|             "-s"
 | |
|             (buildManPage args page)
 | |
|             (target gzip page)
 | |
|           ]
 | |
|         ])
 | |
|         pages);
 | |
| 
 | |
| in
 | |
| {
 | |
|   __functor = _: buildManPages;
 | |
| 
 | |
|   single = buildManPage;
 | |
| }
 |