TOMLconfig.example.toml -rw-r--r-- 9.5 KiB
1# site name used in various places across the instance
2site_name = "🌄 Ayllu"
3
4# A valid URI that identifies this server on the global internet
5origin = "localhost:8080"
6
7# sysadmin contact address
8sysadmin = "admin@ayllu-forge.org"
9
10# number of background threads to drive asynchronous tasks forward with in the
11# web server and any other component that is multithreaded. Note that all
12# plugin components are currently single threaded. If unspecified this will
13# default to the number of CPU cores on your system.
14# worker_threads = 8
15# number of additional blocking threads that may be spawned by the tokio
16# runtime. See https://docs.rs/tokio/latest/tokio/runtime/struct.Builder.html#method.max_blocking_threads
17# max_blocking_threads = 512
18
19
20
21# logging level
22log_level = "debug"
23
24# enable when ayllu is being served from a "subpath". Clicking the home
25# button will send the user back to /browse instead of /. This is useful if you
26# have a landing page at the root of your webserver path.
27subpath_mode = false
28
29# friendly message to display on the about page of the main site which might
30# include details such as contact information, etc. markdown is supported.
31blurb = """
32# Welcome to Ayllu!
33"""
34
35# The default branch name to use when rendering repositories. If unspecified
36# the ref that HEAD is currently pointed at will be used.
37# default_branch = "main"
38
39# The number of threads to spawn by Tokio, typically this will be the number
40# of logical processors (cores) you have on your system
41# worker_threads = 8
42
43# The number of additional threads that can be launched to support synchronous
44# blocking operations.
45# max_blocking_threads = 512
46
47# The number of suggested seconds to wait before polling the server again
48# across RSS feeds. The default of 1 hour is a reasonable default in most
49# cases.
50rss_time_to_live = 3600
51
52# Git HTTP server options
53
54[git]
55# Global option to enable the Git "Smart HTTP" server which will serve
56# non-hidden repositories for cloning over HTTP. The default is true but if
57# set to false it will globally disable all cloning which you might want to do
58# if you want to run your own fcgi server e.g.
59smart_http = true
60# URL to suggest for cloning via SSH, if unspecified git cloning option will
61# not appear in the repository page.
62clone_url = "git@localhost"
63
64# this toggles the GIT_HTTP_EXPORT_ALL option for git-http-backend which will
65# allow cloning of all repositories unless they are marked as private. If this
66# option is not toggled then the file git-daemon-export-ok exist in the repository
67# for cloing to be permitted.
68export_all = false
69
70# Job server configuration
71
72[jobs]
73
74# socket for the job server to listen to new requests on. This is typically
75# used to communicate via git hooks to perform new computation on a repository
76# after it has been updated.
77# jobs_socket_path = "/var/run/user/1000/ayllu-jobs.sock"
78
79# Maximum time to allow a job to run before killing it in seconds.
80# This value needs to be high for large repositories since we have to run a
81# job for every commit in the repository.
82timeout = 1800
83
84# List of authors associated with this site
85[[authors]]
86# E-mail address of the author
87email = "example@example.org"
88# Optional "tagline" associated with the author
89tagline = "Programmer interested free software"
90# Optional link to an avatar containing an image representing the author
91avatar = { url = "https://example.org/avatar.png", mime_type = "image/png" }
92# Array of personal websites, social media, etc. associated with the author
93profiles = [
94 { url = "https://example.com", mime_type = "text/html"},
95 { url = "https://example.org/@example", mime_type = "text/html"},
96]
97
98[http]
99# interface and port to listen on
100address = "127.0.0.1:8080"
101
102[web]
103# default theme that will be used when none is specified in user configuration.
104# additionally the default theme will be used to load assets that are not
105# overriden in the actively selected theme.
106# default_theme = "default"
107# [[web.themes]]
108# unique name to identify the theme in the web UI
109# name = "my-theme"
110# path to the directory containing the theme assets
111# path = "/usr/lib/ayllu/themes/my-theme"
112
113# static hosting
114# see an example Nginx configuration in contrib/nginx/nginx.conf
115[sites]
116# set false if you want to disallow all static hosting
117enabled = true
118
119# SQLite configuration
120[database]
121# path to a SQLite database.
122# Defaults to ~/.local/share/ayllu/state.db
123# path = "db/state.db"
124# if migrations should be automatically applied
125migrate = true
126
127# tree-sitter backed syntax highlighting
128[tree-sitter]
129# path to load shared objects from
130# base_path = "/usr/lib"
131# alternative path to queries
132# queries_path = "/usr/share/tree-sitter/queries"
133# additional queries
134# queries_extras_path = "/etc/ayllu/queries"
135
136# tree-sitter highlighting keywords, these are attributes that will be
137# exposed as CSS classes which can be used to create themes.
138keywords = [
139 "attribute",
140 "comment",
141 "constant",
142 "function.builtin",
143 "function",
144 "keyword",
145 "operator",
146 "property",
147 "punctuation",
148 "punctuation.bracket",
149 "punctuation.delimiter",
150 "string",
151 "string.special",
152 "tag",
153 "type",
154 "type.builtin",
155 "variable",
156 "variable.builtin",
157 "variable.parameter",
158]
159
160# override system highlights with your own configuration as needed
161[tree-sitter.highlights]
162
163# this results in two new CSS classes ts_addition and ts_removal which can
164# be configured in theme stylesheets.
165diff = """
166; used to highlight diffs in the UI
167[(addition) (new_file)] @addition
168[(deletion) (old_file)] @removal
169
170(commit) @constant
171(location) @attribute
172(command) @variable.builtin
173"""
174
175
176# [[tree-sitter.parsers]]
177# additional parsers
178# name = "fuu-lang"
179# shared_object = "/etc/ayllu/parsers/libtree-sitter-fuu.so"
180# see https://tree-sitter.github.io/tree-sitter/syntax-highlighting#highlights
181# highlight_query = "/etc/ayllu/queries/fuu/highlights.scm"
182# see https://tree-sitter.github.io/tree-sitter/syntax-highlighting#local-variables
183# locals_query = "/etc/ayllu/queries/fuu/locals.scm"
184# see https://tree-sitter.github.io/tree-sitter/syntax-highlighting#language-injection
185# injections = "/etc/ayllu/queries/fuu/injections.scm"
186
187# any additional programming languages and their associated file extensions
188# [[ languages ]]
189# name = "BazQux"
190# extensions = [".baz", ".qux", ".bq"]
191# # deep pink
192# color = "#ff1493"
193
194# language configuration
195[languages]
196
197# Sometimes a file will be detected as one language but you want it to map to
198# another one. For instance a file named main.ml will default to Standard ML
199# however you might prefer OCaml instead. Mappings allow you to override
200# specific languages with your own preferences.
201[languages.mappings]
202"Standard ML" = "OCaml"
203# "Shell" is a blanket term for sh like languages but we want to map it
204# specifically to bash because that's the tree-sitter parser we have installed.
205"Shell" = "Bash"
206
207# any additional programming languages and their associated file extensions
208[[languages.extras]]
209name = "BazQux"
210extensions = [".baz", ".qux"]
211color = "#FF1493"
212
213# othertimes you want to override just the extension for a particular language,
214# .rs extensions map to both Rust and RenderScript.
215[[languages.extras]]
216name = "Rust"
217extensions = [".rs"]
218
219
220# Large File Store configuration
221# [lfs]
222# template URL to construct an API request which will be used to lookup the
223# reference object of the file. Other LFS server implementations may work but
224# this has only been tested with https://github.com/jasonwhite/rudolfs
225# url_template = "/lfs/{collection}/{name}/object/{oid}"
226
227# path to directories of repositories, each collection will be seperated into
228# a unique section on the index page. recursive directories are not supported,
229# you may only have a single level of repositories at this time.
230# [[collections]]
231# # name of the code collection
232# name = "projects"
233# description = "software projects actively being worked on"
234# path = "/path/to/projects"
235# # If true the collection will not show up in the main index or RSS feeds
236# hidden = false
237#
238# [[collections]]
239# name = "attic"
240# description = "archived code"
241# path = "/path/to/attic"
242
243# builder configuration for *this* builder instance
244[builder]
245# address = /tmp/builder.socket
246[builder.database]
247migrate = true
248
249# array of all known builders with their connection address
250# [[builders]]
251# hostname = localhost
252# address = /tmp/builder.socket
253
254# mailing list support with mailpot, if unspecified no mailing list pages will
255# be visible in the web application.
256[mail]
257# command used to send an e-mail
258sendmail_command = "/usr/bin/false"
259# socket path for communicating with the mail server. This will default to your
260# XDG_RUNTIME_DIR or /tmp/ayllu-mail.sock
261# socket_path = /var/run/user/1000/ayllu-mail.sock
262
263# Implements nginx_mail_auth_http protocol
264# https://nginx.org/en/docs/mail/ngx_mail_auth_http_module.html#protocol
265# to gate SMTP requests via Nginx
266[mail.nginx_auth]
267# address to listen for Nginx authentication requests from
268listen = "127.0.0.1:32001"
269# downstream SMTP server address
270host = "127.0.0.1"
271# downstream SMTP server port
272port = 25
273# fully qualified domains to accept e-mail for
274domains = ["ayllu-dev.local"]
275
276# mailing lists to configure and automatically accept e-mail for
277[[mail.lists]]
278# unique identifier across all mailing lists
279id = "hello"
280# fully qualified email address where the mailing list lives
281address = "hello@ayllu-dev.local"
282# friendly description
283description = "an illistrative mailing list"
284# free-form string tags to specify the purpose of the mailing list
285topics = ["fuu", "bar"]
286# mailing list post policy
287post_policy = "Open"
288# mailing list subscription policy
289subscription_policy = {"send_confirmation" = true, "kind" = "Open"}