a97986a481
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
31 lines
815 B
Nix
31 lines
815 B
Nix
{ writeScriptBin, stdenv, lib }:
|
|
let
|
|
# Patching binwrap by NoOp script
|
|
binwrap = writeScriptBin "binwrap" ''
|
|
#! ${stdenv.shell}
|
|
echo "binwrap called: Returning 0"
|
|
return 0
|
|
'';
|
|
binwrap-install = writeScriptBin "binwrap-install" ''
|
|
#! ${stdenv.shell}
|
|
echo "binwrap-install called: Doing nothing"
|
|
'';
|
|
in
|
|
targets:
|
|
pkg:
|
|
pkg.override {
|
|
buildInputs = [ binwrap binwrap-install ];
|
|
|
|
# Manually install targets
|
|
# by symlinking binaries into `node_modules`
|
|
postInstall = let
|
|
binFile = module: lib.strings.removeSuffix ("-" + module.version) module.name;
|
|
in ''
|
|
${lib.concatStrings (map (module: ''
|
|
echo "linking ${binFile module}"
|
|
ln -sf ${module}/bin/${binFile module} \
|
|
node_modules/${binFile module}/bin/${binFile module}
|
|
'') targets)}
|
|
'';
|
|
}
|