diff options
Diffstat (limited to 'users/wpcarro/website/blog/default.nix')
-rw-r--r-- | users/wpcarro/website/blog/default.nix | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/users/wpcarro/website/blog/default.nix b/users/wpcarro/website/blog/default.nix new file mode 100644 index 000000000000..27541b0f39b4 --- /dev/null +++ b/users/wpcarro/website/blog/default.nix @@ -0,0 +1,47 @@ +{ depot, lib, pkgs, ... }: + +with depot.nix.yants; + +let + inherit (builtins) hasAttr filter readFile; + inherit (depot.web.blog) post includePost renderPost; + inherit (depot.users.wpcarro.website) domain renderTemplate withBrand; + inherit (lib.lists) sort; + + config = { + name = "bill and his blog"; + baseUrl = "https://${domain}/blog"; + staticUrl = "https://static.tvl.fyi/latest"; + footer = ""; + }; + + posts = sort (x: y: x.date > y.date) + (filter includePost (list post (import ./posts.nix))); + + rendered = pkgs.runCommand "blog-posts" { } '' + mkdir -p $out + + ${lib.concatStringsSep "\n" (map (post: + "cp ${renderPost config post} $out/${post.key}.html" + ) posts)} + ''; + + formatDate = date: readFile (pkgs.runCommand "date" { } '' + date --date='@${toString date}' '+%B %e, %Y' > $out + ''); + + postsHtml = renderTemplate ./fragments/posts.html { + postsHtml = lib.concatStringsSep "\n" (map toPostHtml posts); + }; + + toPostHtml = post: readFile (renderTemplate ./fragments/post.html { + postUrl = "${config.baseUrl}/posts/${post.key}.html"; + postTitle = post.title; + postDate = formatDate post.date; + }); +in +pkgs.runCommand "blog" { } '' + mkdir -p $out + cp ${withBrand (readFile postsHtml)} $out/index.html + cp -r ${rendered} $out/posts +'' |