Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788pkgs: let toKebabCase = import ./lib/toKebabCase.nix; lib = args: { importPosts = import ./lib/importPosts.nix args; importTemplates = import ./lib/importTemplates.nix; sorting.byDate = import ./lib/sortByDate.nix; inherit toKebabCase; mkRSS = pkgs.callPackage ./lib/mkRSS.nix {}; mkPost = pkgs.callPackage ./lib/mkPost.nix {inherit toKebabCase;}; mkIndex = pkgs.callPackage ./lib/mkIndex.nix {}; mkHTML = pkgs.callPackage ./lib/mkHTML.nix { # Declare argument here so it can be accessed via `prev` when the drv is overriden pandocArgs = "-f commonmark_x"; }; };
mkDerivation = { posts ? [], generateRSS ? true, static ? null, metadata ? { title = "Title"; link = "http://127.0.0.1:9999"; description = "Description"; }, templates ? { index = _: null; post = _: null; }, lib, }: pkgs.symlinkJoin { name = "website"; paths = [ (lib.mkIndex.override { inherit metadata posts; indexTemplate = templates.index; }) ] ++ ( if generateRSS then [ (lib.mkRSS.override { inherit posts; inherit (metadata) title link description; }) ] else [] ) ++ ( if static != null then [static] else [] ) ++ map (post: lib.mkPost.override {inherit post metadata;}) posts; };in { inherit lib; mkSite = args: let libWithArgs = lib preArgs; preArgs = args libWithArgs;
# Add `content`, `slug`, `url`, `prev`, and `next` attributes to each post finalPosts = builtins.genList ( i: let post = builtins.elemAt preArgs.posts i; slug = post.slug or (preArgs.lib.toKebabCase post.title); in post // { inherit slug; content = builtins.readFile "${preArgs.lib.mkHTML.override {source = post.content;}}/page.html"; url = post.url or "/posts/${slug}"; next = if i == 0 then null else builtins.elemAt finalPosts (i - 1); prev = if i == (builtins.length preArgs.posts) - 1 then null else builtins.elemAt finalPosts (i + 1); } ) (builtins.length preArgs.posts); in mkDerivation (preArgs // {posts = finalPosts;});}