biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / servers / monitoring / librenms / default.nix
blob58b4e5619564d8fe1b35ff203af59a3c164e2255
1 { lib
2 , fetchFromGitHub
3 , unixtools
4 , php82
5 , python3
6 , makeWrapper
7 , nixosTests
8 # run-time dependencies
9 , graphviz
10 , ipmitool
11 , libvirt
12 , monitoring-plugins
13 , mtr
14 , net-snmp
15 , nfdump
16 , nmap
17 , rrdtool
18 , system-sendmail
19 , whois
20 , dataDir ? "/var/lib/librenms", logDir ? "/var/log/librenms" }:
23 let
24   phpPackage = php82.withExtensions ({ enabled, all }: enabled ++ [ all.memcached ]);
25 in phpPackage.buildComposerProject rec {
26   pname = "librenms";
27   version = "23.9.1";
29   src = fetchFromGitHub {
30     owner = "librenms";
31     repo = pname;
32     rev = "${version}";
33     sha256 = "sha256-glcD9AhxkvMmGo/7/RhQFeOtvHJ4pSiEFxaAjeVrTaI=";
34   };
36   vendorHash = "sha256-s6vdGfM7Ehy1bbkB44EQaHBBvTkpVw9yxhVsc/O8dHc=";
38   php = phpPackage;
40   buildInputs = [
41     unixtools.whereis
42     (python3.withPackages (ps: with ps; [
43       pymysql
44       python-dotenv
45       redis
46       setuptools
47       psutil
48       command-runner
49     ]))
50   ];
52   nativeBuildInputs = [ makeWrapper ];
54   installPhase = ''
55     runHook preInstall
57     mv $out/share/php/librenms/* $out
58     rm -r $out/share
60     # This broken logic leads to bad settings being persisted in the database
61     patch -p1 -d $out -i ${./broken-binary-paths.diff}
63     substituteInPlace \
64       $out/misc/config_definitions.json \
65       --replace '"default": "/bin/ping",' '"default": "/run/wrappers/bin/ping",' \
66       --replace '"default": "fping",' '"default": "/run/wrappers/bin/fping",' \
67       --replace '"default": "fping6",' '"default": "/run/wrappers/bin/fping6",' \
68       --replace '"default": "rrdtool",' '"default": "${rrdtool}/bin/rrdtool",' \
69       --replace '"default": "snmpgetnext",' '"default": "${net-snmp}/bin/snmpgetnext",' \
70       --replace '"default": "traceroute",' '"default": "/run/wrappers/bin/traceroute",' \
71       --replace '"default": "/usr/bin/dot",' '"default": "${graphviz}/bin/dot",' \
72       --replace '"default": "/usr/bin/ipmitool",' '"default": "${ipmitool}/bin/ipmitool",' \
73       --replace '"default": "/usr/bin/mtr",' '"default": "${mtr}/bin/mtr",' \
74       --replace '"default": "/usr/bin/nfdump",' '"default": "${nfdump}/bin/nfdump",' \
75       --replace '"default": "/usr/bin/nmap",' '"default": "${nmap}/bin/nmap",' \
76       --replace '"default": "/usr/bin/sfdp",' '"default": "${graphviz}/bin/sfdp",' \
77       --replace '"default": "/usr/bin/snmpbulkwalk",' '"default": "${net-snmp}/bin/snmpbulkwalk",' \
78       --replace '"default": "/usr/bin/snmpget",' '"default": "${net-snmp}/bin/snmpget",' \
79       --replace '"default": "/usr/bin/snmptranslate",' '"default": "${net-snmp}/bin/snmptranslate",' \
80       --replace '"default": "/usr/bin/snmpwalk",' '"default": "${net-snmp}/bin/snmpwalk",' \
81       --replace '"default": "/usr/bin/virsh",' '"default": "${libvirt}/bin/virsh",' \
82       --replace '"default": "/usr/bin/whois",' '"default": "${whois}/bin/whois",' \
83       --replace '"default": "/usr/lib/nagios/plugins",' '"default": "${monitoring-plugins}/libexec",' \
84       --replace '"default": "/usr/sbin/sendmail",' '"default": "${system-sendmail}/bin/sendmail",'
86     substituteInPlace $out/LibreNMS/wrapper.py --replace '/usr/bin/env php' '${phpPackage}/bin/php'
87     substituteInPlace $out/LibreNMS/__init__.py --replace '"/usr/bin/env", "php"' '"${phpPackage}/bin/php"'
88     substituteInPlace $out/snmp-scan.py --replace '"/usr/bin/env", "php"' '"${phpPackage}/bin/php"'
90     wrapProgram $out/daily.sh --prefix PATH : ${phpPackage}/bin
92     rm -rf $out/logs $out/rrd $out/bootstrap/cache $out/storage $out/.env
93     ln -s ${logDir} $out/logs
94     ln -s ${dataDir}/config.php $out/config.php
95     ln -s ${dataDir}/.env $out/.env
96     ln -s ${dataDir}/rrd $out/rrd
97     ln -s ${dataDir}/storage $out/storage
98     ln -s ${dataDir}/cache $out/bootstrap/cache
100     runHook postInstall
101   '';
103   passthru = {
104     phpPackage = phpPackage;
105     tests.librenms = nixosTests.librenms;
106   };
108   meta = with lib; {
109     description = "A auto-discovering PHP/MySQL/SNMP based network monitoring";
110     homepage    = "https://www.librenms.org/";
111     license     = licenses.gpl3Only;
112     maintainers = teams.wdz.members;
113     platforms   = platforms.linux;
114   };