Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / apache-kafka / default.nix
blobfd7cd084a60b0ecd842d7eeb0e1b7267886eba66
1 { lib, stdenv, fetchurl, jdk17_headless, jdk11_headless, makeWrapper, bash, coreutils, gnugrep, gnused, ps }:
3 let
4   versionMap = {
5     "3_7" = {
6       kafkaVersion = "3.7.1";
7       scalaVersion = "2.13";
8       sha256 = "sha256-YqyuShQ92YPcfrSATVdEugxQsZm1CPWZ7wAQIOJVj8k=";
9       jre = jdk17_headless;
10     };
11     "3_6" = {
12       kafkaVersion = "3.6.2";
13       scalaVersion = "2.13";
14       sha256 = "sha256-wxfkf3cUHTFG6VY9nLodZIbIHmcLIR7OasRqn3Lkqqw=";
15       jre = jdk17_headless;
16     };
17   };
19   build = versionInfo: with versionInfo; stdenv.mkDerivation rec {
20     version = "${scalaVersion}-${kafkaVersion}";
21     pname = "apache-kafka";
23     src = fetchurl {
24       url = "mirror://apache/kafka/${kafkaVersion}/kafka_${version}.tgz";
25       inherit sha256;
26     };
28     nativeBuildInputs = [ makeWrapper ];
29     buildInputs = [ jre bash gnugrep gnused coreutils ps ];
31     installPhase = ''
32       mkdir -p $out
33       cp -R config libs $out
35       mkdir -p $out/bin
36       cp bin/kafka* $out/bin
37       cp bin/connect* $out/bin
39       # allow us the specify logging directory using env
40       substituteInPlace $out/bin/kafka-run-class.sh \
41         --replace 'LOG_DIR="$base_dir/logs"' 'LOG_DIR="$KAFKA_LOG_DIR"'
43       substituteInPlace $out/bin/kafka-server-stop.sh \
44         --replace 'ps' '${ps}/bin/ps'
46       for p in $out/bin\/*.sh; do
47         wrapProgram $p \
48           --set JAVA_HOME "${jre}" \
49           --set KAFKA_LOG_DIR "/tmp/apache-kafka-logs" \
50           --prefix PATH : "${bash}/bin:${coreutils}/bin:${gnugrep}/bin:${gnused}/bin"
51       done
52       chmod +x $out/bin\/*
53     '';
55     passthru = {
56       inherit jre; # Used by the NixOS module to select the supported jre
57     };
59     meta = with lib; {
60       homepage = "https://kafka.apache.org";
61       description = "High-throughput distributed messaging system";
62       license = licenses.asl20;
63       sourceProvenance = with sourceTypes; [ binaryBytecode ];
64       maintainers = [ maintainers.ragge ];
65       platforms = platforms.unix;
66     };
67   };
68 in with lib; mapAttrs'
69   (majorVersion: versionInfo: nameValuePair "apacheKafka_${majorVersion}" (build versionInfo))
70   versionMap