diff --git a/web/homepage/default.nix b/web/homepage/default.nix index 94dfaf3dc..f6892576f 100644 --- a/web/homepage/default.nix +++ b/web/homepage/default.nix @@ -10,6 +10,55 @@ with pkgs; with nix.yants; -third_party.callPackage ./nginx.nix { +let + inherit (builtins) readFile replaceStrings sort; + inherit (third_party) writeFile runCommandNoCC; + + # The different types of entries on the homepage. + entryClass = enum "entryClass" [ "blog" "project" "misc" ]; + + # The definition of a single entry. + entry = struct "entry" { + class = entryClass; + title = string; + url = string; + date = int; # epoch + description = option string; + }; + + escape = replaceStrings [ "<" ">" "&" "'" ] [ "<" ">" "&" "'" ]; + + postToEntry = defun [ web.blog.post entry ] (post: { + class = "blog"; + title = "Blog: " + post.title; + url = "/blog/${post.key}"; + date = post.date; + }); + + # TODO(tazjin): add date formatting function + entryToDiv = defun [ entry string ] (entry: '' +
${escape entry.title}
+ ${ + lib.optionalString ((entry ? description) && (entry.description != null)) + "${escape entry.description}
" + } +Hello, illuminated visitor.
++ I'm tazjin. Usually you can find + me programming computers + using tools such as Nix + and Emacs, + cuddling people I love + or posting nonsense on the + internet. +
++ Below you can find a collection of my projects and blog posts. + If you'd like to get in touch about anything, send me a mail at + mail@[this domain] or ping me on IRC or Twitter. +
+diff --git a/web/homepage/header.html b/web/homepage/header.html new file mode 100644 index 000000000..832306fae --- /dev/null +++ b/web/homepage/header.html @@ -0,0 +1,33 @@ + +
+ + + + +
+ +