diff options
author | Vincent Ambo <mail@tazj.in> | 2021-11-02T13·34+0100 |
---|---|---|
committer | tazjin <mail@tazj.in> | 2021-11-03T15·43+0000 |
commit | bbf92dcdeaaf8bd8ab43fdd167f0709bb8840eb6 (patch) | |
tree | a5ba8f5323b144b051a2ac16868854cfd6477b22 | |
parent | e99d8510d7f8d47cbf6217b2b6c7cd64d9457570 (diff) |
refactor(web/blog): Configurable blog name and footer r/2998
Required for actually using this generically for the TVL blog. Change-Id: I92d8d10341f9ab4f92c90f7976be261b3255a0f0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3768 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
-rw-r--r-- | users/tazjin/blog/default.nix | 16 | ||||
-rw-r--r-- | web/blog/default.nix | 8 | ||||
-rw-r--r-- | web/blog/fragments.nix | 30 |
3 files changed, 29 insertions, 25 deletions
diff --git a/users/tazjin/blog/default.nix b/users/tazjin/blog/default.nix index fd2f38839a73..c65b5cb50bf0 100644 --- a/users/tazjin/blog/default.nix +++ b/users/tazjin/blog/default.nix @@ -4,6 +4,20 @@ with depot.nix.yants; let inherit (builtins) hasAttr filter; + + blogConfig = { + name = "tazjin's blog"; + + footer = '' + <p class="footer"> + <a class="uncoloured-link" href="https://tazj.in">homepage</a> + | + <a class="uncoloured-link" href="https://cs.tvl.fyi/">code</a> + </p> + <p class="lod">ಠ_ಠ</p> + ''; + }; + inherit (depot.web.blog) post includePost renderPost; posts = filter includePost (list post (import ./posts.nix)); @@ -12,7 +26,7 @@ let mkdir -p $out ${lib.concatStringsSep "\n" (map (post: - "cp ${renderPost post} $out/${post.key}.html" + "cp ${renderPost blogConfig post} $out/${post.key}.html" ) posts)} ''; diff --git a/web/blog/default.nix b/web/blog/default.nix index 05367588e3fb..a93762dfea12 100644 --- a/web/blog/default.nix +++ b/web/blog/default.nix @@ -9,7 +9,7 @@ with depot.nix.yants; let # Type definition for a single blog post. post = struct "blog-post" { - key = string; # + key = string; title = string; date = int; @@ -31,11 +31,9 @@ let oldKey = option string; }; - posts = list post (import ./posts.nix); fragments = import ./fragments.nix args; - - includePost = post: !(fragments.isDraft post) && !(fragments.isUnlisted post); in { - inherit post includePost; + inherit post; inherit (fragments) renderPost; + includePost = post: !(fragments.isDraft post) && !(fragments.isUnlisted post); } diff --git a/web/blog/fragments.nix b/web/blog/fragments.nix index eb46a09fd044..56e603905d03 100644 --- a/web/blog/fragments.nix +++ b/web/blog/fragments.nix @@ -4,9 +4,6 @@ # # An entire post is rendered by `renderPost`, which assembles the # fragments together in a runCommand execution. -# -# The post index is generated by //users/tazjin/homepage, not by this -# code. { depot, lib, pkgs, ... }: let @@ -20,33 +17,28 @@ let escape = replaceStrings [ "<" ">" "&" "'" ] [ "<" ">" "&" "'" ]; - header = title: '' + header = name: title: '' <!DOCTYPE html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <meta name="description" content="tazjin's blog"> + <meta name="description" content="${escape name}"> <link rel="stylesheet" type="text/css" href="/static/tvl.css" media="all"> <link rel="icon" type="image/webp" href="/static/favicon.webp"> <link rel="alternate" type="application/atom+xml" title="Atom Feed" href="/feed.atom"> - <title>tazjin's blog: ${escape title}</title> + <title>${escape name}: ${escape title}</title> </head> <body class="light"> <header> - <h1><a class="blog-title" href="/">tazjin's interblag</a> </h1> + <h1><a class="blog-title" href="/">${escape name}</a> </h1> <hr> </header> ''; - footer = '' + footer = content: '' <hr> <footer> - <p class="footer"> - <a class="uncoloured-link" href="https://tazj.in">homepage</a> - | - <a class="uncoloured-link" href="https://cs.tvl.fyi/">code</a> - </p> - <p class="lod">ಠ_ಠ</p> + ${content} </footer> </body> ''; @@ -54,7 +46,7 @@ let draftWarning = writeText "draft.html" '' <p class="cheddar-callout cheddar-warning"> <b>Note:</b> This post is a <b>draft</b>! Please do not share - the link to it without asking me first. + the link to it without asking first. </p> <hr> ''; @@ -62,13 +54,13 @@ let unlistedWarning = writeText "unlisted.html" '' <p class="cheddar-callout cheddar-warning"> <b>Note:</b> This post is <b>unlisted</b>! Please do not share - the link to it without asking me first. + the link to it without asking first. </p> <hr> ''; - renderPost = post: runCommandNoCC "${post.key}.html" {} '' - cat ${writeText "header.html" (header post.title)} > $out + renderPost = { name, footer }: post: runCommandNoCC "${post.key}.html" {} '' + cat ${writeText "header.html" (header name post.title)} > $out # Write the post title & date echo '<article><h2 class="inline">${escape post.title}</h2>' >> $out @@ -97,5 +89,5 @@ let cat ${writeText "footer.html" footer} >> $out ''; in { - inherit renderPost isDraft isUnlisted; + inherit isDraft isUnlisted renderPost; } |