Source for https://functionalprogramming.in/
Install Nix, enable Flakes (see below) and then run bin/run
to get the site up and running locally. See further below for static site generation.
To develop with full IDE support in Visual Studio Code, follow these steps:
- Install Nix & enable Flakes
- Run
nix develop -c haskell-language-server
to sanity check your environment - Open the repository as single-folder workspace in Visual Studio Code
- Install the recommended extensions
- Ctrl+Shift+P to run the command "Nix-Env: Select Environment" and select
shell.nix
. The extension will ask you to reload VSCode at the end.
- Press Ctrl+Shift+B in VSCode, or run
bin/run
in terminal, to launch the Ema dev server, and navigate to http://localhost:8081/
All but the final step need to be done only once. Check the Ema tutorial next.
- This project uses relude as its prelude, as well as Tailwind+Blaze as CSS utility and HTML DSL. Even though the author highly recommends them, you are of course free to swap them out for the library of your choice.
- Tailwind CSS is compiled, alongside Ghcid, via foreman (see
./Procfile
)
- Tailwind CSS is compiled, alongside Ghcid, via foreman (see
- Configuration:
- To change the port (or the Ema CLI arguments, used by
bin/run
), see./.ghcid
(if you leave out--port
a random port will be used) - To update Ema to the latest Git revision, run
nix flake lock --update-input ema
or justnix flake update
(the latter updates all Nix inputs)- Be sure to check https://ema.srid.ca/guide/upgrade for changes needed.
- To add/remove Haskell dependencies, see the .cabal file. If a dependency is unavailable in nixpkgs, you can override it (to point to say a Git repo) in the
source-overrides
(oroverrides
if you need more power) attribute of flake.nix. You can imitate the manner in which theema
package itself is overridden.
- To change the port (or the Ema CLI arguments, used by
- To generate the site, run:
mkdir /tmp/site nix run . -- gen /tmp/site
- You might want to change or remove the
<base>
tag inMain.hs
depending on where you will be deploying the site.
- You might want to change or remove the
To use this repository without Nix, such as with plain Cabal or Stack, you need to have the following installed manually:
- ghcid (used by
bin/run-haskell
which./Procfile
invokes) - tailwind runner along with tailwind CLI
- foreman (or one of its rewrites)
Once all the above are installed, run foreman start
to start the Ema live server.