Upstream nixpkgs removed a lot of aliases this time, so we needed to do the following transformations. It's a real shame that aliases only really become discoverable easily when they are removed. * runCommandNoCC -> runCommand * gmailieer -> lieer We also need to work around the fact that home-manager hasn't catched on to this rename. * mysql -> mariadb * pkgconfig -> pkg-config This also affects our Nix fork which needs to be bumped. * prometheus_client -> prometheus-client * rxvt_unicode -> rxvt-unicode-unwrapped * nix-review -> nixpkgs-review * oauth2_proxy -> oauth2-proxy Additionally, some Go-related builders decided to drop support for passing the sha256 hash in directly, so we need to use the generic hash arguments. Change-Id: I84aaa225ef18962937f8616a9ff064822f0d5dc3 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6792 Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi> Reviewed-by: flokli <flokli@flokli.de> Reviewed-by: tazjin <tazjin@tvl.su> Reviewed-by: wpcarro <wpcarro@gmail.com>
		
			
				
	
	
		
			97 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
# Creates an output containing the logo in SVG format (animated and
 | 
						|
# static, one for each background colour) and without animations in
 | 
						|
# PNG.
 | 
						|
{ depot, lib, pkgs, ... }:
 | 
						|
 | 
						|
let
 | 
						|
  palette = {
 | 
						|
    purple = "#CC99C9";
 | 
						|
    blue = "#9EC1CF";
 | 
						|
    green = "#9EE09E";
 | 
						|
    yellow = "#FDFD97";
 | 
						|
    orange = "#FEB144";
 | 
						|
    red = "#FF6663";
 | 
						|
  };
 | 
						|
 | 
						|
  staticCss = colour: ''
 | 
						|
    #armchair-background {
 | 
						|
      fill: ${colour};
 | 
						|
    }
 | 
						|
  '';
 | 
						|
 | 
						|
  # Create an animated CSS that equally spreads out the colours over
 | 
						|
  # the animation duration (1min).
 | 
						|
  animatedCss = colours:
 | 
						|
    let
 | 
						|
      # Calculate at which percentage offset each colour should appear.
 | 
						|
      stepSize = 100 / ((builtins.length colours) - 1);
 | 
						|
      frames = lib.imap0 (idx: colour: { inherit colour; at = idx * stepSize; }) colours;
 | 
						|
      frameCss = frame: "${toString frame.at}% { fill: ${frame.colour}; }";
 | 
						|
    in
 | 
						|
    ''
 | 
						|
      #armchair-background {
 | 
						|
        animation: 30s infinite alternate armchairPalette;
 | 
						|
      }
 | 
						|
 | 
						|
      @keyframes armchairPalette {
 | 
						|
      ${lib.concatStringsSep "\n" (map frameCss frames)}
 | 
						|
      }
 | 
						|
    '';
 | 
						|
 | 
						|
  # Dark version of the logo, suitable for light backgrounds.
 | 
						|
  darkCss = armchairCss: ''
 | 
						|
    .structure {
 | 
						|
      fill: #383838;
 | 
						|
    }
 | 
						|
    #letters {
 | 
						|
      fill: #fefefe;
 | 
						|
    }
 | 
						|
    ${armchairCss}
 | 
						|
  '';
 | 
						|
 | 
						|
  # Light version, suitable for dark backgrounds.
 | 
						|
  lightCss = armchairCss: ''
 | 
						|
    .structure {
 | 
						|
      fill: #e4e4ef;
 | 
						|
    }
 | 
						|
    #letters {
 | 
						|
      fill: #181818;
 | 
						|
    }
 | 
						|
    ${armchairCss}
 | 
						|
  '';
 | 
						|
 | 
						|
  logoShapes = builtins.readFile ./logo-shapes.svg;
 | 
						|
  logoSvg = style: ''
 | 
						|
    <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="420 860 1640 1500"
 | 
						|
         xmlns:xlink="http://www.w3.org/1999/xlink">
 | 
						|
      <style>${style}</style>
 | 
						|
      ${logoShapes}
 | 
						|
    </svg>
 | 
						|
  '';
 | 
						|
 | 
						|
in
 | 
						|
depot.nix.readTree.drvTargets (lib.fix (self: {
 | 
						|
  # Expose the logo construction functions.
 | 
						|
  inherit palette darkCss lightCss animatedCss staticCss;
 | 
						|
 | 
						|
  # Create a TVL logo SVG with the specified style.
 | 
						|
  logoSvg = style: pkgs.writeText "logo.svg" (logoSvg style);
 | 
						|
 | 
						|
  # Create a PNG of the TVL logo with the specified style and DPI.
 | 
						|
  logoPng = style: dpi: pkgs.runCommand "logo.png" { } ''
 | 
						|
    ${pkgs.inkscape}/bin/inkscape \
 | 
						|
      --export-area-drawing \
 | 
						|
      --export-background-opacity 0 \
 | 
						|
      --export-dpi ${toString dpi} \
 | 
						|
      ${self.logoSvg style} -o $out
 | 
						|
  '';
 | 
						|
 | 
						|
  # Animated dark SVG logo with all colours.
 | 
						|
  pastelRainbow = self.logoSvg (darkCss (animatedCss (lib.attrValues palette)));
 | 
						|
}
 | 
						|
 | 
						|
  # Add individual outputs for static dark logos of each colour.
 | 
						|
  // (lib.mapAttrs'
 | 
						|
  (k: v: lib.nameValuePair "${k}Png"
 | 
						|
    (self.logoPng (darkCss (staticCss v)) 96))
 | 
						|
  palette)))
 |