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