# orgo configuration for cleberg.net. # # Lives in content/ because that directory is the site's URL root: content/blog/post.org # publishes at /blog/post.html. Neither this file nor templates/ is published. # # orgo serve content -o /tmp/preview # write and preview # orgo build content -o _site --strict # build for real, failing on broken links [site] title = "cleberg.net" description = "Stillness amidst the chaos." language = "en" # Set, because the layout emits canonical links and /feed.xml — a feed is read away from # the site that served it, so its links cannot be relative. Ordinary page-to-page links # stay relative regardless, so a preview build still works from a directory. base_url = "https://cleberg.net" [nav] # Explicit, because the pages that belong in the nav are not all top-level: /blog/ and # /garden/ are generated below, and salary/ is a section index one level down. index.org # is deliberately absent — the layout writes the Home link itself. # # Generated pages are named by their output path, authored ones by their source. Listing # them together is what puts Salary last: a collection with `nav = true` that is not # listed here gets appended after everything that is — which is why the tags collection # below does not set `nav = true`: the live nav has no Tags entry. mode = "explicit" pages = ["blog/index.html", "garden/index.html", "salary/index.org"] [build] # theme/static/ is the site's static root, published at /. orgo reads it from here # rather than needing its files copied next to the writing — one copy, not two. assets = ["../theme/static"] [templates] dir = "templates" # Blog posts render through post.html, which adds the reply snippet. Nothing else does: # the live site also invites replies on garden notes and /now/, and that is a choice # rather than something a directory should decide. Any page opts in for itself with # `#+TEMPLATE: post.html`, and any post opts out with `#+TEMPLATE: base.html`. [[pages]] match = "blog" template = "post.html" [highlight] theme = "InspiredGitHub" [html] # Level-1 org headings become

, beneath the page title the layout renders as

— # which is what the current site does too. heading_offset = 1 toc = true # On, because the live site has numbered headings — inherited from Emacs' default rather # than chosen, but changing it is a design decision to make deliberately rather than a # side effect of switching generators. One line to flip when you want to. section_numbers = true # --- Generated pages ------------------------------------------------------------- # These have no source .org file. # The home page. Generated rather than authored, because it is a hand-written # introduction *plus* the most recent posts — and the post list is not something to # maintain by hand. The prose lives in templates/home.html. # # content/index.org was deleted to make room: it held only #+title and #+description, # both of which are now [site] settings above. Restore it any time with # `git checkout content/index.org`, but then this collection must output somewhere else — # two pages cannot claim one URL, and orgo fails the build rather than picking a winner. [[collections]] source = "blog" output = "index.html" template = "home.html" title = "Christian Cleberg" sort = "date" order = "desc" [[collections]] source = "blog" output = "blog/index.html" template = "blog.html" title = "Blog" sort = "date" order = "desc" nav = true [[collections]] source = "garden" output = "garden/index.html" template = "garden.html" title = "Garden" sort = "date" order = "desc" nav = true # One page per tag, plus the index the live site already has at /tags/. `source` is empty # so it groups across the whole site rather than one section, which is how #+FILETAGS: is # used here — tags appear on blog posts and garden notes alike. [[collections]] source = "" group_by = "tags" output = "tags/{tag}.html" template = "list.html" title = "Tagged: {tag}" index_output = "tags/index.html" index_template = "tags.html" index_title = "Tags" # The RSS feed. Not a separate feature — a collection whose template happens to be XML, # which is why /feed.xml is declared here alongside the HTML listings. [[collections]] source = "blog" output = "feed.xml" template = "feed.xml" title = "cleberg.net" sort = "date" order = "desc" # Whole posts, not excerpts. The live feed carries full content, and a subscriber handed # excerpts instead would notice. Costs a render of every listed post whenever the feed is # rebuilt, which is the trade this is worth making for. include_content = true