![stuebinm](/assets/img/avatar_default.png)
The nixpkgs-unstable channel's programs.sqlite was used to identify packages producing exactly one binary, and these automatically added to their package definitions wherever possible.
66 lines
2.4 KiB
Nix
66 lines
2.4 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchurl
|
|
, autoPatchelfHook
|
|
, nixosTests
|
|
}:
|
|
let
|
|
inherit (stdenv.hostPlatform) system;
|
|
throwSystem = throw "Unsupported system: ${system}";
|
|
|
|
sources = lib.importJSON ./sources.json;
|
|
platform = sources.platforms.${system} or throwSystem;
|
|
inherit (sources) version;
|
|
inherit (platform) arch hash;
|
|
in
|
|
stdenv.mkDerivation {
|
|
pname = "typesense";
|
|
inherit version;
|
|
src = fetchurl {
|
|
url = "https://dl.typesense.org/releases/${version}/typesense-server-${version}-${arch}.tar.gz";
|
|
inherit hash;
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
autoPatchelfHook
|
|
];
|
|
|
|
# The tar.gz contains no subdirectory
|
|
sourceRoot = ".";
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
cp $sourceRoot/typesense-server $out/bin
|
|
'';
|
|
|
|
passthru = {
|
|
tests = { inherit (nixosTests) typesense; };
|
|
updateScript = ./update.sh;
|
|
};
|
|
|
|
meta = with lib; {
|
|
homepage = "https://typesense.org";
|
|
description = "Typesense is a fast, typo-tolerant search engine for building delightful search experiences.";
|
|
mainProgram = "typesense-server";
|
|
license = licenses.gpl3;
|
|
# There has been an attempt at building this from source, which were deemed
|
|
# unfeasible at the time of writing this (July 2023) for the following reasons.
|
|
# - Pre 0.25 would have been possible, but typesense has switched to bazel for 0.25+,
|
|
# so the build would break immediately next version
|
|
# - The new bazel build has many issues, only some of which were fixable:
|
|
# - preBuild requires export LANG="C.UTF-8", since onxxruntime contains a
|
|
# unicode file path that is handled incorrectly and otherwise leads to a build failure
|
|
# - bazel downloads extensions to the build systems at build time which have
|
|
# invalid shebangs that need to be fixed by patching rules_foreign_cc through
|
|
# bazel (so a patch in nix that adds a patch to the bazel WORKSPACE)
|
|
# - WORKSPACE has to be patched to use system cmake and ninja instead of downloaded toolchains
|
|
# - The cmake dependencies that are pulled in via bazel at build time will
|
|
# try to download stuff via cmake again, which is not possible in the sandbox.
|
|
# This is where I stopped trying for now.
|
|
# XXX: retry once typesense has officially released their bazel based build.
|
|
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
|
platforms = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ];
|
|
maintainers = with maintainers; [ oddlama ];
|
|
};
|
|
}
|