- Haskell 67.6%
- Nix 16.5%
- Typst 11.2%
- JavaScript 3.5%
- Just 1.2%
| .github/workflows | ||
| css | ||
| cv | ||
| fonts | ||
| nix | ||
| posts | ||
| root | ||
| src | ||
| static | ||
| typst/pkgs/html-shim/0.1.0 | ||
| .envrc | ||
| .gitattributes | ||
| .gitignore | ||
| .hlint.yaml | ||
| .prettierrc | ||
| cabal.project | ||
| flake.lock | ||
| flake.nix | ||
| fourmolu.yaml | ||
| justfile | ||
| LICENSE | ||
| README.md | ||
| rednoise.cabal | ||
| tailwind.config.js | ||
web.youwen.dev
This is my personal site. It is built using a rather hacked version of the Hakyll system, a static site generation framework configured using the Haskell language.
You can view the site at web.youwen.dev, deployed using GitHub pages and cached through Cloudflare's CDN.
tech stack
build time
- Haskell
- Hakyll (the static site generator library I use)
- blaze (an HTML combinator library I use for templating)
- clay (CSS preprocessor as a Haskell eDSL)
- pandoc (this one needs no introduction)
- LiquidHaskell (a highly experimental theorem prover which refines Haskell types using logical predicates to guarantee correctness, developed at UCSD)
- Nix
- Typst
run time
- HTML
- CSS (tailwind)
- JavaScript (almost none, soon to become PureScript)
hacking
(only works on Linux because I’m lazy.)
Install nix, then run this to compile the SSG binary,
which you can run with result/bin/rednoise watch for a hot reloading server.
Here you can hack on the Typst source files to edit the content without
recompiling everything.
nix build
To run a local preview server (not hot reloading) of the production website (sans the fonts),
nix run
# server will run at localhost:8000
To get a development environment,
nix develop
Or you can direnv allow, if you have it. A pre-commit hook will also be
installed automatically. Inspect justfile for useful scripts.
Before submitting a PR run all Haskell tests, formatting checks, lints, etc, using
nix build .#checks.x86_64-linux.pre-commit-check
Note that nix flake check always fails due to haskell.nix IFD jank so we
have to run the pre-commit-check explicitly, which bundles all other checks.
license
Most markup content (primarily in Typst files) is CC-BY-SA-4.0. The rest (that is, everything not covered by the Creative Commons license), including but not limited to logical code units, is GPL3 licensed. This includes any Typst code that does not contain useful content (i.e. prose), but rather is used for programming purposes.
