aboutsummaryrefslogtreecommitdiff
path: root/nixpkgs/pkgs/development/compilers/elm/packages/lib.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/compilers/elm/packages/lib.nix')
-rw-r--r--nixpkgs/pkgs/development/compilers/elm/packages/lib.nix43
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; }