Fediversity/website
2024-11-13 15:47:12 +01:00
..
assets remove old template garbage 2024-11-13 15:47:12 +01:00
content list all news articles on a separate page 2024-11-13 15:47:12 +01:00
content_ add past events and list them on a page 2024-11-13 15:47:12 +01:00
images Add 'website/' from commit 'd208ee83f80467e25c662b4680ed2d6161d88d9e' 2024-10-07 11:53:11 +02:00
layouts Add 'website/' from commit 'd208ee83f80467e25c662b4680ed2d6161d88d9e' 2024-10-07 11:53:11 +02:00
npins add devmode for live preview 2024-11-13 15:47:12 +01:00
presentation add todo concerning palpable content 2024-11-13 15:47:12 +01:00
structure add past events and list them on a page 2024-11-13 15:47:12 +01:00
.gitignore PoC: build site from nix files 2024-11-13 15:47:12 +01:00
default.nix add devmode for live preview 2024-11-13 15:47:12 +01:00
lib.nix make template overrides take final and prev 2024-11-13 15:47:12 +01:00
README.md add note on using direnv 2024-11-13 15:47:12 +01:00
shell.nix PoC: build site from nix files 2024-11-13 15:47:12 +01:00

Fediversity web site

This web site is built with a static site generator based on the Nix language module system. It has unique features such as:

  • correct-by-construction relative links, automatic redirects for moved pages
  • correct-by-construction content fields
  • customisable templating and content structure, all seamlessly expressed in the Nix language
  • correct-by-construction spec-compliant HTML output
  • content source organisation independent of output structure

Structured content is managed through Nix expressions, and copy is written in CommonMark.

Contributing

  • Install Nix

  • Set up direnv

  • Run direnv allow in the directory where repository is stored on your machine

    Note

    This is a security boundary, and allows automatically running code from this repository on your machine.

  • Start a live preview in a different terminal:

    devmode
    

    This will open your default web browser and automatically reload the page when the source changes.

  • Edit any of the files, see repository layout for guidance

Repository layout

  • content

    Content of the web site is managed here. The entry point is content/default.nix and is built to correspond to index.html in the result. All other content sources are automatically included in imports, and can be accessed though the config module argument.

  • structure

    Definitions of content data structures, such as pages, articles, menus, collections, etc.

  • presentation

    Code specific to how the web site is rendered. In particular, it encodes the mechanism for distributing content to files, and for putting together files for the final result.

    In principle, different output formats (such as RSS feeds) are possible, and would be implemented there.

  • default.nix

    Entry point for building the project. This is where content, structure, and presentation are wired up.

  • shell.nix

    Convenience wrapper to enable running nix-shell without arguments.

  • lib.nix

    Reusable convenience functions. Also exposed under the lib attribute in default.nix.

  • npins

    Dependencies, managed with npins.

  • README.md

    This file.