diff options
-rw-r--r-- | users/tazjin/blog/default.nix | 45 | ||||
-rw-r--r-- | users/tazjin/homepage/default.nix | 2 | ||||
-rw-r--r-- | users/tazjin/homepage/feed.nix | 6 | ||||
-rw-r--r-- | web/blog/default.nix | 41 | ||||
-rw-r--r-- | web/blog/fragments.nix (renamed from users/tazjin/blog/fragments.nix) | 0 |
5 files changed, 51 insertions, 43 deletions
diff --git a/users/tazjin/blog/default.nix b/users/tazjin/blog/default.nix index a3c373a0fa76..fd2f38839a73 100644 --- a/users/tazjin/blog/default.nix +++ b/users/tazjin/blog/default.nix @@ -1,56 +1,23 @@ -# 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, pkgs, ... }@args: +{ depot, lib, pkgs, ... }: with depot.nix.yants; let - inherit (builtins) filter hasAttr map; + inherit (builtins) hasAttr filter; + inherit (depot.web.blog) post includePost renderPost; - # Type definition for a single blog post. - post = struct "blog-post" { - key = string; # - title = string; - date = int; - - # Optional time at which this post was last updated. - updated = option 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; - }; - - posts = list post (import ./posts.nix); - fragments = import ./fragments.nix args; + posts = filter includePost (list post (import ./posts.nix)); rendered = pkgs.runCommandNoCC "tazjins-blog" {} '' mkdir -p $out ${lib.concatStringsSep "\n" (map (post: - "cp ${fragments.renderPost post} $out/${post.key}.html" + "cp ${renderPost post} $out/${post.key}.html" ) posts)} ''; - includePost = post: !(fragments.isDraft post) && !(fragments.isUnlisted post); in { - inherit post rendered; - static = ./static; - - # Only include listed posts - posts = filter includePost posts; + inherit posts rendered; # Generate embeddable nginx configuration for redirects from old post URLs oldRedirects = lib.concatStringsSep "\n" (map (post: '' diff --git a/users/tazjin/homepage/default.nix b/users/tazjin/homepage/default.nix index a8ebe7e28227..2ce1cf632255 100644 --- a/users/tazjin/homepage/default.nix +++ b/users/tazjin/homepage/default.nix @@ -28,7 +28,7 @@ let escape = replaceStrings [ "<" ">" "&" "'" ] [ "<" ">" "&" "'" ]; - postToEntry = defun [ users.tazjin.blog.post entry ] (post: { + postToEntry = defun [ web.blog.post entry ] (post: { class = "blog"; title = post.title; url = "/blog/${post.key}"; diff --git a/users/tazjin/homepage/feed.nix b/users/tazjin/homepage/feed.nix index 985108ebe091..984b1c295017 100644 --- a/users/tazjin/homepage/feed.nix +++ b/users/tazjin/homepage/feed.nix @@ -8,8 +8,7 @@ let inherit (lib) max singleton; inherit (pkgs) writeText; inherit (depot.nix) renderMarkdown; - inherit (depot.users.tazjin) blog; - inherit (depot.web) atom-feed; + inherit (depot.web) blog atom-feed; postToEntry = defun [ blog.post atom-feed.entry ] (post: rec { id = "https://tazj.in/blog/${post.key}"; @@ -37,7 +36,8 @@ let }; }); - allEntries = (map postToEntry blog.posts) ++ (map pageEntryToEntry pageEntries); + allEntries = (map postToEntry depot.users.tazjin.blog.posts) + ++ (map pageEntryToEntry pageEntries); mostRecentlyUpdated = foldl' max 0 (map (e: e.updated) allEntries); diff --git a/web/blog/default.nix b/web/blog/default.nix new file mode 100644 index 000000000000..05367588e3fb --- /dev/null +++ b/web/blog/default.nix @@ -0,0 +1,41 @@ +# 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, pkgs, ... }@args: + +with depot.nix.yants; + +let + # Type definition for a single blog post. + post = struct "blog-post" { + key = string; # + title = string; + date = int; + + # Optional time at which this post was last updated. + updated = option 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; + }; + + posts = list post (import ./posts.nix); + fragments = import ./fragments.nix args; + + includePost = post: !(fragments.isDraft post) && !(fragments.isUnlisted post); +in { + inherit post includePost; + inherit (fragments) renderPost; +} diff --git a/users/tazjin/blog/fragments.nix b/web/blog/fragments.nix index eb46a09fd044..eb46a09fd044 100644 --- a/users/tazjin/blog/fragments.nix +++ b/web/blog/fragments.nix |