# Configuration file for the soupault static site generator (https://soupault.app) [settings] # Enable build progress (info level) logs verbose = true # Enable debug level logs debug = true # Fail on page processing errors strict = true default_template_file = "templates/main.html" # CSS selector of the element inside the template # where page content is inserted default_content_selector = "div#content" markdown_extensions = ["md"] site_url = "https://vyos.net" [index] dump_json = "index.json" [widgets] # Moves all elements with class="footnote" or tag name to
# and replaces them with numbered links. [widgets.footnotes] widget = "footnotes" selector = "div#footnotes" footnote_selector = [".footnote", "fn"] footnote_link_class = "footnote" back_links = true link_id_prepend = "footnote-" back_link_id_append = "-ref" # Inserts the banner in main page only [widgets.insert-banner] widget = "include" page = "index.html" file = "templates/banner.html" selector = "main" action = "insert_before" # Cookiebot consent banner — must be synchronous (no `async`) so the browser # blocks on it before parsing GTM's inline bootstrap script. With `async`, # the GTM snippet would execute before Cookiebot sets consent state. # # `after = "insert-google-tag-manager-head"` controls soupault execution order, # not DOM order: GTM widget runs first (prepends GTM to ), then this # widget runs and prepends Cookiebot — so Cookiebot ends up before GTM in the # final HTML. [widgets.insert-cookiebot-loader] widget = "insert_html" html = """ """ selector = "head" action = "prepend_child" after = "insert-google-tag-manager-head" profile = "live" [widgets.insert-google-tag-manager-head] widget = "insert_html" html = """ """ selector = "head" action = "prepend_child" profile = "live" [widgets.insert-google-tag-manager-body] widget = "insert_html" selector = "body" html = """ """ action = "prepend_child" profile = "live" [widgets.insert-preconnect-hints] widget = "insert_html" html = """ """ selector = "head" action = "prepend_child" after = "insert-google-tag-manager-head" profile = "live" # The Cookiebot CookieDeclaration script is injected only on live builds so # staging visitors who hit /legal/cookies-policy/ don't leak their IP to # consent.cookiebot.com. The markdown source contains a placeholder div # (#cookie-declaration-placeholder) that this widget replaces in place. [widgets.insert-cookiebot-declaration] widget = "insert_html" page = "legal/cookies-policy.md" html = """ """ selector = "#cookie-declaration-placeholder" action = "replace_element" profile = "live" # Inserts a scary warning banner in preview versions [widgets.insert-staging-warning] widget = "include" file = "templates/staging-warning.html" selector = "header" action = "prepend_child" profile = "staging" [widgets.disallow-indexing-on-staging] widget = "create-file" name = "robots.txt" content = """ User-agent: * Disallow: / """ profile = "staging" ## Nightly build image listing generator ## # Inserts containers for current and equuleus lists # This is done here rather than inside the page so that # we can change the branches by editing just the config. [widgets.insert-nightly-build-containers] widget = "insert_html" html = """
""" selector = "#available-builds" action = "append_child" page = "get/nightly-builds.md" profile = "live" # Generates a list of the "current" branch builds from GitHub releases [widgets.list-nightly-builds-current] widget = "exec" command = "scripts/list-nightly-builds.py rolling/current" selector = "div#rolling-current" action = "append_child" page = "get/nightly-builds.md" after = "insert-nightly-build-containers" profile = "live" [widgets.release_status] page = "status.md" widget = "release-status" file = "release-status.toml" selector = ".content-div"