--- title: "Building with Hakyll" --- We’re pleased to announce that as of today, PLFA builds entirely using Haskell! We’ve migrated our build system from a bundle of Makefiles, shell scripts, and Jekyll, over to [Hakyll][hakyll], a static site building written in Haskell. All you need to do to build and serve PLFA locally is: ```bash git clone --recurse-submodules https://github.com/plfa/plfa.github.io PLFA cd PLFA/ stack build && stack exec site watch ``` That will pull in all the dependencies: Agda, the standard library, Hakyll, Pandoc, *etc.* There’s been lots of changes to the organisation of PLFA as a consequence, but the most important change, if you’re using PLFA as a student, is that we now include the correct version of the Agda standard library as a Git submodule. The [“Getting Started”](/GettingStarted/#install-plfa-and-the-agda-standard-library) page can help you set it up correctly! If you’re a contributor to PLFA, there are some further changes that will affect you! - The main build file is [“hs/Main.hs”][plfa-main]. - PLFA is written using Pandoc Markdown: + For links, write `/DeBruijn/` instead of `{{ site.baseurl }}/DeBruijn/`. + For explicit header anchors, write `{name=my-anchor}` instead of `{#my-anchor}`. - Many of the files involved in rendering the website were moved: + The index page was moved to [“src/plfa/index.md”][plfa-index].
The sections on the index pages are generated from [“src/plfa/toc.metadata”][plfa-toc]. + The HTML templates were moved to the [“templates/”][plfa-templates] directory. + The static files were moved to the [“public/”][plfa-public] directory. + The pages were moved to the [“src/pages/”][plfa-pages] directory.
Pages that are a part of the book, as part of the front matter and back matter, e.g., [Preface](/Preface/), were moved to [“src/plfa/frontmatter/”][plfa-frontmatter] and [“src/plfa/backmatter/”][plfa-backmatter], respectively. + We’ve moved to the latest version of the [Minima][jekyll-minima] theme, adapted for use with Hakyll, which is now explicitly stored in the repository. - The historical versions which were built using Jekyll—19.08 and 20.07—are stored in the [“versions/”][plfa-versions] directory. For future versions, we plan to pull these in for publication. - Support for Travis CI was dropped. We’ve been having trouble building and caching Agda on Travis for a while now, so until Agda starts publishing pre-built binaries, we’re moving away from Travis. In the meantime, we will publish PLFA directly to the [“web”][plfa-web] branch. - The [acknowledgements](/Acknowledgements/) are built from the [contributors][plfa-contributors] directory. We regularly update these files using the GitHub API, using [“hs/UpdateContributors.hs”][plfa-update-contributors], but if your contribution wasn’t via a GitHub commit or it doesn’t show up for some reason, you can add yourself here! [hakyll]: https://jaspervdj.be/hakyll/ [pandoc-markdown]: https://pandoc.org/MANUAL.html#pandocs-markdown [plfa-index]: https://github.com/plfa/plfa.github.io/tree/dev/src/plfa/index.md [plfa-toc]: https://github.com/plfa/plfa.github.io/tree/dev/src/plfa/toc.metadata [plfa-templates]: https://github.com/plfa/plfa.github.io/tree/dev/templates [plfa-public]: https://github.com/plfa/plfa.github.io/tree/dev/public [plfa-pages]: https://github.com/plfa/plfa.github.io/tree/dev/src/pages [plfa-frontmatter]: https://github.com/plfa/plfa.github.io/tree/dev/src/plfa/frontmatter [plfa-backmatter]: https://github.com/plfa/plfa.github.io/tree/dev/src/plfa/backmatter [plfa-versions]: https://github.com/plfa/plfa.github.io/tree/dev/versions [plfa-web]: https://github.com/plfa/plfa.github.io/tree/web/ [plfa-contributors]: https://github.com/plfa/plfa.github.io/tree/dev/contributors [plfa-main]: https://github.com/plfa/plfa.github.io/blob/dev/hs/Main.hs [plfa-update-contributors]: https://github.com/plfa/plfa.github.io/blob/dev/hs/UpdateContributors.hs [jekyll-minima]: https://github.com/jekyll/minima