08d46ad293
This will also be used for the TVL blog, with status updates of projects like Tvix. Note that while this commit evaluates, there are still some things specific to my blog in this code which I'll untangle in a future commit. Change-Id: If59431161b165d7249cbb856073a4cae84a1bfbf Reviewed-on: https://cl.tvl.fyi/c/depot/+/3732 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi>
59 lines
1.5 KiB
Nix
59 lines
1.5 KiB
Nix
# Creates the Atom feed for my homepage.
|
|
{ depot, lib, pkgs, entry, pageEntries, ... }:
|
|
|
|
with depot.nix.yants;
|
|
|
|
let
|
|
inherit (builtins) map readFile sort foldl';
|
|
inherit (lib) max singleton;
|
|
inherit (pkgs) writeText;
|
|
inherit (depot.nix) renderMarkdown;
|
|
inherit (depot.web) blog atom-feed;
|
|
|
|
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.updated or post.date;
|
|
|
|
links = singleton {
|
|
rel = "alternate";
|
|
href = id;
|
|
};
|
|
});
|
|
|
|
pageEntryToEntry = defun [ entry atom-feed.entry ] (e: {
|
|
id = "tazjin:${e.class}:${toString e.date}";
|
|
updated = e.date;
|
|
published = e.date;
|
|
title = e.title;
|
|
summary = e.description;
|
|
|
|
links = singleton {
|
|
rel = "alternate";
|
|
href = e.url;
|
|
};
|
|
});
|
|
|
|
allEntries = (map postToEntry depot.users.tazjin.blog.posts)
|
|
++ (map pageEntryToEntry pageEntries);
|
|
|
|
mostRecentlyUpdated = foldl' max 0 (map (e: e.updated) allEntries);
|
|
|
|
feed = {
|
|
id = "https://tazj.in/";
|
|
title = "tazjin's interblag";
|
|
subtitle = "my posts, projects and other interesting things";
|
|
updated = mostRecentlyUpdated;
|
|
rights = "© 2020 tazjin";
|
|
authors = [ "tazjin" ];
|
|
|
|
links = singleton {
|
|
rel = "self";
|
|
href = "https://tazjin/feed.atom";
|
|
};
|
|
|
|
entries = sort (a: b: a.published > b.published) allEntries;
|
|
};
|
|
in writeText "feed.atom" (atom-feed.renderFeed feed)
|