diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/search/elasticsearch/plugins.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/search/elasticsearch/plugins.nix | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/servers/search/elasticsearch/plugins.nix b/nixpkgs/pkgs/servers/search/elasticsearch/plugins.nix new file mode 100644 index 000000000000..58e74b746ee9 --- /dev/null +++ b/nixpkgs/pkgs/servers/search/elasticsearch/plugins.nix @@ -0,0 +1,185 @@ +{ 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 = "The 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 = "The 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 = "The 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 = "The 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 = "The 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 = "The 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; + }; + }; +} |