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:
parent
452b8c7e23
commit
dc13e12b95
4 changed files with 45 additions and 2 deletions
|
@ -28,7 +28,7 @@ let
|
|||
<meta name="description" content="tazjin's blog">
|
||||
<link rel="stylesheet" type="text/css" href="/static/tazjin.css" media="all">
|
||||
<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's blog: ${escape title}</title>
|
||||
</head>
|
||||
<body class="light">
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
# elements for things such as blog posts and projects.
|
||||
#
|
||||
# Content for the blog is in //users/tazjin/blog instead of here.
|
||||
{ depot, lib, ... }:
|
||||
{ depot, lib, ... }@args:
|
||||
|
||||
with depot;
|
||||
with nix.yants;
|
||||
|
@ -65,8 +65,10 @@ let
|
|||
));
|
||||
|
||||
homepage = index ((map postToEntry users.tazjin.blog.posts) ++ (import ./entries.nix));
|
||||
atomFeed = import ./feed.nix args;
|
||||
in runCommandNoCC "website" {} ''
|
||||
mkdir $out
|
||||
cp ${homepage} $out/index.html
|
||||
cp ${atomFeed} $out/feed.atom
|
||||
cp -r ${./static} $out/static
|
||||
''
|
||||
|
|
40
users/tazjin/homepage/feed.nix
Normal file
40
users/tazjin/homepage/feed.nix
Normal 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)
|
|
@ -4,6 +4,7 @@
|
|||
<meta name="description" content="tazjin's blog">
|
||||
<link rel="stylesheet" type="text/css" href="static/tazjin.css" media="all">
|
||||
<link rel="icon" type="image/webp" href="/static/favicon.webp">
|
||||
<link rel="alternate" type="application/atom+xml" href="/feed.atom">
|
||||
<title>tazjin's interblag</title>
|
||||
</head>
|
||||
<body class="dark">
|
||||
|
|
Loading…
Reference in a new issue