posts: add diagram for shared Guix profiles and store
[software/elephly-net.git] / site.hs
diff --git a/site.hs b/site.hs
index 3b9bfab..f854817 100644 (file)
--- a/site.hs
+++ b/site.hs
@@ -11,7 +11,7 @@ import           Text.Pandoc.Options
 config :: Configuration
 config = defaultConfiguration
   { deployCommand =
-      "rsync -Havz _site/ rekado@elephly.net:/srv/disk1/rekado/elephly.net" }
+      "rsync -Havz _site/ rekado@elephly.net:/home/rekado/elephly.net" }
 
 myFeedConfiguration :: FeedConfiguration
 myFeedConfiguration = FeedConfiguration
@@ -27,30 +27,35 @@ main :: IO ()
 main = hakyllWith config $ do
     tags <- buildTags "posts/*.markdown" (fromCapture "tags/*.html")
 
-    match "css/*" $ do
-        route   idRoute
-        compile compressCssCompiler
-
     match (    "js/libs/*"
           .||. "js/hyphenator/*"
           .||. "js/hyphenator/patterns/*"
           .||. "js/*"
+          .||. "css/*.woff"
           .||. "downies/*"
           .||. "downies/music/*"
           .||. "images/*"
           .||. "images/posts/*"
           .||. "images/posts/*/*"
           .||. "favicon.ico"
+          .||. "rekado.pubkey"
           ) $ do
       route   idRoute
       compile copyFileCompiler
 
+    match "css/*" $ do
+        route   idRoute
+        compile compressCssCompiler
+
+    -- place static markdown files in site root
     match ( "static/*.markdown" .||. "static/*/*.markdown" ) $ do
-      route   $ setExtension "html" `composeRoutes` gsubRoute "static/" (const "")
+      route   $ setExtension "html"
+        `composeRoutes` gsubRoute "static/" (const "")
       compile $ pandocCompiler
         >>= loadAndApplyTemplate "templates/default.html" defaultContext
         >>= relativizeUrls
 
+    -- place static html files in site root
     match "static/*.html" $ do
       route   $ gsubRoute "static/" (const "")
       compile $ do
@@ -61,9 +66,6 @@ main = hakyllWith config $ do
     match "posts/*.markdown" $ do
       route   $ setExtension "html"
       compile defaultCompiler
-        --itemTpl <- loadBody "templates/photo.html" 
-        --metadata <- getMetadata
-        --let m = M.lookup "photo" metadata
 
     -- direct links
     match "posts/2010-03-28-elephly.markdown" $ version "direct" $  do
@@ -83,6 +85,7 @@ main = hakyllWith config $ do
         let archiveCtx =
               constField "title" title <>
               field "posts" (\_ -> postList "posts/*.markdown" recentFirst) <>
+              field "tags" (\_ -> renderTagList tags) <>
               defaultContext
 
         makeItem ""
@@ -94,7 +97,7 @@ main = hakyllWith config $ do
     create ["atom.xml"] $ postFeed renderAtom
 
     -- always show the most recent blog post
-    create ["index.html"] $ do
+    create ["posts/latest.html"] $ do
       route idRoute
       compile $ do
         mostRecent <- fmap head . recentFirst =<< loadAllSnapshots "posts/*.markdown" "non-relative"
@@ -108,6 +111,7 @@ main = hakyllWith config $ do
       compile $ do
         let ctx = constField "title" title <>
                   field "posts" (\_ -> postList pattern recentFirst) <>
+                  tagsField "tags" tags <>
                   defaultContext
 
         makeItem ""
@@ -120,12 +124,11 @@ main = hakyllWith config $ do
 
 --------------------------------------------------------------------------------
 postCtx :: Context String
-postCtx =
-    dateField "date" "%B %e, %Y" <>
-    photoSnippet <>
-    flattrSnippet <>
-    licenseSnippet <>
-    defaultContext
+postCtx = dateField "date" "%B %e, %Y"
+          <> photoSnippet
+          <> flattrSnippet
+          <> licenseSnippet
+          <> defaultContext
 
 -- If a post declares a certain key in the metadata header,
 -- load the given template, otherwise ignore.