nixos/uptime-kuma: Add additional lockdown settings to systemd unit (#361452)
[NixPkgs.git] / pkgs / by-name / pa / pacemaker / package.nix
blob365021ba7f72b7a91a0fdacdc11067edaee523a7
1 { lib
2 , stdenv
3 , autoconf
4 , automake
5 , bash
6 , bzip2
7 , corosync
8 , dbus
9 , fetchFromGitHub
10 , glib
11 , gnutls
12 , libqb
13 , libtool
14 , libuuid
15 , libxml2
16 , libxslt
17 , pam
18 , pkg-config
19 , python3
20 , nixosTests
22 # Pacemaker is compiled twice, once with forOCF = true to extract its
23 # OCF definitions for use in the ocf-resource-agents derivation, then
24 # again with forOCF = false, where the ocf-resource-agents is provided
25 # as the OCF_ROOT.
26 , forOCF ? false
27 , ocf-resource-agents
28 } :
30 stdenv.mkDerivation rec {
31   pname = "pacemaker";
32   version = "2.1.9";
34   src = fetchFromGitHub {
35     owner = "ClusterLabs";
36     repo = pname;
37     rev = "Pacemaker-${version}";
38     sha256 = "sha256-L/LQS5XLps0pqTfMAh1ZiR00SVltrNxMl6DXQhXBw1Q=";
39   };
41   nativeBuildInputs = [
42     autoconf
43     automake
44     libtool
45     pkg-config
46   ];
48   buildInputs = [
49     bash
50     bzip2
51     corosync
52     dbus.dev
53     glib
54     gnutls
55     libqb
56     libuuid
57     libxml2.dev
58     libxslt.dev
59     pam
60     python3
61   ];
63   preConfigure = ''
64     ./autogen.sh --prefix="$out"
65   '';
66   configureFlags = [
67     "--exec-prefix=${placeholder "out"}"
68     "--sysconfdir=/etc"
69     "--localstatedir=/var"
70     "--with-initdir=/etc/systemd/system"
71     "--with-systemdsystemunitdir=/etc/systemd/system"
72     "--with-corosync"
73     # allows Type=notify in the systemd service
74     "--enable-systemd"
75   ] ++ lib.optional (!forOCF) "--with-ocfdir=${ocf-resource-agents}/usr/lib/ocf";
77   installFlags = [ "DESTDIR=${placeholder "out"}" ];
79   env.NIX_CFLAGS_COMPILE = toString (lib.optionals stdenv.cc.isGNU [
80     "-Wno-error=strict-prototypes"
81     "-Wno-error=deprecated-declarations"
82   ]);
84   enableParallelBuilding = true;
86   postInstall = ''
87     # pacemaker's install linking requires a weirdly nested hierarchy
88     mv $out$out/* $out
89     rm -r $out/nix
90   '';
92   passthru.tests = {
93     inherit (nixosTests) pacemaker;
94   };
96   meta = with lib; {
97     homepage = "https://clusterlabs.org/pacemaker/";
98     description = "Pacemaker is an open source, high availability resource manager suitable for both small and large clusters";
99     license = licenses.gpl2Plus;
100     platforms = platforms.linux;
101     maintainers = with maintainers; [ ryantm astro ];
102   };