mini-calc: 3.3.3 -> 3.3.5 (#372274)
[NixPkgs.git] / pkgs / by-name / li / librenms / package.nix
blob09c468fdf89215a22acbb8bf957a88ee8bd8401f
2   lib,
3   fetchFromGitHub,
4   unixtools,
5   php82,
6   python3,
7   makeWrapper,
8   nixosTests,
9   # run-time dependencies
10   graphviz,
11   ipmitool,
12   libvirt,
13   monitoring-plugins,
14   mtr,
15   net-snmp,
16   nfdump,
17   nmap,
18   rrdtool,
19   system-sendmail,
20   whois,
21   dataDir ? "/var/lib/librenms",
22   logDir ? "/var/log/librenms",
25 let
26   phpPackage = php82.withExtensions ({ enabled, all }: enabled ++ [ all.memcached ]);
28 phpPackage.buildComposerProject rec {
29   pname = "librenms";
30   version = "24.12.0";
32   src = fetchFromGitHub {
33     owner = "librenms";
34     repo = pname;
35     rev = "${version}";
36     sha256 = "sha256-/0mc4wTx9WDxgDxqq+Kut8uX/Yr+bxqZ1BeJvmFDxG8=";
37   };
39   vendorHash = "sha256-DNiTSXt/1Qr67BdlTu3ccP4Whw5pyybeFJ045c/e8Dc=";
41   php = phpPackage;
43   buildInputs = [
44     graphviz
45     ipmitool
46     libvirt
47     monitoring-plugins
48     mtr
49     net-snmp
50     nfdump
51     nmap
52     rrdtool
53     system-sendmail
54     unixtools.whereis
55     whois
56     (python3.withPackages (
57       ps: with ps; [
58         pymysql
59         python-dotenv
60         python-memcached
61         redis
62         setuptools
63         psutil
64         command-runner
65       ]
66     ))
67   ];
69   nativeBuildInputs = [ makeWrapper ];
71   installPhase = ''
72     runHook preInstall
74     mv $out/share/php/librenms/* $out
75     rm -r $out/share
77     # This broken logic leads to bad settings being persisted in the database
78     patch -p1 -d $out -i ${./broken-binary-paths.diff}
80     substituteInPlace \
81       $out/misc/config_definitions.json \
82       --replace '"default": "/bin/ping",' '"default": "/run/wrappers/bin/ping",' \
83       --replace '"default": "fping",' '"default": "/run/wrappers/bin/fping",' \
84       --replace '"default": "fping6",' '"default": "/run/wrappers/bin/fping6",' \
85       --replace '"default": "rrdtool",' '"default": "${rrdtool}/bin/rrdtool",' \
86       --replace '"default": "snmpgetnext",' '"default": "${net-snmp}/bin/snmpgetnext",' \
87       --replace '"default": "traceroute",' '"default": "/run/wrappers/bin/traceroute",' \
88       --replace '"default": "/usr/bin/dot",' '"default": "${graphviz}/bin/dot",' \
89       --replace '"default": "/usr/bin/ipmitool",' '"default": "${ipmitool}/bin/ipmitool",' \
90       --replace '"default": "/usr/bin/mtr",' '"default": "${mtr}/bin/mtr",' \
91       --replace '"default": "/usr/bin/nfdump",' '"default": "${nfdump}/bin/nfdump",' \
92       --replace '"default": "/usr/bin/nmap",' '"default": "${nmap}/bin/nmap",' \
93       --replace '"default": "/usr/bin/sfdp",' '"default": "${graphviz}/bin/sfdp",' \
94       --replace '"default": "/usr/bin/snmpbulkwalk",' '"default": "${net-snmp}/bin/snmpbulkwalk",' \
95       --replace '"default": "/usr/bin/snmpget",' '"default": "${net-snmp}/bin/snmpget",' \
96       --replace '"default": "/usr/bin/snmptranslate",' '"default": "${net-snmp}/bin/snmptranslate",' \
97       --replace '"default": "/usr/bin/snmpwalk",' '"default": "${net-snmp}/bin/snmpwalk",' \
98       --replace '"default": "/usr/bin/virsh",' '"default": "${libvirt}/bin/virsh",' \
99       --replace '"default": "/usr/bin/whois",' '"default": "${whois}/bin/whois",' \
100       --replace '"default": "/usr/lib/nagios/plugins",' '"default": "${monitoring-plugins}/bin",' \
101       --replace '"default": "/usr/sbin/sendmail",' '"default": "${system-sendmail}/bin/sendmail",'
103     substituteInPlace $out/LibreNMS/wrapper.py --replace-fail '/usr/bin/env php' '${phpPackage}/bin/php'
104     substituteInPlace $out/LibreNMS/__init__.py --replace-fail '"/usr/bin/env", "php"' '"${phpPackage}/bin/php"'
105     substituteInPlace $out/snmp-scan.py --replace-fail '"/usr/bin/env", "php"' '"${phpPackage}/bin/php"'
107     substituteInPlace $out/lnms --replace-fail '\App\Checks::runningUser();' '//\App\Checks::runningUser(); //removed as nix forces ownership to root'
109     wrapProgram $out/daily.sh --prefix PATH : ${phpPackage}/bin
111     php $out/artisan vue-i18n:generate --multi-locales --format=umd
113     rm -rf $out/logs $out/rrd $out/bootstrap/cache $out/storage $out/.env
114     ln -s ${logDir} $out/logs
115     ln -s ${dataDir}/config.php $out/config.php
116     ln -s ${dataDir}/.env $out/.env
117     ln -s ${dataDir}/rrd $out/rrd
118     ln -s ${dataDir}/storage $out/storage
119     ln -s ${dataDir}/cache $out/bootstrap/cache
121     runHook postInstall
122   '';
124   passthru = {
125     phpPackage = phpPackage;
126     tests.librenms = nixosTests.librenms;
127   };
129   meta = with lib; {
130     description = "Auto-discovering PHP/MySQL/SNMP based network monitoring";
131     homepage = "https://www.librenms.org/";
132     license = licenses.gpl3Only;
133     maintainers = with maintainers; [ netali ] ++ teams.wdz.members;
134     platforms = platforms.linux;
135   };