Commit fe806f61 authored by Peder Bergebakken Sundt's avatar Peder Bergebakken Sundt Committed by Yt
Browse files

pagefind: init at 1.0.3

parent 187afc5d
Loading
Loading
Loading
Loading
+110 −0
Original line number Diff line number Diff line
{ lib
, callPackage
, rustPlatform
, fetchFromGitHub
, fetchNpmDeps
, npmHooks
, binaryen
, gzip
, nodejs
, rustc-wasm32
, wasm-bindgen-cli
, wasm-pack
}:

let

  wasm-bindgen-84 = wasm-bindgen-cli.override {
    version = "0.2.84";
    hash = "sha256-0rK+Yx4/Jy44Fw5VwJ3tG243ZsyOIBBehYU54XP/JGk=";
    cargoHash = "sha256-vcpxcRlW1OKoD64owFF6mkxSqmNrvY+y3Ckn5UwEQ50=";
  };

in

rustPlatform.buildRustPackage rec {
  pname = "pagefind";
  version = "1.0.3";

  src = fetchFromGitHub {
    owner = "cloudcannon";
    repo = "pagefind";
    rev = "refs/tags/v${version}";
    hash = "sha256-vQbLaZug3gySMIbMdNqU7XcL4GZ7XqZ3ZkwdDBC5T9o=";
  };

  cargoHash = "sha256-ubuzO/67HguWPqd3y/IapO07L2pg2Q4vo1yTpEthdoU=";

  env.npmDeps_web_js = fetchNpmDeps {
    name = "npm-deps-web-js";
    src = "${src}/pagefind_web_js";
    hash = "sha256-pGE4lUFZ4dA++8kBklcMBoaN/1Z92dfOzQKhukbuEyc=";
  };
  env.npmDeps_ui_default = fetchNpmDeps {
    name = "npm-deps-ui-default";
    src = "${src}/pagefind_ui/default";
    hash = "sha256-voCs49JneWYE1W9U7aB6G13ypH6JqathVDeF58V57U8=";
  };
  env.npmDeps_ui_modular = fetchNpmDeps {
    name = "npm-deps-ui-modular";
    src = "${src}/pagefind_ui/modular";
    hash = "sha256-O0RqZUsRFtByxMQdwNGNcN38Rh+sDqqNo9YlBcrnsF4=";
  };

  postPatch = ''
    # Tricky way to run npmConfigHook multiple times
    (
      local postPatchHooks=() # written to by npmConfigHook
      source ${npmHooks.npmConfigHook}/nix-support/setup-hook
      npmRoot=pagefind_web_js     npmDeps=$npmDeps_web_js     npmConfigHook
      npmRoot=pagefind_ui/default npmDeps=$npmDeps_ui_default npmConfigHook
      npmRoot=pagefind_ui/modular npmDeps=$npmDeps_ui_modular npmConfigHook
    )
  '';

  nativeBuildInputs = [
    binaryen
    gzip
    nodejs
    rustc-wasm32
    rustc-wasm32.llvmPackages.lld
    wasm-bindgen-84
    wasm-pack
  ];

  # build wasm and js assets
  # based on "test-and-build" in https://github.com/CloudCannon/pagefind/blob/main/.github/workflows/release.yml
  preBuild = ''
    export HOME=$(mktemp -d)
    (
      cd pagefind_web_js
      npm run build-coupled
    )

    (
      cd pagefind_web
      export RUSTFLAGS="-C linker=lld"
      bash ./local_build.sh
    )

    (
      cd pagefind_ui/default
      npm run build
    )

    (
      cd pagefind_ui/modular
      npm run build
    )
  '';

  buildFeatures = [ "extended" ];

  meta = with lib; {
    description = "Generate low-bandwidth search index for your static website";
    homepage = "https://pagefind.app/";
    license = licenses.mit;
    maintainers = with maintainers; [ pbsds ];
    platforms = platforms.unix;
  };
}
+2 −0
Original line number Diff line number Diff line
@@ -11780,6 +11780,8 @@ with pkgs;
  PageEdit = libsForQt5.callPackage ../applications/office/PageEdit { };
  pagefind = libsForQt5.callPackage ../applications/misc/pagefind { };
  paging-calculator  = callPackage ../development/tools/paging-calculator { };
  pagmo2 = callPackage ../development/libraries/pagmo2 { };