nixpkgs/pkgs/development/compilers/elm/packages/node/default.nix
2024-03-28 13:28:40 -03:00

140 lines
5.0 KiB
Nix

{ 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 ];
});
}