diff options
Diffstat (limited to 'users/tazjin/blog/default.nix')
-rw-r--r-- | users/tazjin/blog/default.nix | 71 |
1 files changed, 31 insertions, 40 deletions
diff --git a/users/tazjin/blog/default.nix b/users/tazjin/blog/default.nix index d2f04aaea5..60c79f0941 100644 --- a/users/tazjin/blog/default.nix +++ b/users/tazjin/blog/default.nix @@ -1,59 +1,50 @@ -# 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. -{ depot, lib, ... }@args: +{ depot, lib, pkgs, ... }: with depot.nix.yants; let - inherit (builtins) filter hasAttr map; - - # Type definition for a single blog post. - post = struct "blog-post" { - key = string; # - title = string; - date = int; - - # 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; + inherit (builtins) hasAttr filter; + + config = { + name = "tazjin's blog"; + baseUrl = "https://tazj.in/blog"; + staticUrl = "https://tazj.in/static/"; + + footer = '' + <p class="footer"> + <a class="uncoloured-link" href="https://tazj.in">homepage</a> + | + <a class="uncoloured-link" href="https://cs.tvl.fyi/">code</a> + </p> + <p class="lod">ಠ_ಠ</p> + ''; }; + inherit (depot.web.blog) post includePost renderPost; + posts = list post (import ./posts.nix); - fragments = import ./fragments.nix args; - rendered = depot.third_party.runCommandNoCC "tazjins-blog" {} '' + rendered = pkgs.runCommand "tazjins-blog" { } '' mkdir -p $out ${lib.concatStringsSep "\n" (map (post: - "cp ${fragments.renderPost post} $out/${post.key}.html" + "cp ${renderPost config post} $out/${post.key}.html" ) posts)} ''; - includePost = post: !(fragments.isDraft post) && !(fragments.isUnlisted post); -in { - inherit post rendered; - static = ./static; +in +{ + inherit rendered config; - # Only include listed posts + # Filter unlisted posts from the index posts = filter includePost posts; # Generate embeddable nginx configuration for redirects from old post URLs - oldRedirects = lib.concatStringsSep "\n" (map (post: '' - location ~* ^(/en)?/${post.oldKey} { - # TODO(tazjin): 301 once this works - return 302 https://tazj.in/blog/${post.key}; - } - '') (filter (hasAttr "oldKey") posts)); + oldRedirects = lib.concatStringsSep "\n" (map + (post: '' + location ~* ^(/en)?/${post.oldKey} { + return 301 https://tazj.in/blog/${post.key}; + } + '') + (filter (hasAttr "oldKey") posts)); } |