diff options
Diffstat (limited to 'web/blog/default.nix')
-rw-r--r-- | web/blog/default.nix | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/web/blog/default.nix b/web/blog/default.nix new file mode 100644 index 000000000000..bc7b9666f79b --- /dev/null +++ b/web/blog/default.nix @@ -0,0 +1,46 @@ +# This creates the static files that make up my blog from the Markdown +# files in this repository. +# +# All blog posts are rendered from Markdown by cheddar. +{ pkgs, lib, ... }@args: + +with pkgs.nix.yants; + +let + # Type definition for a single blog post. + post = struct "blog-post" { + key = string; # + title = string; + date = string; # *sigh* + + # Path to the Markdown file containing the post content. + content = path; + + # Should this post be included in the index? (defaults to true) + listed = option bool; + + # Is this a draft? (adds a banner indicating that the link should + # not be shared) + draft = option bool; + + # Previously each post title had a numeric ID. For these numeric + # IDs, redirects are generated so that old URLs stay compatible. + oldKey = option string; + }; + + posts = list post (import ./posts.nix); + fragments = import ./fragments.nix args; + + renderedBlog = pkgs.third_party.runCommandNoCC "tazjins-blog" {} '' + mkdir -p $out + + cp ${fragments.blogIndex posts} $out/index.html + + ${lib.concatStringsSep "\n" (map (post: + "cp ${fragments.renderPost post} $out/${post.key}.html" + ) posts)} + ''; # '' (this line makes nix-mode happy :/) + +in import ./nginx.nix (args // { + inherit posts renderedBlog; +}) |