1diff --git a/apks/apkdoc/APKBUILD b/apks/apkdoc/APKBUILD
2index 5dbd66f8f3af437e2efe1a4cc4d332205e7695da..f9bff55846b960806696327c56b5d577fbe77c9d 100644
3--- a/apks/apkdoc/APKBUILD
4+++ b/apks/apkdoc/APKBUILD
5@@ -1,8 +1,8 @@
6 # Maintainer: Gabriel A. Giovanini <mail@gabrielgio.me>
7 pkgname=apkdoc
8 pkgver=0_git20230828
9-pkgrel=0
10-_commit=b35eaff48af43b24fa7ce4636dd994dcc2d040a5
11+pkgrel=1
12+_commit=6a97f945c72e3d7b6f34b906d9ae84f97dab5762
13 pkgdesc="APKINDEX doc generator"
14 url="https://sr.ht/~gabrielgio/apkdoc"
15 arch="x86_64"
16diff --git a/build.yml b/build.yml
17index 2262a25b1b5d4ce95f90b34fa9d391a2ab271e4e..4326a8ffcd289cb1076e18dc5ceae7560afc26a9 100644
18--- a/build.yml
19+++ b/build.yml
20@@ -8,6 +8,8 @@ packages:
21 - openssl
22 - rsync
23 - alpine-sdk
24+ - pandoc
25+ - apkdoc
26 environment:
27 remote: builds@gabrielgio.me
28 remote_path: /var/www/artifacts.gabrielgio.me/repo/
29@@ -28,3 +30,10 @@ ./pkgkit build -cu "${packages[@]}"
30 - deploy: |
31 cd apkbuilds
32 ./pkgkit upload "$remote" "$remote_path" "${packages[@]}"
33+ - doc: |
34+ cd apkbuilds
35+ sshopts="ssh -o StrictHostKeyChecking=no"
36+ apkdoc -url "https://artifacts.gabrielgio.me/repo/v3.18/x86_64/APKINDEX.tar.gz"
37+ pandoc -s --include-in-header=docs/bamboo.min.css -s index.md --metadata title="Gabriel's apk repo" -o index.html
38+ rsync --rsh="$sshopts" -rP index.html $remote:/var/www/apkdoc.gabrielgio.me/
39+
40diff --git a/docs/bamboo.min.css b/docs/bamboo.min.css
41new file mode 100644
42index 0000000000000000000000000000000000000000..1baa6d732306628f81684dff051a6cc60ad02ee5
43--- /dev/null
44+++ b/docs/bamboo.min.css
45@@ -0,0 +1,369 @@
46+<style type="text/css">
47+ :root {
48+ --b-font-main: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
49+ --b-font-mono: Consolas, Monaco, monospace;
50+ --b-txt: #2e3440;
51+ --b-bg-1: #fff;
52+ --b-bg-2: #eceff4;
53+ --b-line: #eceff4;
54+ --b-link: #bf616a;
55+ --b-btn-bg: #242933;
56+ --b-btn-txt: #fff;
57+ --b-focus: #88c0d0
58+ }
59+
60+@media (prefers-color-scheme: dark) {
61+ :root {
62+ --b-txt: #eceff4;
63+ --b-bg-1: #2e3440;
64+ --b-bg-2: #3b4252;
65+ --b-line: #3b4252
66+ }
67+}
68+
69+*, :after, :before {
70+ box-sizing: border-box
71+}
72+
73+html:focus-within {
74+ scroll-behavior: smooth
75+}
76+
77+body {
78+ max-width: 70ch;
79+ padding: 0 1rem;
80+ margin: auto;
81+ background: var(--b-bg-1);
82+ font-family: var(--b-font-main);
83+ text-rendering: optimizeSpeed;
84+ line-height: 1.5;
85+ color: var(--b-txt);
86+ -moz-tab-size: 4;
87+ tab-size: 4;
88+ word-break: break-word;
89+ -webkit-tap-highlight-color: transparent;
90+ -webkit-text-size-adjust: 100%
91+}
92+
93+address, audio, blockquote, dd, details, dl, fieldset, figure, h1, h2, h3, h4, h5, h6, hr, iframe, ol, p, pre, table, ul, video {
94+ margin: 0 0 1.5rem
95+}
96+
97+h1, h2, h3, h4, h5, h6 {
98+ line-height: 1.25;
99+ margin-top: 2rem
100+}
101+
102+h1 {
103+ font-size: 2rem
104+}
105+
106+h2 {
107+ font-size: 1.5rem
108+}
109+
110+h3 {
111+ font-size: 1.25rem
112+}
113+
114+h4 {
115+ font-size: 1rem
116+}
117+
118+h5 {
119+ font-size: .875rem
120+}
121+
122+h6 {
123+ font-size: .75rem
124+}
125+
126+a {
127+ color: var(--b-link);
128+ text-decoration: none
129+}
130+
131+a:hover {
132+ text-decoration: underline
133+}
134+
135+img, svg, video {
136+ height: auto
137+}
138+
139+embed, iframe, img, object, svg, video {
140+ max-width: 100%
141+}
142+
143+iframe {
144+ border-style: none
145+}
146+
147+abbr[title] {
148+ text-decoration: underline;
149+ text-decoration: underline dotted
150+}
151+
152+blockquote {
153+ margin-left: 0;
154+ padding: .5rem 0 .5rem 1.5rem;
155+ border-left: .25rem solid var(--b-txt)
156+}
157+
158+blockquote > :last-child {
159+ margin-bottom: 0
160+}
161+
162+small {
163+ font-size: .875rem
164+}
165+
166+sub, sup {
167+ font-size: .75em;
168+ line-height: 0;
169+ position: relative;
170+ vertical-align: baseline
171+}
172+
173+sub {
174+ bottom: -.25em
175+}
176+
177+sup {
178+ top: -.5em
179+}
180+
181+hr {
182+ height: 0;
183+ overflow: visible;
184+ border: 0;
185+ border-bottom: 1px solid var(--b-line)
186+}
187+
188+code, kbd, pre, samp, tt, var {
189+ background: var(--b-bg-2);
190+ border-radius: .25rem;
191+ padding: .125rem .25rem;
192+ font-family: var(--b-font-mono);
193+ font-size: .875rem
194+}
195+
196+pre {
197+ padding: 1rem;
198+ border-radius: 0;
199+ overflow: auto;
200+ white-space: pre
201+}
202+
203+pre code {
204+ padding: 0
205+}
206+
207+details {
208+ display: block;
209+ padding: .5rem 1rem;
210+ background: var(--b-bg-2);
211+ border: 1px solid var(--b-line);
212+ border-radius: .25rem
213+}
214+
215+details > :last-child {
216+ margin-bottom: 0
217+}
218+
219+details[open] > summary {
220+ margin-bottom: 1.5rem
221+}
222+
223+summary {
224+ display: list-item;
225+ cursor: pointer;
226+ font-weight: 700
227+}
228+
229+summary:focus {
230+ box-shadow: none
231+}
232+
233+table {
234+ border-collapse: collapse;
235+ width: 100%;
236+ text-indent: 0
237+}
238+
239+table caption {
240+ margin-bottom: .5rem
241+}
242+
243+tr {
244+ border-bottom: 1px solid var(--b-line)
245+}
246+
247+td, th {
248+ padding: .5rem 0
249+}
250+
251+th {
252+ text-align: left
253+}
254+
255+dd, ol, ul {
256+ padding-left: 2rem
257+}
258+
259+li > ol, li > ul {
260+ margin-bottom: 0
261+}
262+
263+fieldset {
264+ padding: .5rem .75rem;
265+ border: 1px solid var(--b-line);
266+ border-radius: .25rem
267+}
268+
269+legend {
270+ padding: 0 .25rem
271+}
272+
273+button, input, select, textarea {
274+ margin: 0;
275+ padding: .5rem .75rem;
276+ max-width: 100%;
277+ background: var(--b-bg-2);
278+ border: 0;
279+ border-radius: .25rem;
280+ font: inherit;
281+ line-height: 1.125;
282+ color: var(--b-txt)
283+}
284+
285+input:not([size]):not([type=button i]):not([type=submit i]):not([type=reset i]):not([type=checkbox i]):not([type=radio i]), select {
286+ width: 100%
287+}
288+
289+[type=color i] {
290+ min-height: 2.125rem
291+}
292+
293+select:not([multiple]):not([size]) {
294+ padding-right: 1.5rem;
295+ background-repeat: no-repeat;
296+ background-position: right .5rem center;
297+ -moz-appearance: none;
298+ -webkit-appearance: none;
299+ appearance: none
300+}
301+
302+textarea {
303+ width: 100%;
304+ resize: vertical
305+}
306+
307+textarea:not([rows]) {
308+ height: 8rem
309+}
310+
311+[type=button i], [type=reset i], [type=submit i], button {
312+ -webkit-appearance: button;
313+ display: inline-block;
314+ text-align: center;
315+ white-space: nowrap;
316+ background: var(--b-btn-bg);
317+ color: var(--b-btn-txt);
318+ border: 0;
319+ cursor: pointer;
320+ transition: opacity .25s
321+}
322+
323+[type=button i]:hover, [type=reset i]:hover, [type=submit i]:hover, button:hover {
324+ opacity: .75
325+}
326+
327+[type=button i][disabled], [type=reset i][disabled], [type=submit i][disabled], button[disabled] {
328+ opacity: .5
329+}
330+
331+progress {
332+ vertical-align: middle
333+}
334+
335+[type=search i] {
336+ -webkit-appearance: textfield;
337+ outline-offset: -2px
338+}
339+
340+::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
341+ height: auto
342+}
343+
344+::-webkit-input-placeholder {
345+ color: inherit;
346+ opacity: .5
347+}
348+
349+::-webkit-search-decoration {
350+ -webkit-appearance: none
351+}
352+
353+::-webkit-file-upload-button {
354+ -webkit-appearance: button;
355+ font: inherit
356+}
357+
358+::-moz-focus-inner {
359+ border-style: none;
360+ padding: 0
361+}
362+
363+:-moz-focusring {
364+ outline: 1px dotted ButtonText
365+}
366+
367+:-moz-ui-invalid {
368+ box-shadow: none
369+}
370+
371+[aria-busy=true i] {
372+ cursor: progress
373+}
374+
375+[aria-controls] {
376+ cursor: pointer
377+}
378+
379+[aria-disabled=true i], [disabled] {
380+ cursor: not-allowed
381+}
382+
383+:focus, details:focus-within {
384+ outline: none;
385+ box-shadow: 0 0 0 2px var(--b-focus)
386+}
387+
388+@media (prefers-reduced-motion: reduce) {
389+ html:focus-within {
390+ scroll-behavior: auto
391+ }
392+
393+ *, :after, :before {
394+ animation-delay: -1ms !important;
395+ animation-duration: 1ms !important;
396+ animation-iteration-count: 1 !important;
397+ background-attachment: scroll !important;
398+ scroll-behavior: auto !important;
399+ transition-delay: 0 !important;
400+ transition-duration: 0 !important
401+ }
402+}
403+
404+select:not([multiple]):not([size]) {
405+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%232e3440'%3E%3Cpath d='M5 6l5 5 5-5 2 1-7 7-7-7 2-1z'/%3E%3C/svg%3E")
406+}
407+
408+@media (prefers-color-scheme: dark) {
409+ select:not([multiple]):not([size]) {
410+ background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='16' height='16' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23eceff4'%3E%3Cpath d='M5 6l5 5 5-5 2 1-7 7-7-7 2-1z'/%3E%3C/svg%3E")
411+ }
412+}
413+
414+</style >