Use simple string interpolation based approach to templating and allow changing the main body, the title and to inject extra HTML into the head element. Additionally we can use `https://tvl.fyi/` instead of `/` when referring to assets. One limitation currently is that the template only works for index pages (it link to self using `href="/"`), but this should be easy to fix. For atward, instead of using the `onload` attribute of `body`, we now register an event listener in JavaScript which makes the template code less complicated. When building the derivation the template is rendered to HTML and injected into the source. Change-Id: I2ea0c5bf5f6286e781285ade7751a348bab3bdc8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3112 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
		
			
				
	
	
		
			51 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ depot, pkgs, ... }:
 | 
						|
 | 
						|
let
 | 
						|
  inherit (pkgs) graphviz runCommandNoCC writeText;
 | 
						|
 | 
						|
  tvlGraph = runCommandNoCC "tvl.svg" {
 | 
						|
    nativeBuildInputs = with pkgs; [ fontconfig freetype cairo jetbrains-mono ];
 | 
						|
  } ''
 | 
						|
    ${graphviz}/bin/neato -Tsvg ${./tvl.dot} > $out
 | 
						|
  '';
 | 
						|
 | 
						|
  homepage = depot.web.tvl.template {
 | 
						|
    title = "The Virus Lounge";
 | 
						|
    content = ''
 | 
						|
      <main>
 | 
						|
        <img alt="The Virus Lounge" src="/static/virus_lounge.webp">
 | 
						|
      </main>
 | 
						|
 | 
						|
      <p>
 | 
						|
        Welcome to <b>The Virus Lounge</b>. We're a random group of
 | 
						|
        people who feel undersocialised in these trying times, and
 | 
						|
        we've decided that there isn't enough spontaneous socialising
 | 
						|
        on the internet.
 | 
						|
      </p>
 | 
						|
 | 
						|
      <hr>
 | 
						|
      <h2>Where did all these people come from?</h2>
 | 
						|
 | 
						|
      <p>
 | 
						|
        It's pretty straightforward. Feel free to click on people, too.
 | 
						|
      </p>
 | 
						|
      ${builtins.readFile tvlGraph}
 | 
						|
    '';
 | 
						|
    extraHead = ''
 | 
						|
      <style>
 | 
						|
        svg {
 | 
						|
          max-width: inherit;
 | 
						|
          height: auto;
 | 
						|
        }
 | 
						|
      </style>
 | 
						|
    '';
 | 
						|
  };
 | 
						|
in runCommandNoCC "website" {} ''
 | 
						|
  mkdir -p $out/static
 | 
						|
  cp ${homepage} $out/index.html
 | 
						|
  cp -r ${./static}/* $out/static
 | 
						|
 | 
						|
  # Some assets are stolen from tazjin's blog
 | 
						|
  cp ${depot.users.tazjin.homepage}/static/jetbrains-* $out/static
 | 
						|
  cp ${depot.users.tazjin.homepage}/static/tazjin.css $out/static
 | 
						|
''
 |