nixpkgs/pkgs/servers/search/elasticsearch/plugins.nix
Alexis Hildebrandt f8c4a98e8e treewide: Remove the definite article from meta.description
nix run nixpkgs#silver-searcher -- -G '\.nix$' -0l 'description.*"([Tt]he)? ' pkgs \
  | xargs -0 nix run nixpkgs#gnused -- -i '' -Ee 's/(description.*")[Tt]he (.)/\1\U\2/'
2024-06-09 23:08:46 +02:00

186 lines
7.4 KiB
Nix

{ lib, stdenv, fetchurl, unzip, elasticsearch }:
let
esVersion = elasticsearch.version;
esPlugin =
a@{
pluginName,
installPhase ? ''
mkdir -p $out/config
mkdir -p $out/plugins
ln -s ${elasticsearch}/lib ${elasticsearch}/modules $out
ES_HOME=$out ${elasticsearch}/bin/elasticsearch-plugin install --batch -v file://$src
rm $out/lib $out/modules
''
, ...
}:
stdenv.mkDerivation (a // {
inherit installPhase;
pname = "elasticsearch-${pluginName}";
dontUnpack = true;
# Work around the "unpacker appears to have produced no directories"
# case that happens when the archive doesn't have a subdirectory.
sourceRoot = ".";
nativeBuildInputs = [ unzip ];
meta = a.meta // {
platforms = elasticsearch.meta.platforms;
maintainers = (a.meta.maintainers or [ ]) ++ (with lib.maintainers; [ offline ]);
};
});
in
{
analysis-icu = esPlugin rec {
name = "elasticsearch-analysis-icu-${version}";
pluginName = "analysis-icu";
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
hash =
if version == "7.17.16" then "sha256-wgm6N5fofs5wTM25ZT3dJkg7iDesXsc3Up419IAY9gk="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
homepage = "https://github.com/elastic/elasticsearch/tree/master/plugins/analysis-icu";
description = "ICU Analysis plugin integrates the Lucene ICU module into elasticsearch";
license = licenses.asl20;
};
};
analysis-kuromoji = esPlugin rec {
pluginName = "analysis-kuromoji";
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
hash =
if version == "7.17.16" then "sha256-SShdBcWfm21XoVhghSSiWIhsoXzG7wz6162iOmuf5EU="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
homepage = "https://github.com/elastic/elasticsearch/tree/master/plugins/analysis-kuromoji";
description = "Japanese (kuromoji) Analysis plugin integrates Lucene kuromoji analysis module into Elasticsearch";
license = licenses.asl20;
};
};
analysis-lemmagen = esPlugin rec {
pluginName = "analysis-lemmagen";
version = esVersion;
src = fetchurl {
url = "https://github.com/vhyza/elasticsearch-${pluginName}/releases/download/v${version}/elasticsearch-${pluginName}-${version}-plugin.zip";
hash =
if version == "7.17.9" then "sha256-iY25apDkS6s0RoR9dVL2o/hFuUo6XhMzLjl8wDSFejk="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
homepage = "https://github.com/vhyza/elasticsearch-analysis-lemmagen";
description = "LemmaGen Analysis plugin provides jLemmaGen lemmatizer as Elasticsearch token filter";
license = licenses.asl20;
broken = true; # Not released yet for ES 7.17.10
};
};
analysis-phonetic = esPlugin rec {
pluginName = "analysis-phonetic";
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
hash =
if version == "7.17.16" then "sha256-S/Cp9opeLitFh2/3Qw7/MFt6GcYKufxXKD6cJSi3SaQ="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
homepage = "https://github.com/elastic/elasticsearch/tree/master/plugins/analysis-phonetic";
description = "Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch";
license = licenses.asl20;
};
};
discovery-ec2 = esPlugin rec {
pluginName = "discovery-ec2";
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
hash =
if version == "7.17.16" then "sha256-hMErTLd5fXg420Olz+j6Zv7WByA1aNq9FlEgCtkYIxY="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
homepage = "https://github.com/elastic/elasticsearch/tree/master/plugins/discovery-ec2";
description = "EC2 discovery plugin uses the AWS API for unicast discovery";
license = licenses.asl20;
};
};
ingest-attachment = esPlugin rec {
pluginName = "ingest-attachment";
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${version}.zip";
hash =
if version == "7.17.16" then "sha256-z0gfdx98urCzdQNlVn99CmteG6jweOmUDmGJW89twtU="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
homepage = "https://github.com/elastic/elasticsearch/tree/master/plugins/ingest-attachment";
description = "Ingest processor that uses Apache Tika to extract contents";
license = licenses.asl20;
};
};
repository-s3 = esPlugin rec {
pluginName = "repository-s3";
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${esVersion}.zip";
hash =
if version == "7.17.16" then "sha256-TWMN8jzFjzBVTUB+zn4tJr47VMXHC8U+014BvnArK8M="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
homepage = "https://github.com/elastic/elasticsearch/tree/master/plugins/repository-s3";
description = "S3 repository plugin adds support for using AWS S3 as a repository for Snapshot/Restore";
license = licenses.asl20;
};
};
repository-gcs = esPlugin rec {
pluginName = "repository-gcs";
version = esVersion;
src = fetchurl {
url = "https://artifacts.elastic.co/downloads/elasticsearch-plugins/${pluginName}/${pluginName}-${esVersion}.zip";
hash =
if version == "7.17.16" then "sha256-hG5wy1Xw4T1NzI7pja3CejwJg002/n6YqM1/QaVSWbg="
else throw "unsupported version ${version} for plugin ${pluginName}";
};
meta = with lib; {
homepage = "https://github.com/elastic/elasticsearch/tree/master/plugins/repository-gcs";
description = "GCS repository plugin adds support for using Google Cloud Storage as a repository for Snapshot/Restore";
license = licenses.asl20;
};
};
search-guard = let
majorVersion = lib.head (builtins.splitVersion esVersion);
in esPlugin rec {
pluginName = "search-guard";
version =
# https://docs.search-guard.com/latest/search-guard-versions
if esVersion == "7.17.16" then "${esVersion}-53.8.0"
else throw "unsupported version ${esVersion} for plugin ${pluginName}";
src =
if esVersion == "7.17.16" then
fetchurl {
url = "https://maven.search-guard.com/search-guard-suite-release/com/floragunn/search-guard-suite-plugin/${version}/search-guard-suite-plugin-${version}.zip";
hash = "sha256-j8dz7rUKWqMvT6EksoFIuGJzYcgdMipKeg2d8UtzlDI=";
}
else throw "unsupported version ${version} for plugin ${pluginName}";
meta = with lib; {
homepage = "https://search-guard.com";
description = "Elasticsearch plugin that offers encryption, authentication, and authorisation";
license = licenses.asl20;
};
};
}