nixpkgs/pkgs/development/compilers/elm/packages/README.md
Marek Fajkus a97986a481 elmPackages.{elm-test,elm-analyse..}: tooling additions and fixes
Extends the number of available tools for Elm language.

1. fix and move "elm-test"
Previously located in nodePackages.elm-test but broken (see binwrap info).
Now fixed and located in elmPackages.elm-test

2. add "elm-verify-examples"
Generate tests from documentation examples

3. add "elm-upgrade"
upgrade assistant using statical analysis

4. add "elm-analyse"
static analysis for elm code (linter)

5. move "elm-doc-preview"
originally located in nodePackages.elm-upgrade - moved for consistency

6. add "elmi-to-json"
transforms elmi files to json - used by other tools like elm-test and
elm-verify-examples

Node.js based dependencies are defined the same way as nodePackages
contaparts but are independent (has it's own packages.json)

patch-binwrap.nix is used to as a replacement for binwrap package
used by some nodejs dependencies that depends on Haskell binaries
(elm-test and elm-verify-examples).

BREAKING CHANGE
===============
elm-doc-preview (as well as broken elm-test) is now commented
in `node-packages-v10.json` and should be removed once new
nix-expressions for node10 are generated (out of scope of this PR)

There are still 2 outstanding elm related packages in nodePackages

1. elm-oracle - legacy package which is not compatible with elm 0.19
2. elm-live - should be moved in the future I think
2019-06-18 21:29:10 +02:00

26 lines
1.3 KiB
Markdown

# Elm packages
Mixtures of useful Elm lang tooling containing both Haskell and Node.js based utilities.
## Upgrades
Haskell parts of the ecosystem are using [cabal2nix](https://github.com/NixOS/cabal2nix).
Please refer to [nix documentation](https://nixos.org/nixpkgs/manual/#how-to-create-nix-builds-for-your-own-private-haskell-packages)
and [cabal2nix readme](https://github.com/NixOS/cabal2nix#readme) for more information. Elm-format [update scripts](https://github.com/avh4/elm-format/tree/master/package/nix)
is part of its repository.
Node dependencies are defined in [node-packages.json](node-packages.json).
[Node2nix](https://github.com/svanderburg/node2nix) is used for generating nix expression
from this file. Use [generate-node-packages.sh](generate-node-packages.sh) for updates of nix expressions.
## Binwrap Patch
Some node packages might use [binwrap](https://github.com/avh4/binwrap) typically for installing
[elmi-to-json](https://github.com/stoeffel/elmi-to-json). Binwrap is not compatible with nix.
To overcome issues with those packages apply [patch-binwrap.nix](patch-binwrap.nix) which essentially does 2 things.
1. It replaces binwrap scripts with noop shell scripts
2. It uses nix for installing the binaries to expected location in `node_modules`
Example usage be found in `elm/default.nix`.