diff options
Diffstat (limited to 'users/wpcarro/website/blog/default.nix')
-rw-r--r-- | users/wpcarro/website/blog/default.nix | 46 |
1 files changed, 46 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..d87b714b6fe1 --- /dev/null +++ b/users/wpcarro/website/blog/default.nix @@ -0,0 +1,46 @@ +{ 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"; + footer = ""; + }; + + posts = sort (x: y: x.date > y.date) + (filter includePost (list post (import ./posts.nix))); + + rendered = pkgs.runCommandNoCC "blog-posts" { } '' + mkdir -p $out + + ${lib.concatStringsSep "\n" (map (post: + "cp ${renderPost config post} $out/${post.key}.html" + ) posts)} + ''; + + formatDate = date: readFile (pkgs.runCommandNoCC "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.runCommandNoCC "blog" { } '' + mkdir -p $out + cp ${withBrand (readFile postsHtml)} $out/index.html + cp -r ${rendered} $out/posts +'' |