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>
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ depot, lib, pkgs, ... }:
 | 
						||
 | 
						||
let
 | 
						||
 | 
						||
  inherit (depot.nix.yants)
 | 
						||
    defun
 | 
						||
    list
 | 
						||
    drv
 | 
						||
    ;
 | 
						||
 | 
						||
  /* Realize drvDeps, then return drvOut if that succeds.
 | 
						||
   * This can be used to make drvOut depend on the
 | 
						||
   * build success of all drvDeps without making each drvDep
 | 
						||
   * a dependency of drvOut.
 | 
						||
   * => drvOut is not rebuilt if drvDep changes
 | 
						||
   */
 | 
						||
  drvSeqL = defun [ (list drv) drv drv ]
 | 
						||
    (drvDeps: drvOut:
 | 
						||
      let
 | 
						||
        drvOutOutputs = drvOut.outputs or [ "out" ];
 | 
						||
      in
 | 
						||
      pkgs.runCommandLocal drvOut.name
 | 
						||
        {
 | 
						||
          # we inherit all attributes in order to replicate
 | 
						||
          # the original derivation as much as possible
 | 
						||
          outputs = drvOutOutputs;
 | 
						||
          passthru = drvOut.drvAttrs;
 | 
						||
          # depend on drvDeps (by putting it in builder context)
 | 
						||
          inherit drvDeps;
 | 
						||
        }
 | 
						||
        # the outputs of the original derivation are replicated
 | 
						||
        # by creating a symlink to the old output path
 | 
						||
        (lib.concatMapStrings
 | 
						||
          (output: ''
 | 
						||
            target=${lib.escapeShellArg drvOut.${output}}
 | 
						||
            # if the target is already a symlink, follow it until it’s not;
 | 
						||
            # this is done to prevent too many dereferences
 | 
						||
            target=$(readlink -e "$target")
 | 
						||
            # link to the output
 | 
						||
            ln -s "$target" "${"$"}${output}"
 | 
						||
          '')
 | 
						||
          drvOutOutputs));
 | 
						||
 | 
						||
in
 | 
						||
{
 | 
						||
  __functor = _: drvSeqL;
 | 
						||
}
 |