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
 | |
| ''
 |