Get a Haskell development environment up and running quickly. Thanks to Nix, this template is optimized for a fully reproducible and friendly development environment. It is based on:
- Nix + Flakes (via
github:srid/haskell-flake
) + GHC 9.6 - VSCode + HLS
- fourmolu autoformatting
- Relude as Prelude.
.hlint.yaml
is from relude
- Devshell commands are provided via just; run
just
in devshell.
If you have an existing Haskell project, you should probably use https://github.com/srid/haskell-flake instead.
Initialize this template using:
nix --accept-flake-config run github:juspay/omnix -- \
init github:srid/haskell-template -o ./yourproject
tldr: Install Nix, setup direnv, open in VSCode, install recommended extensions and run just run
.
Full instructions: https://srid.ca/haskell-template/start
Recommended dev environment setup: https://nixos.asia/en/direnv
- Run
nix flake update
to update all flake inputs. - Run
nix --accept-flake-config run github:juspay/omnix ci
to build all outputs. - pre-commit hooks will automatically be setup in Nix shell. You can also run
pre-commit run -a
manually to run the hooks (e.g.: to autoformat the project tree using fourmolu, nixpkgs-fmt, etc. as well run programs like hlint). The hooks will checked as part of flake checks (thus CI). - Run
just docs
to start Hoogle with packages in your cabal file. - Run the application without installing:
nix run github:srid/haskell-template
(ornix run .
from checkout) - Common workflows
- Adding library dependencies in Nix: https://community.flake.parts/haskell-flake/dependency
- Adding tests: https://srid.ca/haskell-template/tests
Questions? Ideas? Suggestions? Join our NixOS Zulip or post in Github Discussions.