about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/compilers/elm/packages/node/default.nix
blob: 6d4d38a6d199c8cbd57865bd4a59936464a86828 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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 ];
  });
}