aboutsummaryrefslogtreecommitdiff
path: root/content/orgo.toml
blob: c78b3652f1ee1257605e5e7c3c337d37e2f166af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# 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 <h2>, beneath the page title the layout renders as <h1> —
# 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