on master help sign in
Update website a bit
efab537Jasper Van der Jeugt
web/about.markdown+4−4
@@ -2,13 +2,13 @@
2title: About
2title: About
3---
3---
4
4
5−## Code
5+# Code
6
6
7The code for Hakyll is freely available on
7The code for Hakyll is freely available on
8[github](http://github.com/jaspervdj/Hakyll/). Patches and suggestions are
8[github](http://github.com/jaspervdj/Hakyll/). Patches and suggestions are
9always very welcome.
9always very welcome.
10
10
11−## Inspiration
11+# Inspiration
12
12
13Hakyll is not the only static site generator out there. It was inspired by the
13Hakyll is not the only static site generator out there. It was inspired by the
14following awesome projects:
14following awesome projects:
@@ -17,13 +17,13 @@ following awesome projects:
17- [nanoc](http://nanoc.stoneship.org/)
17- [nanoc](http://nanoc.stoneship.org/)
18- [Jekyll](http://jekyllrb.com/)
18- [Jekyll](http://jekyllrb.com/)
19
19
20−## License
20+# License
21
21
22Hakyll is available under a BSD license. Note, however, that pandoc is
22Hakyll is available under a BSD license. Note, however, that pandoc is
23released under a GPL license. Since you'll probably use Hakyll with pandoc,
23released under a GPL license. Since you'll probably use Hakyll with pandoc,
24you will have to license your code under a GPL-compatible license.
24you will have to license your code under a GPL-compatible license.
25
25
26−## Authors
26+# Authors
27
27
28Hakyll was originally written by [Jasper Van der Jeugt](http://jaspervdj.be),
28Hakyll was originally written by [Jasper Van der Jeugt](http://jaspervdj.be),
29who still maintains the package. Contributors:
29who still maintains the package. Contributors:
web/css/default.css+14−12
@@ -14,19 +14,15 @@ body {
14
14
15div#header {
15div#header {
16 height: 32px;
16 height: 32px;
17− padding: 20px 0px 20px 60px;
17+ margin: 20px 0px 20px 60px;
18+ text-transform: uppercase;
19+ font-weight: bold;
20+ font-size: 28px;
18}
21}
19
22
20div#header img {
23div#header img {
21 display: inline;
24 display: inline;
22− vertical-align: middle;
25+ margin: 0px 0px 0px 0px;
23−}
24−
25−div#header h1 {
26− padding-left: 10px;
27− display: inline;
28− text-transform: uppercase;
29− vertical-align: middle;
30}
26}
31
27
32div#main {
28div#main {
@@ -65,13 +61,19 @@ a {
65 color: black;
61 color: black;
66}
62}
67
63
64+h1 {
65+ font-size: 20px;
66+}
67+
68h2 {
68h2 {
69− font-size: 120%;
69+ font-size: 18px;
70− text-transform: uppercase;
71}
70}
72
71
73h3 {
72h3 {
74− font-size: 100%;
73+ font-size: 16px;
74+}
75+
76+h1, h2, h3 {
75 text-transform: uppercase;
77 text-transform: uppercase;
76}
78}
77
79
web/examples.markdown+2−2
@@ -2,7 +2,7 @@
2title: Examples
2title: Examples
3---
3---
4
4
5−## Simple examples
5+# Simple examples
6
6
7A number of simple examples are available in the GitHub repository. They can be
7A number of simple examples are available in the GitHub repository. They can be
8found [here](https://github.com/jaspervdj/hakyll-examples). The README located
8found [here](https://github.com/jaspervdj/hakyll-examples). The README located
@@ -11,7 +11,7 @@ directory using
11
11
12 git clone git://github.com/jaspervdj/hakyll-examples.git
12 git clone git://github.com/jaspervdj/hakyll-examples.git
13
13
14−## People using Hakyll
14+# People using Hakyll
15
15
16A lot of sites running Hakyll also publish the source code. This is a very
16A lot of sites running Hakyll also publish the source code. This is a very
17interesting resource to learn from as well. If you're using Hakyll for your
17interesting resource to learn from as well. If you're using Hakyll for your
web/hakyll.hs+17−5
@@ -2,6 +2,7 @@
2import Hakyll
2import Hakyll
3import Control.Monad (forM_)
3import Control.Monad (forM_)
4import Control.Arrow ((>>>), arr)
4import Control.Arrow ((>>>), arr)
5+import Data.Monoid (mempty)
5import Text.Pandoc
6import Text.Pandoc
6
7
7main :: IO ()
8main :: IO ()
@@ -23,15 +24,26 @@ main = hakyll $ do
23 >>> applyTemplateCompiler "templates/default.html"
24 >>> applyTemplateCompiler "templates/default.html"
24 >>> relativizeUrlsCompiler
25 >>> relativizeUrlsCompiler
25
26
26− -- Tutorial
27+ -- Tutorials
27− match "tutorial.markdown" $ do
28+ match "tutorials/*" $ do
28 route $ setExtension "html"
29 route $ setExtension "html"
29− compile $ readPageCompiler
30− >>> pageRenderPandocWith defaultHakyllParserState withToc
30+ compile $ pageCompilerWith defaultHakyllParserState withToc
31 >>> requireA "sidebar.markdown" (setFieldA "sidebar" $ arr pageBody)
31 >>> requireA "sidebar.markdown" (setFieldA "sidebar" $ arr pageBody)
32+ >>> applyTemplateCompiler "templates/tutorial.html"
32 >>> applyTemplateCompiler "templates/default.html"
33 >>> applyTemplateCompiler "templates/default.html"
33 >>> relativizeUrlsCompiler
34 >>> relativizeUrlsCompiler
34
35
36+ -- Tutorial list
37+ match "tutorials.html" $ route idRoute
38+ create "tutorials.html" $ constA mempty
39+ >>> arr (setField "title" "Tutorials")
40+ >>> setFieldPageList chronological
41+ "templates/tutorial-item.html" "tutorials" "tutorials/*"
42+ >>> requireA "sidebar.markdown" (setFieldA "sidebar" $ arr pageBody)
43+ >>> applyTemplateCompiler "templates/tutorials.html"
44+ >>> applyTemplateCompiler "templates/default.html"
45+ >>> relativizeUrlsCompiler
46+
35 -- Sidebar
47 -- Sidebar
36 match "sidebar.markdown" $ compile pageCompiler
48 match "sidebar.markdown" $ compile pageCompiler
37
49
@@ -40,7 +52,7 @@ main = hakyll $ do
40 where
52 where
41 withToc = defaultHakyllWriterOptions
53 withToc = defaultHakyllWriterOptions
42 { writerTableOfContents = True
54 { writerTableOfContents = True
43− , writerTemplate = "<h2>Table of contents</h2>\n$toc$\n$body$"
55+ , writerTemplate = "$toc$\n$body$"
44 , writerStandalone = True
56 , writerStandalone = True
45 }
57 }
46
58
web/index.markdown+8−8
@@ -2,7 +2,7 @@
2title: Home
2title: Home
3---
3---
4
4
5−## Overview
5+# Overview
6
6
7Hakyll is a [Haskell](http://haskell.org) library for generating static sites,
7Hakyll is a [Haskell](http://haskell.org) library for generating static sites,
8mostly aimed at small-to-medium sites and personal blogs. It is written in a
8mostly aimed at small-to-medium sites and personal blogs. It is written in a
@@ -12,32 +12,32 @@ configuration.
12Integration with [pandoc](http://johnmacfarlane.net/pandoc/) gives us markdown
12Integration with [pandoc](http://johnmacfarlane.net/pandoc/) gives us markdown
13and TeX support, including syntax highlighting and other goodies.
13and TeX support, including syntax highlighting and other goodies.
14
14
15−## The Hakyll System
15+# The Hakyll System
16
16
17−### Write your content in whatever format you prefer
17+## Write your content in whatever format you prefer
18
18
19![Write your content](/images/hakyll-system-1.png)
19![Write your content](/images/hakyll-system-1.png)
20
20
21−### Create compilation rules in a Haskell EDSL
21+## Create compilation rules in a Haskell EDSL
22
22
23![Write your rules](/images/hakyll-system-2.png)
23![Write your rules](/images/hakyll-system-2.png)
24
24
25−### Compile it to HTML and upload it!
25+## Compile it to HTML and upload it!
26
26
27![Compile it](/images/hakyll-system-3.png)
27![Compile it](/images/hakyll-system-3.png)
28
28
29−## Hakyll 3
29+# Hakyll 3
30
30
31Hakyll 3 has been released, and it can be installed by running
31Hakyll 3 has been released, and it can be installed by running
32`cabal install hakyll`. For a limited time (but as long as is necessary) you can
32`cabal install hakyll`. For a limited time (but as long as is necessary) you can
33access the old site and documentation [here](/hakyll2).
33access the old site and documentation [here](/hakyll2).
34
34
35−## Getting Started
35+# Getting Started
36
36
37You can get the latest version from hackage using `cabal install hakyll`. Then,
37You can get the latest version from hackage using `cabal install hakyll`. Then,
38you can:
38you can:
39
39
40−- read the [tutorial](/tutorial.html);
40+- read the [tutorials](/tutorials.html);
41- mail the [google discussion group](http://groups.google.com/group/hakyll);
41- mail the [google discussion group](http://groups.google.com/group/hakyll);
42- ask questions on the IRC channel: `#hakyll` on
42- ask questions on the IRC channel: `#hakyll` on
43 [freenode](http://freenode.net/).
43 [freenode](http://freenode.net/).
web/philosophy.markdown+4−4
@@ -2,25 +2,25 @@
2title: Philosophy
2title: Philosophy
3---
3---
4
4
5−## Small-to-medium sites
5+# Small-to-medium sites
6
6
7Hakyll was written to be used for small-to-medium sites. You can do some
7Hakyll was written to be used for small-to-medium sites. You can do some
8advanced things with it, but don't use it to build a big online shop.
8advanced things with it, but don't use it to build a big online shop.
9
9
10−## Hakyll.hs
10+# Hakyll.hs
11
11
12It should be possible to put all configuration in one file, so data and
12It should be possible to put all configuration in one file, so data and
13configuration can be strictly separated. In addition, we think this file should
13configuration can be strictly separated. In addition, we think this file should
14never exceed a 100 lines of code.
14never exceed a 100 lines of code.
15
15
16−## High-level
16+# High-level
17
17
18Hakyll tries to provide as many high-level functions as possible for common
18Hakyll tries to provide as many high-level functions as possible for common
19tasks, while the lower-level functions should also be accessible. If you think
19tasks, while the lower-level functions should also be accessible. If you think
20you're writing something that can be used for many sites, please send a patch,
20you're writing something that can be used for many sites, please send a patch,
21or your `hakyll.hs`, and we will see what we can do.
21or your `hakyll.hs`, and we will see what we can do.
22
22
23−## Well-documented
23+# Well-documented
24
24
25A key to being easy-to-use is documentation. That's why we try to provide as
25A key to being easy-to-use is documentation. That's why we try to provide as
26many working examples as possible. If you ever create a site using hakyll,
26many working examples as possible. If you ever create a site using hakyll,
web/reference.markdown+1−1
@@ -2,7 +2,7 @@
2title: Reference
2title: Reference
3---
3---
4
4
5−## Reference
5+# Reference
6
6
7We keep a copy of the reference of the latest stable version here. This
7We keep a copy of the reference of the latest stable version here. This
8reference is automatically generated by
8reference is automatically generated by
web/sidebar.markdown+2−2
@@ -1,9 +1,9 @@
1−## Navigation
1+# Navigation
2
2
3[home](/index.html)
3[home](/index.html)
4[philosophy](/philosophy.html)
4[philosophy](/philosophy.html)
5[about](/about.html)
5[about](/about.html)
6−[tutorial](/tutorial.html)
6+[tutorials](/tutorials.html)
7[examples](/examples.html)
7[examples](/examples.html)
8[reference](/reference.html)
8[reference](/reference.html)
9[changelog](/changelog.html)
9[changelog](/changelog.html)
web/templates/default.html+1−1
@@ -34,7 +34,7 @@
34 <div id="main">
34 <div id="main">
35 <div id="header">
35 <div id="header">
36 <img src="/images/lambda.png" alt="lambda" />
36 <img src="/images/lambda.png" alt="lambda" />
37− <h1>Hakyll - $title$</h1>
37+ Hakyll - $title$
38 </div>
38 </div>
39 <!-- Sidebar. -->
39 <!-- Sidebar. -->
40 <div id="sidebar">
40 <div id="sidebar">
web/templates/tutorial-item.htmlnew file+1
@@ -0,0 +1 @@
1+<li><a href="$url$">$title$</a></li>
web/templates/tutorial.html+13−3
@@ -1,10 +1,20 @@
1−$body
1+<h1>Tutorial: $title$</h1>
2
2
3+$body$
4+
5+<h1>Other tutorials</h1>
6+
7+The other tutorials can be found <a href="/tutorials.html">here</a>.
8+
3−<h2>Helping out</h2>
9+<h1>Helping out</h1>
4
10
5Hakyll is an open source project, and one of the hardest parts is writing
11Hakyll is an open source project, and one of the hardest parts is writing
6correct, up-to-date, and understandable documentation. Therefore, the
12correct, up-to-date, and understandable documentation. Therefore, the
7authors would really appreciate it if you would
13authors would really appreciate it if you would
8−<a href="http://groups.google.com/group/hakyll">give some feedback</a> about
14+<a href="http://groups.google.com/group/hakyll">give feedback</a> about
9the tutorials, and especially report errors or difficulties you encountered.
15the tutorials, and especially report errors or difficulties you encountered.
10Thanks!
16Thanks!
17+
18+If you run into any problems, all questions are welcome in the above google
19+group, or you could try the IRC channel, <code>#hakyll</code> on
20+<a href="http://freenode.net/">freenode</a>.
web/templates/tutorialitem.htmldeleted−3
@@ -1,3 +0,0 @@
1−<li>
2− <a href="$url">$title</a> $what.
3−</li>
web/templates/tutorials.html+2−2
@@ -1,9 +1,9 @@
1−<h2>Tutorials about Hakyll</h2>
1+<h1>Tutorials about Hakyll</h1>
2<p>
2<p>
3 Here is a list of tutorials I've written about Hakyll:
3 Here is a list of tutorials I've written about Hakyll:
4</p>
4</p>
5<ul>
5<ul>
6− $body
6+ $tutorials$
7</ul>
7</ul>
8<p>
8<p>
9 All these tutorials assume you are using the latest stable version of
9 All these tutorials assume you are using the latest stable version of
web/tutorials/01-installation.markdownnew file+36
@@ -0,0 +1,36 @@
1+---
2+title: Installation
3+---
4+
5+Why static websites?
6+--------------------
7+
8+Modern web frameworks make it easy to create huge dynamic websites. Why would
9+anyone still care about a static website?
10+
11+- Static websites are fast, because it's simply files served directly from the
12+ hard disk.
13+- Static websites are secure. Nobody has ever found an SQL injection in static
14+ pages.
15+- Static websites are easy to deploy. Just copy them to your webhost using
16+ (S)FTP/rsync/scp and you are done. They work on all webhosts: no CGI or extra
17+ modules needed for the web server.
18+
19+Why Hakyll?
20+-----------
21+
22+Hakyll is a [Haskell] library meant for creating small-to-medium sized static
23+websites. It is a powerful publishing tool, precisely because of the power of
24+Haskell. By using the awesome [pandoc] library, it is able to create your
25+website from a large variety of input formats.
26+
27+[Haskell]: http://haskell.org/
28+[pandoc]: http://johnmacfarlane.net/pandoc/
29+
30+Features include:
31+
32+- easy templating system;
33+- a simple HTTP server for previewing and compiling your website on the go;
34+- powerful syntax highlighting;
35+- modules for common items such as tags and feeds;
36+- easily extensible.
web/tutorial.markdown → web/tutorials/02-basics.markdownrenamed+13−103
@@ -1,42 +1,8 @@
1---
1---
2−title: Tutorial
2+title: The basics
3---
3---
4
4
5−Why static websites?
6−--------------------
7−
8−Modern web frameworks make it easy to create huge dynamic websites. Why would
9−anyone still care about a static website?
10−
11−- Static websites are fast, because it's simply files served directly from the
12− hard disk.
13−- Static websites are secure. Nobody has ever found an SQL injection in static
14− pages.
15−- Static websites are easy to deploy. Just copy them to your webhost using
16− (S)FTP/rsync/scp and you are done. They work on all webhosts: no CGI or extra
17− modules needed for the web server.
18−
19−Why Hakyll?
20−-----------
21−
22−Hakyll is a [Haskell] library meant for creating small-to-medium sized static
23−websites. It is a powerful publishing tool, precisely because of the power of
24−Haskell. By using the awesome [pandoc] library, it is able to create your
25−website from a large variety of input formats.
26−
27−[Haskell]: http://haskell.org/
28−[pandoc]: http://johnmacfarlane.net/pandoc/
29−
30−Features include:
31−
32−- easy templating system;
33−- a simple HTTP server for previewing and compiling your website on the go;
34−- powerful syntax highlighting;
35−- modules for common items such as tags and feeds;
36−- easily extensible.
37−
38−Let's get started!
5+## Let's get started!
39−------------------
40
6
41We're going to discuss a small brochure site to start with. You can find all
7We're going to discuss a small brochure site to start with. You can find all
42code and files necessary to build this site
8code and files necessary to build this site
@@ -83,7 +49,7 @@ look in the directory you cloned or downloaded.
83
49
84[brochure-hakyll.hs]: http://github.com/jaspervdj/hakyll-examples/blob/master/brochure/hakyll.hs
50[brochure-hakyll.hs]: http://github.com/jaspervdj/hakyll-examples/blob/master/brochure/hakyll.hs
85
51
86−### Images
52+## Images
87
53
88Let's start of with the `images/haskell-logo.png` file, because the processing
54Let's start of with the `images/haskell-logo.png` file, because the processing
89of this file is very simple: it is simply copied to the output directory. Let's
55of this file is very simple: it is simply copied to the output directory. Let's
@@ -122,7 +88,7 @@ content at all, we just copy the file.
122
88
123[copyFileCompiler]: /reference/Hakyll-Core-Writable-CopyFile.html#v:copyFileCompiler
89[copyFileCompiler]: /reference/Hakyll-Core-Writable-CopyFile.html#v:copyFileCompiler
124
90
125−### CSS
91+## CSS
126
92
127If we look at how the two CSS files are processed, we see something which looks
93If we look at how the two CSS files are processed, we see something which looks
128very familiar:
94very familiar:
@@ -154,7 +120,7 @@ We can wonder what Hakyll does with the resulting `String`. Well, it simply
154writes this to the file specified in the `route`! As you can see, routes and
120writes this to the file specified in the `route`! As you can see, routes and
155compilers work together to produce your site.
121compilers work together to produce your site.
156
122
157−### Templates
123+## Templates
158
124
159Next, we can see that the templates are compiled:
125Next, we can see that the templates are compiled:
160
126
@@ -168,12 +134,12 @@ good impression:
168~~~~~
134~~~~~
169<html>
135<html>
170 <head>
136 <head>
171− <title>Hakyll Example - $title$</title>
137+ <title>Hakyll Example - $$title$$</title>
172 </head>
138 </head>
173 <body>
139 <body>
174− <h1>$title$</h1>
140+ <h1>$$title$$</h1>
175
141
176− $body$
142+ $$body$$
177 </body>
143 </body>
178</html>
144</html>
179~~~~~
145~~~~~
@@ -181,7 +147,7 @@ good impression:
181A template is a text file to lay our some content. The content it lays out is
147A template is a text file to lay our some content. The content it lays out is
182called a page -- we'll see that in the next section. The syntax for templates is
148called a page -- we'll see that in the next section. The syntax for templates is
183intentionally very simplistic. You can bind some content by referencing the name
149intentionally very simplistic. You can bind some content by referencing the name
184−of the content *field* by using `$field$`, and that's it.
150+of the content *field* by using `$$field$$`, and that's it.
185
151
186You might have noticed how we specify a compiler (`compile`), but we don't set
152You might have noticed how we specify a compiler (`compile`), but we don't set
187any `route`. Why is this?
153any `route`. Why is this?
@@ -200,7 +166,7 @@ directory! We want to use it to lay out other items -- so we need to load
200
166
201By using the `templates/*` pattern, we compile all templates in one go.
167By using the `templates/*` pattern, we compile all templates in one go.
202
168
203−### Pages
169+## Pages
204
170
205The code for pages looks suspiciously more complicated:
171The code for pages looks suspiciously more complicated:
206
172
@@ -267,9 +233,9 @@ How should we process these pages? [pageCompiler] is the default compiler for
267pages. [pageCompiler] does a few things:
233pages. [pageCompiler] does a few things:
268
234
269- It parses the page into body and metadata
235- It parses the page into body and metadata
270−- It adds some extra metadata fields such as `$url$` and `$path$` (you shouldn't
236+- It adds some extra metadata fields such as `$$url$$` and `$$path$$` (you
271− worry about these for now)
237+ shouldn't worry about these for now)
272−- It fill in possible `$key$`'s in it's own body
238+- It fill in possible `$$key$$`'s in it's own body
273- It renders the page using pandoc
239- It renders the page using pandoc
274
240
275Which basically means that we end up with a `Page` that has the HTML content we
241Which basically means that we end up with a `Page` that has the HTML content we
@@ -324,59 +290,3 @@ at `example.com` and `example.com/subdir` without changing a single line of
324code.
290code.
325
291
326More tutorials are in the works...
292More tutorials are in the works...
327−
328−Various tips and tricks
329−-----------------------
330−
331−### Syntax highlighting
332−
333−Syntax highlighting is enabled by default in Hakyll. However, you also need to
334−enable it in pandoc. If no syntax highlighting shows up, try
335−
336− [jasper@phoenix] cabal install --reinstall -fhighlighting pandoc
337−
338−### When to rebuild
339−
340−If you execute a `./hakyll build`, Hakyll will build your site incrementally.
341−This means it will be very fast, but it will not pick up _all_ changes.
342−
343−- In case you edited `hakyll.hs`, you first want to compile it again.
344−- It is generally recommended to do a `./hakyll rebuild` before you deploy your
345− site.
346−
347−After rebuilding your site, all files will look as "modified" to the filesystem.
348−This means that when you upload your site, it will usually transfer all files --
349−this can generate more traffic than necessary, since it is possible that some
350−files were not actually modified. If you use `rsync`, you can counter this using
351−the `--checksum` option.
352−
353−Problems
354−--------
355−
356−### regex-pcre dependency on Mac OS
357−
358−Hakyll requires [regex-pcre], which might fail to build on Mac OS. To solve
359−this problem, make sure the [pcre] C library is installed (via homebrew or
360−macports). Then install [regex-pcre] using:
361−
362− cabal install --extra-include-dirs=/usr/local/include regex-pcre
363−
364−or
365−
366− cabal install --extra-include-dirs=/opt/local/include regex-pcre
367−
368−...and proceed to install Hakyll the regular way.
369−
370−[regex-pcre]: http://hackage.haskell.org/package/regex-pcre
371−[pcre]: http://www.pcre.org/
372−
373−### "File name does not match module name" on Mac OS
374−
375− Hakyll.hs:1:1:
376− File name does not match module name:
377− Saw: `Main'
378− Expected: `Hakyll'
379−
380−Is an error encountered on Mac OS when `hakyll.hs` is located on a
381−case-insensitive filesystem. A workaround is to rename it to something that
382−isn't the name of the module, for example, `site.hs`.
web/tutorials/faq.markdownnew file+53
@@ -0,0 +1,53 @@
1+---
2+title: FAQ
3+---
4+
5+## Does Hakyll support syntax highlighting?
6+
7+Syntax highlighting is enabled by default in Hakyll. However, you also need to
8+enable it in pandoc. If no syntax highlighting shows up, try
9+
10+ [jasper@phoenix] cabal install --reinstall -fhighlighting pandoc
11+
12+## When should I rebuild and when should I build?
13+
14+If you execute a `./hakyll build`, Hakyll will build your site incrementally.
15+This means it will be very fast, but it will not pick up _all_ changes.
16+
17+- In case you edited `hakyll.hs`, you first want to compile it again.
18+- It is generally recommended to do a `./hakyll rebuild` before you deploy your
19+ site.
20+
21+After rebuilding your site, all files will look as "modified" to the filesystem.
22+This means that when you upload your site, it will usually transfer all files --
23+this can generate more traffic than necessary, since it is possible that some
24+files were not actually modified. If you use `rsync`, you can counter this using
25+the `--checksum` option.
26+
27+## Problem with regex-pcre dependency on Mac OS
28+
29+Hakyll requires [regex-pcre], which might fail to build on Mac OS. To solve
30+this problem, make sure the [pcre] C library is installed (via homebrew or
31+macports). Then install [regex-pcre] using:
32+
33+ cabal install --extra-include-dirs=/usr/local/include regex-pcre
34+
35+or
36+
37+ cabal install --extra-include-dirs=/opt/local/include regex-pcre
38+
39+...and proceed to install Hakyll the regular way.
40+
41+[regex-pcre]: http://hackage.haskell.org/package/regex-pcre
42+[pcre]: http://www.pcre.org/
43+
44+## "File name does not match module name" on Mac OS
45+
46+ Hakyll.hs:1:1:
47+ File name does not match module name:
48+ Saw: `Main'
49+ Expected: `Hakyll'
50+
51+Is an error encountered on Mac OS when `hakyll.hs` is located on a
52+case-insensitive filesystem. A workaround is to rename it to something that
53+isn't the name of the module, for example, `site.hs`.