lol
1{ pkgs, lib, nodejs, makeWrapper }: self:
2
3let
4 # Untouched npm-downloaded packages
5 nodePkgs = pkgs.callPackage ./node-composition.nix {
6 inherit pkgs nodejs;
7 inherit (pkgs.stdenv.hostPlatform) system;
8 };
9in
10with self; with elmLib; {
11 inherit (nodePkgs) elm-live elm-upgrade elm-xref elm-analyse elm-git-install;
12
13 elm-verify-examples =
14 let
15 patched = patchBinwrap [ elmi-to-json ] nodePkgs.elm-verify-examples // {
16 meta = with lib; nodePkgs.elm-verify-examples.meta // {
17 description = "Verify examples in your docs";
18 homepage = "https://github.com/stoeffel/elm-verify-examples";
19 license = licenses.bsd3;
20 maintainers = [ maintainers.turbomack ];
21 };
22 };
23 in
24 patched.override (old: {
25 preRebuild = (old.preRebuild or "") + ''
26 # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done
27 # in case of just this package
28 # TODO: investigate, same as for elm-coverage below
29 sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json
30 '';
31 });
32
33 elm-coverage =
34 let
35 patched = patchNpmElm (patchBinwrap [ elmi-to-json ] nodePkgs.elm-coverage);
36 in
37 patched.override (old: {
38 # Symlink Elm instrument binary
39 preRebuild = (old.preRebuild or "") + ''
40 # Noop custom installation script
41 sed 's/\"install\".*/\"install\":\"echo no-op\"/g' --in-place package.json
42
43 # This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done
44 # in case of just this package
45 # TODO: investigate
46 sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json
47 '';
48 postInstall = (old.postInstall or "") + ''
49 mkdir -p unpacked_bin
50 ln -sf ${elm-instrument}/bin/elm-instrument unpacked_bin/elm-instrument
51 '';
52 meta = with lib; nodePkgs.elm-coverage.meta // {
53 description = "Work in progress - Code coverage tooling for Elm";
54 homepage = "https://github.com/zwilias/elm-coverage";
55 license = licenses.bsd3;
56 maintainers = [ maintainers.turbomack ];
57 };
58 });
59
60 create-elm-app = patchNpmElm
61 nodePkgs.create-elm-app // {
62 meta = with lib; nodePkgs.create-elm-app.meta // {
63 description = "Create Elm apps with no build configuration";
64 homepage = "https://github.com/halfzebra/create-elm-app";
65 license = licenses.mit;
66 maintainers = [ maintainers.turbomack ];
67 };
68 };
69
70 elm-graphql =
71 nodePkgs."@dillonkearns/elm-graphql" // {
72 meta = with lib; nodePkgs."@dillonkearns/elm-graphql".meta // {
73 description = " Autogenerate type-safe GraphQL queries in Elm.";
74 license = licenses.bsd3;
75 maintainers = [ maintainers.pedrohlc ];
76 };
77 };
78
79 elm-review =
80 nodePkgs.elm-review // {
81 meta = with lib; nodePkgs.elm-review.meta // {
82 description = "Analyzes Elm projects, to help find mistakes before your users find them";
83 homepage = "https://package.elm-lang.org/packages/jfmengels/elm-review/${nodePkgs.elm-review.version}";
84 license = licenses.bsd3;
85 maintainers = [ maintainers.turbomack ];
86 };
87 };
88
89 elm-language-server = nodePkgs."@elm-tooling/elm-language-server" // {
90 meta = with lib; nodePkgs."@elm-tooling/elm-language-server".meta // {
91 description = "Language server implementation for Elm";
92 homepage = "https://github.com/elm-tooling/elm-language-server";
93 license = licenses.mit;
94 maintainers = [ maintainers.turbomack ];
95 };
96 };
97
98 elm-spa = nodePkgs."elm-spa".overrideAttrs (
99 old: {
100 nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ makeWrapper old.nodejs.pkgs.node-gyp-build ];
101
102 meta = with lib; nodePkgs."elm-spa".meta // {
103 description = "A tool for building single page apps in Elm";
104 homepage = "https://www.elm-spa.dev/";
105 license = licenses.bsd3;
106 maintainers = [ maintainers.ilyakooo0 ];
107 };
108 }
109 );
110
111 elm-optimize-level-2 = nodePkgs."elm-optimize-level-2" // {
112 meta = with lib; nodePkgs."elm-optimize-level-2".meta // {
113 description = "A second level of optimization for the Javascript that the Elm Compiler produces";
114 homepage = "https://github.com/mdgriffith/elm-optimize-level-2";
115 license = licenses.bsd3;
116 maintainers = [ maintainers.turbomack ];
117 };
118 };
119
120 elm-pages = import ./elm-pages { inherit nodePkgs pkgs lib makeWrapper; };
121
122 elm-land =
123 let
124 patched = patchNpmElm nodePkgs.elm-land;
125 in
126 patched.override (old: {
127 meta = with lib; nodePkgs."elm-land".meta // {
128 description = "A production-ready framework for building Elm applications.";
129 homepage = "https://elm.land/";
130 license = licenses.bsd3;
131 maintainers = [ maintainers.zupo ];
132 };
133 }
134 );
135
136 elm-doc-preview = nodePkgs."elm-doc-preview".overrideAttrs (old: {
137 nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ old.nodejs.pkgs.node-gyp-build ];
138 });
139}