about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/nodehun/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/tools/nodehun/default.nix')
-rw-r--r--nixpkgs/pkgs/development/tools/nodehun/default.nix64
1 files changed, 64 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/nodehun/default.nix b/nixpkgs/pkgs/development/tools/nodehun/default.nix
new file mode 100644
index 000000000000..cef41d918791
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/nodehun/default.nix
@@ -0,0 +1,64 @@
+{ buildNpmPackage
+, darwin
+, fetchFromGitHub
+, lib
+, nodePackages
+, nodejs
+, python3
+, stdenv
+}:
+
+buildNpmPackage {
+  pname = "nodehun";
+  version = "3.0.2";
+
+  src = fetchFromGitHub {
+    owner = "Wulf";
+    repo = "nodehun";
+    rev = "03c9dcf1fcd965031a68553ccaf6487d1fe87f79";
+    hash = "sha256-MoY95lSIQK1K4aIlMdPm93YxJuez9HYx2zlUhHvDao0=";
+  };
+
+  patches = [
+    # fsevents is needed on Darwin, but its dependency "nan" in the upstream package-lock.json
+    # is too old for the Node 18.x in Nixpkgs.
+    # This patch is generated by checking out the upstream source and running
+    # npm update nan --lockfile-version 1
+    ./update-nan.patch
+  ];
+
+  npmDepsHash = "sha256-mV6rWNf2p2w4H0ESUT0/Ybtx9YEdvO5l2gCvlWFXK+U=";
+
+  buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.CoreServices ];
+  nativeBuildInputs = [ nodePackages.node-gyp python3 ]
+    ++ lib.optionals stdenv.isDarwin [ darwin.cctools ];
+
+  postInstall = ''
+    # Only keep the necessary parts of build/Release to reduce closure size
+    cd $out/lib/node_modules/nodehun
+    mv build build_old
+    mkdir build
+    cp -r build_old/Release build/
+    rm -rf build_old
+    rm -rf build/Release/.deps
+    # Remove a development script to eliminate runtime dependency on node
+    rm node_modules/node-addon-api/tools/conversion.js
+  '';
+
+  doInstallCheck = true;
+  nativeCheckInputs = [ nodejs ];
+  postInstallCheck = ''
+    # Smoke check: require() works
+    export NODE_PATH=$out/lib/node_modules
+    echo 'require("nodehun")' | node -
+  '';
+
+  disallowedReferences = [ nodejs ];
+
+  meta = with lib; {
+    description = "The Hunspell binding for NodeJS that exposes as much of Hunspell as possible and also adds new features";
+    homepage = "https://github.com/Wulf/nodehun";
+    license = licenses.mit;
+    maintainers = [ maintainers.thomasjm ];
+  };
+}