From 2b541de07923aa4fe0109a6f23d4e405e413bc4d Mon Sep 17 00:00:00 2001 From: Youwen Wu Date: Fri, 16 Aug 2024 06:51:01 -0700 Subject: [PATCH] docs: add development instructions --- README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/README.md b/README.md index 82ef431..0768ca0 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,45 @@ It then maps the original World to the changed World, with our desired IO action > From the second perspective, an IO action transforms the whole world. IO actions are actually pure, because they receive a unique world as an argument and then return the changed world. See [this](https://lean-lang.org/functional_programming_in_lean/monads/io.html) for more information. + +## Hacking on suntheme + +It's trivially easy to get started with suntheme development thanks to [Nix](https://nixos.org/), the purely functional package manager. +Naturally, we leverage it as our primary package manager, for both Hackage packages and development tools like language servers and the like. + +First, install Nix through your preferred avenue. If unsure, we recommend [the Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer). +Make sure flakes and nix-command are enabled (the Determinate Installer will enable them by default). + +Once you have `nix`, simply type + +```bash +nix develop +``` + +Say yes to any prompts asking you to allow substituters or trust public keys. +Nix will fetch all of the required packages, such as GHC and Hackage dependencies. +Additionally, you will have access to `hlint` and the `haskell-language-server`. + +To create a build, type + +```bash +nix build +``` + +A binary will be produced in `result/bin/suntheme`. + +To make `suntheme` available in the shell without outputting to `result`, use + +```bash +nix shell +``` + +This will build a binary just like `nix build` but add it temporarily to the PATH, so you can just type `suntheme`. + +To build and run `suntheme` immediately without adding it to the PATH, use + +```bash +nix run +``` + +This will build a binary just like `nix shell` but immediately execute it.