vscode-extensions.capatech.betacode: init at 0.1.10 (#355720)
[NixPkgs.git] / pkgs / servers / amqp / rabbitmq-server / default.nix
blob383ab5af129f163682d70c5a55bcd3344117fa84
2   lib,
3   stdenv,
4   fetchurl,
5   erlang,
6   elixir,
7   python3,
8   libxml2,
9   libxslt,
10   xmlto,
11   docbook_xml_dtd_45,
12   docbook_xsl,
13   zip,
14   unzip,
15   rsync,
16   getconf,
17   socat,
18   procps,
19   coreutils,
20   gnused,
21   systemd,
22   glibcLocales,
23   AppKit,
24   Carbon,
25   Cocoa,
26   nixosTests,
27   which,
30 let
31   runtimePath = lib.makeBinPath (
32     [
33       erlang
34       getconf # for getting memory limits
35       socat
36       procps
37       gnused
38       coreutils # used by helper scripts
39     ]
40     ++ lib.optionals stdenv.hostPlatform.isLinux [ systemd ]
41   ); # for systemd unit activation check
44 stdenv.mkDerivation rec {
45   pname = "rabbitmq-server";
46   version = "4.0.2";
48   # when updating, consider bumping elixir version in all-packages.nix
49   src = fetchurl {
50     url = "https://github.com/rabbitmq/rabbitmq-server/releases/download/v${version}/${pname}-${version}.tar.xz";
51     hash = "sha256-mSwjQTLkEWBBbbMDLZ+qldS2YDcUvp8BB+J0+RLQvZE=";
52   };
54   nativeBuildInputs = [
55     unzip
56     xmlto
57     docbook_xml_dtd_45
58     docbook_xsl
59     zip
60     rsync
61     python3
62     which
63   ];
65   buildInputs =
66     [
67       erlang
68       elixir
69       libxml2
70       libxslt
71       glibcLocales
72     ]
73     ++ lib.optionals stdenv.hostPlatform.isDarwin [
74       AppKit
75       Carbon
76       Cocoa
77     ];
79   outputs = [
80     "out"
81     "man"
82     "doc"
83   ];
85   installFlags = [
86     "PREFIX=${placeholder "out"}"
87     "RMQ_ERLAPP_DIR=${placeholder "out"}"
88   ];
90   installTargets = [
91     "install"
92     "install-man"
93   ];
95   preBuild = ''
96     export LANG=C.UTF-8 # fix elixir locale warning
97   '';
99   postInstall = ''
100     # rabbitmq-env calls to sed/coreutils, so provide everything early
101     sed -i $out/sbin/rabbitmq-env -e '2s|^|PATH=${runtimePath}\''${PATH:+:}\$PATH/\n|'
103     # We know exactly where rabbitmq is gonna be, so we patch that into the env-script.
104     # By doing it early we make sure that auto-detection for this will
105     # never be executed (somewhere below in the script).
106     sed -i $out/sbin/rabbitmq-env -e "2s|^|RABBITMQ_SCRIPTS_DIR=$out/sbin\n|"
108     # there’s a few stray files that belong into share
109     mkdir -p $doc/share/doc/rabbitmq-server
110     mv $out/LICENSE* $doc/share/doc/rabbitmq-server
112     # and an unecessarily copied INSTALL file
113     rm $out/INSTALL
114   '';
116   passthru.tests = {
117     vm-test = nixosTests.rabbitmq;
118   };
120   meta = {
121     homepage = "https://www.rabbitmq.com/";
122     description = "Implementation of the AMQP messaging protocol";
123     changelog = "https://github.com/rabbitmq/rabbitmq-server/releases/tag/v${version}";
124     license = lib.licenses.mpl20;
125     platforms = lib.platforms.unix;
126     maintainers = with lib.maintainers; [ samueltardieu ];
127   };