Slide deck for the 2026-05-05 Helsinki Functional Programming meetup talk on building riski5 — a RISC-V soft core in Clash (Haskell), running on a 22-year-old Altera DE2 FPGA, with Linux 6.18.22 booting on real silicon.
The deck is plain HTML5 (Pandoc DZSlides), arrow-key navigable, and
deployed via GitHub Pages from master/docs/.
→ https://purefunsolutions.github.io/riski5-helsinki-functional-programming-meetup-presentation/
(Once GitHub Pages is enabled — see Deploying below.)
Keyboard navigation:
| Key | Action |
|---|---|
→ / ↓ / Space |
next slide |
← / ↑ |
previous slide |
Home |
first slide |
End |
last slide |
nix develop # ghc, cabal, hakyll, pandoc, graphviz, …
cabal run site -- watch # http://localhost:8000, live-reloadTo build once into docs/ (the deployed artifact):
cabal run site -- buildTo wipe _cache/ + docs/:
cabal run site -- clean- Slides are a single Markdown file:
SLIDES.md ## Headingis one slide (because--slide-level=2)# Headingintroduces a section cluster (becomes a title slide)- Diagrams: edit
assets/diagrams/*.dotand Hakyll re-renders to SVG via thedotCLI on save (when running undercabal run site -- watch) - Custom CSS in
assets/css/overrides.css(lambda-corner branding, font tweaks)
- Push
masterto GitHub - Repo → Settings → Pages → Source: Deploy from a branch
- Branch:
master, folder:/docs - Wait ~60 s, deck is live at the URL above
The built artifact (docs/) is committed alongside source — no CI
required. Rebuild locally before each push.
nix fmt # alejandra + fourmolu + prettier + deadnix + statix
nix flake check # REUSE compliance + treefmt --ciDual-licensed:
- Code (
site.hs,flake.nix,nix/*,cabal.project,presentation.cabal,fourmolu.yaml) — MIT - Content (
SLIDES.md,assets/css/*,assets/diagrams/*,assets/images/*,README.md,CLAUDE.md) — CC-BY-4.0
Per-file SPDX headers are enforced via nix flake check (REUSE 6.x).
The Pure Fun Solutions lambda logo (assets/images/lambda-logo.png) is
copied from https://github.com/purefunsolutions/purefun-front.
alterade2-flake— Quartus II 13.0sp1 + USB-Blaster on NixOSverilambda— Haskell-Verilator bindings, type-preservingriski5— the RISC-V core itself