about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/misc/megacli/default.nix
blob: 5121491625f0a12a29a3e21bfdc5e44fee018404 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
{ stdenv, rpmextract, ncurses5, patchelf, requireFile, unzip }:

stdenv.mkDerivation rec {
  pname = "megacli";
  version = "8.07.14";

  src =
    requireFile {
      name = "${builtins.replaceStrings ["."] ["-"] version}_MegaCLI.zip";
      url = https://docs.broadcom.com/docs/12351587;
      sha256 = "1sdn58fbmd3fj4nzbajq3gcyw71ilgdh45r5p4sa6xmb7np55cfr";
    };

  buildInputs = [rpmextract ncurses5 unzip];
  libPath =
    stdenv.lib.makeLibraryPath
       [ stdenv.cc.cc stdenv.cc.libc ncurses5 ];

  buildCommand = ''
    unzip ${src}
    rpmextract Linux/MegaCli-${version}-1.noarch.rpm

    mkdir -p $out/{bin,share/MegaRAID/MegaCli}
    cp -r opt $out
    cp ${version}_MegaCLI.txt $out/share/MegaRAID/MegaCli

    ${patchelf}/bin/patchelf \
      --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
      --set-rpath ${libPath}:${stdenv.cc.cc.lib}/lib64:${stdenv.cc.cc.lib}/lib \
      $out/opt/MegaRAID/MegaCli/MegaCli64

    ln -s $out/opt/MegaRAID/MegaCli/MegaCli64 $out/bin/MegaCli64
    eval fixupPhase
  '';

  meta = {
    description = "CLI program for LSI MegaRAID cards, which also works with some Dell PERC RAID cards";
    license = stdenv.lib.licenses.unfree;
    platforms = [ "x86_64-linux" ];
  };
}