diff options
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/elm/packages/lib.nix')
-rw-r--r-- | nixpkgs/pkgs/development/compilers/elm/packages/lib.nix | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/compilers/elm/packages/lib.nix b/nixpkgs/pkgs/development/compilers/elm/packages/lib.nix new file mode 100644 index 00000000000..12e0600dc23 --- /dev/null +++ b/nixpkgs/pkgs/development/compilers/elm/packages/lib.nix @@ -0,0 +1,43 @@ +{ writeScriptBin, stdenv, lib, elm }: +let + patchBinwrap = + let + # Patching binwrap by NoOp script + binwrap = writeScriptBin "binwrap" '' + #! ${stdenv.shell} + echo "binwrap called: Returning 0" + return 0 + ''; + binwrap-install = writeScriptBin "binwrap-install" '' + #! ${stdenv.shell} + echo "binwrap-install called: Doing nothing" + ''; + in targets: pkg: + pkg.override (old: { + nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ binwrap binwrap-install ]; + + # Manually install targets + # by symlinking binaries into `node_modules` + postInstall = let + binFile = module: lib.strings.removeSuffix ("-" + module.version) module.name; + in (old.postInstall or "") + '' + ${lib.concatStrings (map (module: '' + echo "linking ${binFile module}" + ln -sf ${module}/bin/${binFile module} \ + node_modules/${binFile module}/bin/${binFile module} + '') targets)} + ''; + }); + + patchNpmElm = pkg: + pkg.override (old: { + preRebuild = (old.preRebuild or "") + '' + rm node_modules/elm/install.js + echo "console.log('Nixpkgs\' version of Elm will be used');" > node_modules/elm/install.js + ''; + postInstall = (old.postInstall or "") + '' + ln -sf ${elm}/bin/elm node_modules/elm/bin/elm + ''; + }); +in +{ inherit patchBinwrap patchNpmElm; } |