Sure, here's the Makefile. Also, if you want more examples of working Hakyll setups, there's a long list of them here:
https://jaspervdj.be/hakyll/examples.html # Binary tool we use to build the website.
bins = dist-newstyle/build/*/*/*/*/site/build/site
tool = $(bins)/site
# By default, we build everything if you invoke `make` without a target.
all: build
.PHONY: all
# The tool used to build the site is a Hakyll binary configured by `site.hs`.
# This rule automatically builds the tool if it's out of date.
$(tool): site.hs site.cabal
cabal v2-build
# The `build` target builds the web site's out-of-date static assets.
.PHONY: build
build: $(tool) pdfs
$(tool) build
# The `rebuild` target forces a rebuild of all web assets.
.PHONY: rebuild
rebuild: $(tool)
$(tool) rebuild
# This `push` rule publishes the static site to our CDN (firebase).
# It requires:
#
# - the `firebase` tool:
# wget -O ~/bin/firebase https://firebase.tools/bin/linux/latest \
# && chmod +x ~/bin/firebase
# # Docs: https://firebase.google.com/docs/cli#linux
#
# - `firebase login --no-localhost` to have been run.
#
# You may need to run `firebase login --no-localhost --reauth` if
# the local authentical credentials time out.
.PHONY: push
push: build
firebase deploy --only hosting
# Generate PDF versions of selected blog posts.
.PHONY: pdfs
pdfs: images/public_html/blog/pix-20240601/sampling-with-sql.pdf
images/public_html/blog/pix-20240601/sampling-with-sql.pdf: posts/2024-08-23-sampling-with-sql.md
( cd posts && pandoc --metadata-file=../templates/latex-header-includes.yaml -t pdf -o ../$@.tmp --pdf-engine=pdflatex ../$< && mv -f ../$@.tmp ../$@ )