diff options
Diffstat (limited to 'pkgs/development/compilers/elm/packages/node/default.nix')
-rw-r--r-- | pkgs/development/compilers/elm/packages/node/default.nix | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/pkgs/development/compilers/elm/packages/node/default.nix b/pkgs/development/compilers/elm/packages/node/default.nix new file mode 100644 index 000000000000..6d4d38a6d199 --- /dev/null +++ b/pkgs/development/compilers/elm/packages/node/default.nix @@ -0,0 +1,139 @@ +{ pkgs, lib, nodejs, makeWrapper }: self: + +let + # Untouched npm-downloaded packages + nodePkgs = pkgs.callPackage ./node-composition.nix { + inherit pkgs nodejs; + inherit (pkgs.stdenv.hostPlatform) system; + }; +in +with self; with elmLib; { + inherit (nodePkgs) elm-live elm-upgrade elm-xref elm-analyse elm-git-install; + + elm-verify-examples = + let + patched = patchBinwrap [ elmi-to-json ] nodePkgs.elm-verify-examples // { + meta = with lib; nodePkgs.elm-verify-examples.meta // { + description = "Verify examples in your docs"; + homepage = "https://github.com/stoeffel/elm-verify-examples"; + license = licenses.bsd3; + maintainers = [ maintainers.turbomack ]; + }; + }; + in + patched.override (old: { + preRebuild = (old.preRebuild or "") + '' + # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done + # in case of just this package + # TODO: investigate, same as for elm-coverage below + sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json + ''; + }); + + elm-coverage = + let + patched = patchNpmElm (patchBinwrap [ elmi-to-json ] nodePkgs.elm-coverage); + in + patched.override (old: { + # Symlink Elm instrument binary + preRebuild = (old.preRebuild or "") + '' + # Noop custom installation script + sed 's/\"install\".*/\"install\":\"echo no-op\"/g' --in-place package.json + + # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done + # in case of just this package + # TODO: investigate + sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json + ''; + postInstall = (old.postInstall or "") + '' + mkdir -p unpacked_bin + ln -sf ${elm-instrument}/bin/elm-instrument unpacked_bin/elm-instrument + ''; + meta = with lib; nodePkgs.elm-coverage.meta // { + description = "Work in progress - Code coverage tooling for Elm"; + homepage = "https://github.com/zwilias/elm-coverage"; + license = licenses.bsd3; + maintainers = [ maintainers.turbomack ]; + }; + }); + + create-elm-app = patchNpmElm + nodePkgs.create-elm-app // { + meta = with lib; nodePkgs.create-elm-app.meta // { + description = "Create Elm apps with no build configuration"; + homepage = "https://github.com/halfzebra/create-elm-app"; + license = licenses.mit; + maintainers = [ maintainers.turbomack ]; + }; + }; + + elm-graphql = + nodePkgs."@dillonkearns/elm-graphql" // { + meta = with lib; nodePkgs."@dillonkearns/elm-graphql".meta // { + description = " Autogenerate type-safe GraphQL queries in Elm."; + license = licenses.bsd3; + maintainers = [ maintainers.pedrohlc ]; + }; + }; + + elm-review = + nodePkgs.elm-review // { + meta = with lib; nodePkgs.elm-review.meta // { + description = "Analyzes Elm projects, to help find mistakes before your users find them"; + homepage = "https://package.elm-lang.org/packages/jfmengels/elm-review/${nodePkgs.elm-review.version}"; + license = licenses.bsd3; + maintainers = [ maintainers.turbomack ]; + }; + }; + + elm-language-server = nodePkgs."@elm-tooling/elm-language-server" // { + meta = with lib; nodePkgs."@elm-tooling/elm-language-server".meta // { + description = "Language server implementation for Elm"; + homepage = "https://github.com/elm-tooling/elm-language-server"; + license = licenses.mit; + maintainers = [ maintainers.turbomack ]; + }; + }; + + elm-spa = nodePkgs."elm-spa".overrideAttrs ( + old: { + nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ]; + + meta = with lib; nodePkgs."elm-spa".meta // { + description = "A tool for building single page apps in Elm"; + homepage = "https://www.elm-spa.dev/"; + license = licenses.bsd3; + maintainers = [ maintainers.ilyakooo0 ]; + }; + } + ); + + elm-optimize-level-2 = nodePkgs."elm-optimize-level-2" // { + meta = with lib; nodePkgs."elm-optimize-level-2".meta // { + description = "A second level of optimization for the Javascript that the Elm Compiler produces"; + homepage = "https://github.com/mdgriffith/elm-optimize-level-2"; + license = licenses.bsd3; + maintainers = [ maintainers.turbomack ]; + }; + }; + + elm-pages = import ./elm-pages { inherit nodePkgs pkgs lib makeWrapper; }; + + elm-land = + let + patched = patchNpmElm nodePkgs.elm-land; + in + patched.override (old: { + meta = with lib; nodePkgs."elm-land".meta // { + description = "A production-ready framework for building Elm applications."; + homepage = "https://elm.land/"; + license = licenses.bsd3; + maintainers = [ maintainers.zupo ]; + }; + } + ); + + elm-doc-preview = nodePkgs."elm-doc-preview".overrideAttrs (old: { + nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ old.nodejs.pkgs.node-gyp-build ]; + }); +} |