1{
2 nodePkgs,
3 pkgs,
4 lib,
5 makeWrapper,
6}:
7
8let
9 ESBUILD_BINARY_PATH = lib.getExe (
10 pkgs.esbuild.override {
11 buildGoModule =
12 args:
13 pkgs.buildGoModule (
14 args
15 // rec {
16 version = "0.25.5";
17 src = pkgs.fetchFromGitHub {
18 owner = "evanw";
19 repo = "esbuild";
20 rev = "v${version}";
21 hash = "sha256-jemGZkWmN1x2+ZzJ5cLp3MoXO0oDKjtZTmZS9Be/TDw=";
22 };
23 vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
24 }
25 );
26 }
27 );
28in
29nodePkgs."elm-pages".overrideAttrs (old: {
30 inherit ESBUILD_BINARY_PATH;
31 nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [
32 makeWrapper
33 old.nodejs.pkgs.node-gyp-build
34 ];
35
36 # can't use `patches = [ <patch_file> ]` with a nodePkgs derivation;
37 # need to patch in one of the build phases instead.
38 # see upstream issue https://github.com/dillonkearns/elm-pages/issues/305 for dealing with the read-only problem
39 preFixup = ''
40 patch $out/lib/node_modules/elm-pages/generator/src/codegen.js ${./fix-read-only.patch}
41 patch $out/lib/node_modules/elm-pages/generator/src/init.js ${./fix-init-read-only.patch}
42 '';
43
44 postFixup = ''
45 wrapProgram $out/bin/elm-pages --prefix PATH : ${
46 with pkgs.elmPackages;
47 lib.makeBinPath [
48 elm
49 elm-review
50 elm-optimize-level-2
51 ]
52 }
53 '';
54
55 meta =
56 with lib;
57 nodePkgs."elm-pages".meta
58 // {
59 description = "Statically typed site generator for Elm";
60 homepage = "https://github.com/dillonkearns/elm-pages";
61 license = licenses.bsd3;
62 maintainers = [
63 maintainers.turbomack
64 maintainers.jali-clarke
65 ];
66 };
67})