about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers/elm/packages/node/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/elm/packages/node/default.nix')
-rw-r--r--nixpkgs/pkgs/development/compilers/elm/packages/node/default.nix139
1 files changed, 139 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/elm/packages/node/default.nix b/nixpkgs/pkgs/development/compilers/elm/packages/node/default.nix
new file mode 100644
index 000000000000..6d4d38a6d199
--- /dev/null
+++ b/nixpkgs/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 ];
+  });
+}