fix(web/blog): make base URL configurable for atom feeds

This was previously hardcoded to tazj.in, which is not going to work
of course.

Instead it now takes the blog config which has a new baseUrl
parameter. For ease of use, the configs of my and the TVL blog have
been moved into a location that is accessible in the tree for reuse.

Change-Id: I94e71aaa7859db4380eb7013740a17f6b6a02620
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3777
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
Vincent Ambo 2021-11-05 14:19:06 +01:00 committed by tazjin
parent bb980158a7
commit 875ef0a605
6 changed files with 19 additions and 17 deletions

View file

@ -5,8 +5,9 @@ with depot.nix.yants;
let let
inherit (builtins) hasAttr filter; inherit (builtins) hasAttr filter;
blogConfig = { config = {
name = "tazjin's blog"; name = "tazjin's blog";
baseUrl = "https://tazj.in/blog";
footer = '' footer = ''
<p class="footer"> <p class="footer">
@ -26,12 +27,12 @@ let
mkdir -p $out mkdir -p $out
${lib.concatStringsSep "\n" (map (post: ${lib.concatStringsSep "\n" (map (post:
"cp ${renderPost blogConfig post} $out/${post.key}.html" "cp ${renderPost config post} $out/${post.key}.html"
) posts)} ) posts)}
''; '';
in { in {
inherit posts rendered; inherit posts rendered config;
# Generate embeddable nginx configuration for redirects from old post URLs # Generate embeddable nginx configuration for redirects from old post URLs
oldRedirects = lib.concatStringsSep "\n" (map (post: '' oldRedirects = lib.concatStringsSep "\n" (map (post: ''

View file

@ -22,7 +22,7 @@ let
}; };
}); });
allEntries = (map blog.toFeedEntry depot.users.tazjin.blog.posts) allEntries = (with depot.users.tazjin.blog; map (blog.toFeedEntry config) posts)
++ (map pageEntryToEntry pageEntries); ++ (map pageEntryToEntry pageEntries);
feed = { feed = {

View file

@ -40,8 +40,8 @@ let
fragments = import ./fragments.nix args; fragments = import ./fragments.nix args;
# Functions for generating feeds for these blogs using //web/atom-feed. # Functions for generating feeds for these blogs using //web/atom-feed.
toFeedEntry = defun [ post atom-feed.entry ] (post: rec { toFeedEntry = { baseUrl, ...}: defun [ post atom-feed.entry ] (post: rec {
id = "https://tazj.in/blog/${post.key}"; id = "${baseUrl}/${post.key}";
title = post.title; title = post.title;
content = readFile (renderMarkdown post.content); content = readFile (renderMarkdown post.content);
published = post.date; published = post.date;
@ -52,7 +52,6 @@ let
href = id; href = id;
}; };
}); });
in { in {
inherit post toFeedEntry; inherit post toFeedEntry;
inherit (fragments) renderPost; inherit (fragments) renderPost;

View file

@ -59,7 +59,7 @@ let
<hr> <hr>
''; '';
renderPost = { name, footer }: post: runCommandNoCC "${post.key}.html" {} '' renderPost = { name, footer, ... }: post: runCommandNoCC "${post.key}.html" {} ''
cat ${writeText "header.html" (header name post.title)} > $out cat ${writeText "header.html" (header name post.title)} > $out
# Write the post title & date # Write the post title & date

View file

@ -1,6 +1,12 @@
{ depot, ... }: { depot, ... }:
{ {
config = {
name = "TVL's blog";
footer = depot.web.tvl.footer {};
baseUrl = "https://tvl.fyi/blog";
};
posts = [ posts = [
{ {
key = "kicking-off-tvix"; key = "kicking-off-tvix";

View file

@ -4,16 +4,12 @@ with depot.nix.yants;
let let
inherit (pkgs) graphviz runCommandNoCC writeText; inherit (pkgs) graphviz runCommandNoCC writeText;
inherit (depot.web) blog atom-feed; inherit (depot.web) atom-feed blog tvl;
blogConfig = {
name = "TVL's blog";
footer = depot.web.tvl.footer {};
};
postRenderingCommands = defun [ (list blog.post) string ] (posts: postRenderingCommands = defun [ (list blog.post) string ] (posts:
lib.concatStringsSep "\n" lib.concatStringsSep "\n"
(map (p: "cp ${blog.renderPost blogConfig p} $out/blog/${p.key}.html") posts) (map (p: "cp ${blog.renderPost tvl.blog.config p} $out/blog/${p.key}.html") posts)
); );
tvlGraph = runCommandNoCC "tvl.svg" { tvlGraph = runCommandNoCC "tvl.svg" {
@ -33,12 +29,12 @@ let
href = "https://tvl.fyi/feed.atom"; href = "https://tvl.fyi/feed.atom";
}; };
entries = map blog.toFeedEntry depot.web.tvl.blog.posts; entries = map (blog.toFeedEntry tvl.blog.config) tvl.blog.posts;
}; };
atomFeed = writeText "feed.atom" (atom-feed.renderFeed feed); atomFeed = writeText "feed.atom" (atom-feed.renderFeed feed);
homepage = depot.web.tvl.template { homepage = tvl.template {
title = "The Virus Lounge"; title = "The Virus Lounge";
content = '' content = ''
The Virus Lounge The Virus Lounge
@ -109,6 +105,6 @@ let
in runCommandNoCC "website" {} '' in runCommandNoCC "website" {} ''
mkdir -p $out/blog mkdir -p $out/blog
cp ${homepage} $out/index.html cp ${homepage} $out/index.html
${postRenderingCommands depot.web.tvl.blog.posts} ${postRenderingCommands tvl.blog.posts}
cp ${atomFeed} $out/feed.atom cp ${atomFeed} $out/feed.atom
'' ''