feat(tazjin/homepage): Add Atom feed for blog posts

Change-Id: I9049e2cc3f5a2c491ccfad5595d60c01ad926e6d
Reviewed-on: https://cl.tvl.fyi/c/depot/+/1712
Tested-by: BuildkiteCI
Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
Vincent Ambo 2020-08-10 23:38:07 +01:00 committed by tazjin
parent 452b8c7e23
commit dc13e12b95
4 changed files with 45 additions and 2 deletions

View file

@ -28,7 +28,7 @@ let
<meta name="description" content="tazjin&#39;s blog"> <meta name="description" content="tazjin&#39;s blog">
<link rel="stylesheet" type="text/css" href="/static/tazjin.css" media="all"> <link rel="stylesheet" type="text/css" href="/static/tazjin.css" media="all">
<link rel="icon" type="image/webp" href="/static/favicon.webp"> <link rel="icon" type="image/webp" href="/static/favicon.webp">
<link rel="alternate" type="application/rss+xml" title="RSS-Feed" href="/rss.xml"> <link rel="alternate" type="application/atom+xml" title="Atom Feed" href="/feed.atom">
<title>tazjin&#39;s blog: ${escape title}</title> <title>tazjin&#39;s blog: ${escape title}</title>
</head> </head>
<body class="light"> <body class="light">

View file

@ -5,7 +5,7 @@
# elements for things such as blog posts and projects. # elements for things such as blog posts and projects.
# #
# Content for the blog is in //users/tazjin/blog instead of here. # Content for the blog is in //users/tazjin/blog instead of here.
{ depot, lib, ... }: { depot, lib, ... }@args:
with depot; with depot;
with nix.yants; with nix.yants;
@ -65,8 +65,10 @@ let
)); ));
homepage = index ((map postToEntry users.tazjin.blog.posts) ++ (import ./entries.nix)); homepage = index ((map postToEntry users.tazjin.blog.posts) ++ (import ./entries.nix));
atomFeed = import ./feed.nix args;
in runCommandNoCC "website" {} '' in runCommandNoCC "website" {} ''
mkdir $out mkdir $out
cp ${homepage} $out/index.html cp ${homepage} $out/index.html
cp ${atomFeed} $out/feed.atom
cp -r ${./static} $out/static cp -r ${./static} $out/static
'' ''

View file

@ -0,0 +1,40 @@
# Creates the Atom feed for my homepage.
{ depot, lib, pkgs, ... }:
with depot.nix.yants;
let
inherit (builtins) map readFile;
inherit (lib) singleton;
inherit (pkgs) writeText;
inherit (depot.users.tazjin) atom-feed blog renderMarkdown;
postToEntry = defun [ blog.post atom-feed.entry ] (post: rec {
id = "https://tazj.in/blog/${post.key}";
title = post.title;
content = readFile (renderMarkdown post.content);
published = post.date;
updated = post.date; # TODO(tazjin): this should be distinct from published
links = singleton {
rel = "alternate";
href = id;
};
});
feed = {
id = "https://tazj.in/";
title = "tazjin's interblag";
# TODO(tazjin): Take the most recently updated entry time instead.
updated = builtins.currentTime;
rights = "© 2020 tazjin";
authors = [ "tazjin" ];
links = singleton {
rel = "self";
href = "https://tazjin/feed.atom";
};
entries = map postToEntry blog.posts;
};
in writeText "feed.atom" (atom-feed.renderFeed feed)

View file

@ -4,6 +4,7 @@
<meta name="description" content="tazjin&#39;s blog"> <meta name="description" content="tazjin&#39;s blog">
<link rel="stylesheet" type="text/css" href="static/tazjin.css" media="all"> <link rel="stylesheet" type="text/css" href="static/tazjin.css" media="all">
<link rel="icon" type="image/webp" href="/static/favicon.webp"> <link rel="icon" type="image/webp" href="/static/favicon.webp">
<link rel="alternate" type="application/atom+xml" href="/feed.atom">
<title>tazjin&#39;s interblag</title> <title>tazjin&#39;s interblag</title>
</head> </head>
<body class="dark"> <body class="dark">