Moving stuff around
parent
c83f4c78d5
commit
4c8934997a
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
title: About Me
|
||||
---
|
||||
I collect the seal photos
|
||||
|
||||
Haven't missed a day yet!
|
3
build.sh
3
build.sh
|
@ -1,3 +0,0 @@
|
|||
nix-shell --pure -p \
|
||||
"haskellPackages.ghcWithPackages (pkgs: with pkgs; [ hakyll ])" \
|
||||
--command 'ghc --make site'
|
|
@ -1,116 +0,0 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
inetutils
|
||||
mtr
|
||||
sysstat
|
||||
|
||||
# For ACME Certificates
|
||||
certbot
|
||||
];
|
||||
|
||||
#######################################
|
||||
# Security/networking important configs
|
||||
#######################################
|
||||
|
||||
# Open ports for our domain
|
||||
networking = {
|
||||
domain = "cutesealfanpage.love";
|
||||
firewall.allowedTCPPorts = [ 80 443 ];
|
||||
};
|
||||
|
||||
# Add acme LetsEncrypt certs
|
||||
security.acme = {
|
||||
acceptTerms = true;
|
||||
validMinDays = 999;
|
||||
email = "admin@cutesealfanpage.love";
|
||||
|
||||
# uncomment this to use the staging server
|
||||
server = "https://acme-staging-v02.api.letsencrypt.org/directory";
|
||||
};
|
||||
|
||||
#######################################
|
||||
# List services that you want to enable
|
||||
#######################################
|
||||
services = {
|
||||
# Enable the OpenSSH daemon.
|
||||
openssh = {
|
||||
enable = true;
|
||||
permitRootLogin = "no";
|
||||
};
|
||||
|
||||
# Enable the Longview Agent
|
||||
# https://www.linode.com/docs/tools-reference/custom-kernels-distros/install-nixos-on-linode/#enable-longview-agent-optional
|
||||
longview = {
|
||||
enable = true;
|
||||
apiKeyFile = "/var/lib/longview/apiKeyFile";
|
||||
};
|
||||
|
||||
# Nginx config
|
||||
nginx = {
|
||||
enable = true;
|
||||
statusPage = true;
|
||||
recommendedGzipSettings = true;
|
||||
recommendedOptimisation = true;
|
||||
recommendedProxySettings = true;
|
||||
recommendedTlsSettings = true;
|
||||
|
||||
# https://nixos.org/nixos/manual/#module-security-acme-nginx
|
||||
virtualHosts = {
|
||||
|
||||
"cutesealfanpage.love" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
locations."/" = { proxyPass = "http://127.0.0.1:8000"; };
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
#######################################
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
#######################################
|
||||
users.users.alice = {
|
||||
isNormalUser = true;
|
||||
home = "/home/alice";
|
||||
description = "Alice Foobar";
|
||||
extraGroups = [
|
||||
"wheel" # Enable ‘sudo’ for the user.
|
||||
"networkmanager"
|
||||
];
|
||||
openssh.authorizedKeys.keys = [
|
||||
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMeBlGnpJ7dTVcrDdYlMsXFhADIYLc4K/acgsxwbZPOA alice@foobar"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
#######################################
|
||||
# NixOS / Linode special options and/or incancations
|
||||
#######################################
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "20.03"; # Did you read the comment?
|
||||
|
||||
imports = [ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
];
|
||||
|
||||
# special options and/or incancations
|
||||
boot.loader.grub.enable = true;
|
||||
boot.loader.grub.version = 2;
|
||||
networking.useDHCP = false;
|
||||
networking.interfaces.eth0.useDHCP = true;
|
||||
networking.usePredictableInterfaceNames = false;
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
title: Contact
|
||||
---
|
||||
If you have a seal or seal photos, I'd love to post them!
|
||||
|
||||
Send yours to admin AT cutesealfanpage.love
|
141
css/default.css
141
css/default.css
|
@ -1,141 +0,0 @@
|
|||
html {
|
||||
font-size: 62.5%;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 1.6rem;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
header {
|
||||
border-bottom: 0.2rem solid #000;
|
||||
}
|
||||
|
||||
nav {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
nav a {
|
||||
font-size: 1.8rem;
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-top: 3rem;
|
||||
padding: 1.2rem 0;
|
||||
border-top: 0.2rem solid #000;
|
||||
font-size: 1.2rem;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.4rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
article .header {
|
||||
font-size: 1.4rem;
|
||||
font-style: italic;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.logo a {
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@media (max-width: 319px) {
|
||||
body {
|
||||
width: 90%;
|
||||
margin: 0;
|
||||
padding: 0 5%;
|
||||
}
|
||||
header {
|
||||
margin: 4.2rem 0;
|
||||
}
|
||||
nav {
|
||||
margin: 0 auto 3rem;
|
||||
text-align: center;
|
||||
}
|
||||
footer {
|
||||
text-align: center;
|
||||
}
|
||||
.logo {
|
||||
text-align: center;
|
||||
margin: 1rem auto 3rem;
|
||||
}
|
||||
.logo a {
|
||||
font-size: 2.4rem;
|
||||
}
|
||||
nav a {
|
||||
display: block;
|
||||
line-height: 1.6;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 320px) {
|
||||
body {
|
||||
width: 90%;
|
||||
margin: 0;
|
||||
padding: 0 5%;
|
||||
}
|
||||
header {
|
||||
margin: 4.2rem 0;
|
||||
}
|
||||
nav {
|
||||
margin: 0 auto 3rem;
|
||||
text-align: center;
|
||||
}
|
||||
footer {
|
||||
text-align: center;
|
||||
}
|
||||
.logo {
|
||||
text-align: center;
|
||||
margin: 1rem auto 3rem;
|
||||
}
|
||||
.logo a {
|
||||
font-size: 2.4rem;
|
||||
}
|
||||
nav a {
|
||||
display: inline;
|
||||
margin: 0 0.6rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
body {
|
||||
width: 60rem;
|
||||
margin: 0 auto;
|
||||
padding: 0;
|
||||
}
|
||||
header {
|
||||
margin: 0 0 3rem;
|
||||
padding: 1.2rem 0;
|
||||
}
|
||||
nav {
|
||||
margin: 0;
|
||||
text-align: right;
|
||||
}
|
||||
nav a {
|
||||
margin: 0 0 0 1.2rem;
|
||||
display: inline;
|
||||
}
|
||||
footer {
|
||||
text-align: right;
|
||||
}
|
||||
.logo {
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
.logo a {
|
||||
float: left;
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
}
|
25
default.nix
25
default.nix
|
@ -1,25 +0,0 @@
|
|||
{ pkgs ? import <nixpkgs> { } }:
|
||||
|
||||
pkgs.stdenv.mkDerivation rec {
|
||||
pname = "test-blog";
|
||||
version = "latest";
|
||||
src = "./${pname}";
|
||||
phases = "installPhase";
|
||||
buildInputs =
|
||||
[ "haskellPackages.ghcWithPackages (pkgs: with pkgs; [ hakyll ])" ];
|
||||
installPhase = ''
|
||||
echo Install Phase
|
||||
'';
|
||||
buildPhase = ''
|
||||
ghc --make site
|
||||
'';
|
||||
}
|
||||
|
||||
pkgs.run-command "my-example" {} ''
|
||||
echo My example command is running
|
||||
|
||||
pwd
|
||||
cd test-blog
|
||||
|
||||
./site watch
|
||||
''
|
83
deploy.sh
83
deploy.sh
|
@ -1,83 +0,0 @@
|
|||
# Deploy script
|
||||
#
|
||||
# Run with
|
||||
# $ sudo ./deploy.sh
|
||||
# and enter password
|
||||
# Change up user and IP as appropriate
|
||||
# for each site
|
||||
# Add this for dry-run:
|
||||
# --dry-run \
|
||||
# time added for timing at the end. Check Real time
|
||||
echo "rsycing the blog to remote"
|
||||
echo "please enter remote alice password:"
|
||||
time rsync \
|
||||
--recursive \
|
||||
--update \
|
||||
--executability \
|
||||
--times \
|
||||
--compress \
|
||||
--stats \
|
||||
--rsh=ssh \
|
||||
../seal-blog \
|
||||
alice@172.105.4.234:/home/alice
|
||||
|
||||
# Move the configuration script
|
||||
# scp configuration.nix alice@172.105.4.234:/etc/nixos/configuration.nix
|
||||
|
||||
# Restart NixOS
|
||||
# ssh -t alice@172.105.4.234 sudo nixos-rebuild switch
|
||||
|
||||
# Kill the website
|
||||
# ssh -t alice@172.105.4.234 pkill site
|
||||
|
||||
# Build the site
|
||||
# ssh -t alice@172.105.4.234
|
||||
echo -e "\n\nCopy files over finished!"
|
||||
echo -e "\n\n\nAlice needs to do some steps"
|
||||
echo "Enter her password so she can get to work:"
|
||||
ssh -t alice@172.105.4.234 "
|
||||
alias echo='echo -e'
|
||||
|
||||
echo 'Now enter her password for sudo inside the ssh'
|
||||
sudo echo 'echo ULTIMATE POWER'
|
||||
|
||||
echo '\nMake sure we know where we are'
|
||||
ls
|
||||
pwd
|
||||
|
||||
echo '\ncd seal-blog'
|
||||
cd seal-blog
|
||||
|
||||
echo 'copy the configuration over'
|
||||
echo 'TODO: make this only if changed'
|
||||
sudo mv configuration.nix /etc/nixos/configuration.nix
|
||||
|
||||
echo '\nRebuild NixOS'
|
||||
echo 'TODO: make this only if changed'
|
||||
echo sudo nixos-rebuild switch
|
||||
|
||||
echo '\npkill the site'
|
||||
echo 'TODO: make this only if necessary'
|
||||
echo pkill site
|
||||
|
||||
echo '\nBuild the site'
|
||||
echo 'TODO: shouldnt need to build on deploy server'
|
||||
echo ./build.sh
|
||||
|
||||
echo 'Start the site in the background using nohup'
|
||||
echo 'TODO: make this only if necessary'
|
||||
echo nohup 'site watch' >>/dev/null 2>>/dev/null &
|
||||
echo site watch &
|
||||
echo disown
|
||||
echo '\n\nDeploy finished!\n\n'
|
||||
"
|
||||
|
||||
# on alice
|
||||
# ssh -t alice@172.105.4.234
|
||||
# in a week (August 21st)
|
||||
# need to run `sudo certbot certonly`
|
||||
# get the cert for the site, and set it in nginx
|
||||
|
||||
# nohup
|
||||
# https://superuser.com/a/38567
|
||||
# https://en.wikipedia.org/wiki/Nohup
|
|
@ -1,222 +0,0 @@
|
|||
{-# LANGUAGE QuasiQuotes #-}
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
-- enter in repl:
|
||||
-- :set -XOverloadedStrings
|
||||
|
||||
import System.IO.Unsafe ( unsafePerformIO )
|
||||
import System.Random ( randomRIO )
|
||||
import System.Directory ( listDirectory )
|
||||
import Control.Monad ( forM, forM_, replicateM )
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import qualified Data.Text.IO as TIO
|
||||
import Data.List
|
||||
import Data.Time.Calendar
|
||||
import Data.Time.Clock
|
||||
import NeatInterpolation
|
||||
-- https://hackage.haskell.org/package/neat-interpolation-0.3.2.1/docs/NeatInterpolation.html
|
||||
|
||||
|
||||
{-
|
||||
Gives a random number between from and to
|
||||
Uses unsafeIO to get the number out of IO
|
||||
It's safe because we're only shuffling
|
||||
-}
|
||||
randomNum from to =
|
||||
unsafePerformIO $
|
||||
randomRIO (from, to)
|
||||
|
||||
{-
|
||||
Given a list, returns a random element
|
||||
-}
|
||||
randomPull lst = lst !! r'
|
||||
where r' = randomNum 0 l
|
||||
l = length lst - 1
|
||||
|
||||
blogPost
|
||||
:: Text
|
||||
-> Text
|
||||
-> Text
|
||||
-> Text
|
||||
-> Text
|
||||
-> Day
|
||||
-> Text
|
||||
blogPost title see adj1 adj2 seal date =
|
||||
[text|
|
||||
---
|
||||
title: $title
|
||||
---
|
||||
|
||||
$see this $adj1, $adj2 seal!
|
||||
<img
|
||||
src="/images/$seal"
|
||||
alt="A picture of a $adj1, $adj2 seal! <3"
|
||||
width="400"
|
||||
/>
|
||||
|]
|
||||
|
||||
-- Returns a filePath, and a corresponding random blog post
|
||||
sealText :: Integer -> Day -> (FilePath, Text)
|
||||
sealText n date = ( fileName', blogPost')
|
||||
where
|
||||
fileName' =
|
||||
show date ++ "-"
|
||||
++ "seal-post-"
|
||||
++ show n
|
||||
++ ".markdown"
|
||||
date' = T.pack . show $ date
|
||||
title = T.pack $ "Seal Post Number " ++ show n
|
||||
title' = T.replace " " "-" title
|
||||
blogPost' =
|
||||
blogPost
|
||||
title
|
||||
(randomPull looks)
|
||||
(randomPull adjectives)
|
||||
(randomPull adjectives')
|
||||
(randomPull sealImages)
|
||||
date
|
||||
|
||||
|
||||
-- Generating all the previous blog posts
|
||||
-- Only need to do this once
|
||||
-- Another function takes care of creating today's blog post
|
||||
startDate = fromGregorian 1998 06 11
|
||||
-- startDate = fromGregorian 2020 07 31
|
||||
{-# NOINLINE today #-}
|
||||
today = unsafePerformIO $ utctDay <$> getCurrentTime
|
||||
daysSinceStart = diffDays today startDate
|
||||
allDatesSinceStart = map (`addDays` startDate) [1..daysSinceStart]
|
||||
|
||||
|
||||
|
||||
allBlogPosts = map f zipped
|
||||
where
|
||||
f = uncurry sealText
|
||||
zipped = zip [1..] allDatesSinceStart
|
||||
|
||||
writeToFile (fp, txt) = write fp' txt
|
||||
where
|
||||
write = TIO.writeFile
|
||||
fp' = "posts/" ++ fp
|
||||
|
||||
|
||||
-- For all the blog posts
|
||||
-- Write them to file
|
||||
unsafeGenerateAllBlogs = forM_ allBlogPosts writeToFile
|
||||
|
||||
|
||||
|
||||
prettyPrint :: Show a => [a] -> IO ()
|
||||
prettyPrint = putStr . unlines . map show
|
||||
|
||||
{-
|
||||
Adjectives
|
||||
-}
|
||||
adjectives :: [Text]
|
||||
adjectives =
|
||||
[ "absorbing"
|
||||
, "adorable"
|
||||
, "alluring"
|
||||
, "ambrosial"
|
||||
, "amiable"
|
||||
, "appealing"
|
||||
, "attractive"
|
||||
, "beautiful"
|
||||
, "bewitching"
|
||||
, "captivating"
|
||||
, "charismatic"
|
||||
, "charming"
|
||||
, "choice"
|
||||
, "cute"
|
||||
, "dainty"
|
||||
, "darling"
|
||||
, "dear"
|
||||
, "delectable"
|
||||
, "delicate"
|
||||
, "delicious"
|
||||
, "delightful"
|
||||
, "desirable"
|
||||
, "dishy"
|
||||
, "dreamy"
|
||||
, "electrifying"
|
||||
, "elegant"
|
||||
, "enamoring"
|
||||
, "engaging"
|
||||
, "engrossing"
|
||||
, "enthralling"
|
||||
, "entrancing"
|
||||
, "eye-catching"
|
||||
, "fascinating"
|
||||
, "fetching"
|
||||
, "glamorous"
|
||||
, "graceful"
|
||||
, "heavenly"
|
||||
, "infatuating"
|
||||
, "inviting"
|
||||
, "irresistible"
|
||||
, "likable"
|
||||
, "lovable"
|
||||
, "lovely"
|
||||
, "magnetizing"
|
||||
, "nice"
|
||||
, "pleasant"
|
||||
, "precious"
|
||||
, "pretty"
|
||||
, "provocative"
|
||||
, "rapturous"
|
||||
, "ravishing"
|
||||
, "seducing"
|
||||
, "seductive"
|
||||
, "suave"
|
||||
, "sweet"
|
||||
, "tantalizing"
|
||||
, "tempting"
|
||||
, "titillating"
|
||||
, "winning"
|
||||
, "winsome"
|
||||
]
|
||||
|
||||
adjectives' :: [Text]
|
||||
adjectives' =
|
||||
[ "ample"
|
||||
, "bearish"
|
||||
, "big"
|
||||
, "butterball"
|
||||
, "buxom"
|
||||
, "chunky"
|
||||
, "fatty"
|
||||
, "flabby"
|
||||
, "fleshy"
|
||||
, "full-figured"
|
||||
, "hefty"
|
||||
, "husky"
|
||||
, "pleasingly plump"
|
||||
, "plump"
|
||||
, "plumpish"
|
||||
, "podgy"
|
||||
, "portly"
|
||||
, "pudgy"
|
||||
, "roly-poly"
|
||||
, "rotund"
|
||||
, "round"
|
||||
, "stout"
|
||||
, "tubby"
|
||||
, "zaftig"
|
||||
]
|
||||
|
||||
looks :: [Text]
|
||||
looks =
|
||||
[ "Look at"
|
||||
, "Gaze upon"
|
||||
, "Check out"
|
||||
, "Witness!"
|
||||
, "Look upon and tremble at"
|
||||
, "Lookie here at"
|
||||
, "Whoa! See"
|
||||
]
|
||||
|
||||
sealImages :: [Text]
|
||||
sealImages = map T.pack
|
||||
. sort
|
||||
. unsafePerformIO
|
||||
$ listDirectory "images/seals"
|
16
index.html
16
index.html
|
@ -1,16 +0,0 @@
|
|||
---
|
||||
title: Seal Blog!
|
||||
---
|
||||
|
||||
<h2>Welcome</h2>
|
||||
|
||||
<img src="/images/seal1.jpg" style="float: right; margin: 10px;" width="200px"/>
|
||||
|
||||
<p>Welcome to my seal blog!</p>
|
||||
|
||||
<p>Here's a list of recent posts for your reading pleasure:</p>
|
||||
|
||||
<h2>Seal Posts</h2>
|
||||
$partial("templates/post-list.html")$
|
||||
|
||||
<p>…or you can find more in the <a href="/archive.html">archives</a>.</p>
|
67
site.hs
67
site.hs
|
@ -1,67 +0,0 @@
|
|||
--------------------------------------------------------------------------------
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
import Data.Monoid (mappend)
|
||||
import Hakyll
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
main :: IO ()
|
||||
main = hakyll $ do
|
||||
match "images/*" $ do
|
||||
route idRoute
|
||||
compile copyFileCompiler
|
||||
|
||||
match "css/*" $ do
|
||||
route idRoute
|
||||
compile compressCssCompiler
|
||||
|
||||
match (fromList ["about.rst", "contact.markdown"]) $ do
|
||||
route $ setExtension "html"
|
||||
compile $ pandocCompiler
|
||||
>>= loadAndApplyTemplate "templates/default.html" defaultContext
|
||||
>>= relativizeUrls
|
||||
|
||||
match "posts/*" $ do
|
||||
route $ setExtension "html"
|
||||
compile $ pandocCompiler
|
||||
>>= loadAndApplyTemplate "templates/post.html" postCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" postCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
create ["archive.html"] $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll "posts/*"
|
||||
let archiveCtx =
|
||||
listField "posts" postCtx (return posts) `mappend`
|
||||
constField "title" "Archives" `mappend`
|
||||
defaultContext
|
||||
|
||||
makeItem ""
|
||||
>>= loadAndApplyTemplate "templates/archive.html" archiveCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" archiveCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
|
||||
match "index.html" $ do
|
||||
route idRoute
|
||||
compile $ do
|
||||
posts <- recentFirst =<< loadAll "posts/*"
|
||||
let indexCtx =
|
||||
listField "posts" postCtx (return posts) `mappend`
|
||||
constField "title" "Home" `mappend`
|
||||
defaultContext
|
||||
|
||||
getResourceBody
|
||||
>>= applyAsTemplate indexCtx
|
||||
>>= loadAndApplyTemplate "templates/default.html" indexCtx
|
||||
>>= relativizeUrls
|
||||
|
||||
match "templates/*" $ compile templateBodyCompiler
|
||||
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
postCtx :: Context String
|
||||
postCtx =
|
||||
dateField "date" "%B %e, %Y" `mappend`
|
||||
defaultContext
|
|
@ -1,2 +0,0 @@
|
|||
Here you can find all my previous posts:
|
||||
$partial("templates/post-list.html")$
|
|
@ -1,33 +0,0 @@
|
|||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>My Seal Blog - $title$</title>
|
||||
<link rel="stylesheet" href="/css/default.css" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<div class="logo">
|
||||
<a href="/">My Seal Blog</a>
|
||||
</div>
|
||||
<nav>
|
||||
<a href="/">Home</a>
|
||||
<a href="/about.html">About</a>
|
||||
<a href="/contact.html">Contact</a>
|
||||
<a href="/archive.html">Archive</a>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main role="main">
|
||||
<h1>$title$</h1>
|
||||
$body$
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
Site proudly generated by
|
||||
<a href="http://jaspervdj.be/hakyll">Hakyll</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
|
@ -1,7 +0,0 @@
|
|||
<ul>
|
||||
$for(posts)$
|
||||
<li>
|
||||
<a href="$url$">$title$</a> - $date$
|
||||
</li>
|
||||
$endfor$
|
||||
</ul>
|
|
@ -1,11 +0,0 @@
|
|||
<article>
|
||||
<section class="header">
|
||||
Posted on $date$
|
||||
$if(author)$
|
||||
by $author$
|
||||
$endif$
|
||||
</section>
|
||||
<section>
|
||||
$body$
|
||||
</section>
|
||||
</article>
|
Loading…
Reference in New Issue