about summary refs log tree commit diff
path: root/users/tazjin
diff options
context:
space:
mode:
Diffstat (limited to 'users/tazjin')
-rw-r--r--users/tazjin/blog/fragments.nix2
-rw-r--r--users/tazjin/homepage/default.nix4
-rw-r--r--users/tazjin/homepage/feed.nix40
-rw-r--r--users/tazjin/homepage/header.html1
4 files changed, 45 insertions, 2 deletions
diff --git a/users/tazjin/blog/fragments.nix b/users/tazjin/blog/fragments.nix
index 18f1c4e4c236..4c1ed5d8a8fe 100644
--- a/users/tazjin/blog/fragments.nix
+++ b/users/tazjin/blog/fragments.nix
@@ -28,7 +28,7 @@ let
     <meta name="description" content="tazjin&#39;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&#39;s blog: ${escape title}</title>
   </head>
   <body class="light">
diff --git a/users/tazjin/homepage/default.nix b/users/tazjin/homepage/default.nix
index 9ac3112b0349..1b0044391b19 100644
--- a/users/tazjin/homepage/default.nix
+++ b/users/tazjin/homepage/default.nix
@@ -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
 ''
diff --git a/users/tazjin/homepage/feed.nix b/users/tazjin/homepage/feed.nix
new file mode 100644
index 000000000000..1f9d7c91fbce
--- /dev/null
+++ b/users/tazjin/homepage/feed.nix
@@ -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)
diff --git a/users/tazjin/homepage/header.html b/users/tazjin/homepage/header.html
index ec81fa04dc05..7cd106a49782 100644
--- a/users/tazjin/homepage/header.html
+++ b/users/tazjin/homepage/header.html
@@ -4,6 +4,7 @@
   <meta name="description" content="tazjin&#39;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&#39;s interblag</title>
 </head>
 <body class="dark">