toxic: 0.15.1 -> 0.16.0
[NixPkgs.git] / pkgs / by-name / at / atop / package.nix
blob390593e7f1d4f6054e8c39bd69b0ec724b40e3b3
2   lib,
3   stdenv,
4   fetchurl,
5   glib,
6   zlib,
7   ncurses,
8   pkg-config,
9   findutils,
10   systemd,
11   python3,
12   nixosTests,
13   # makes the package unfree via pynvml
14   withAtopgpu ? false,
17 stdenv.mkDerivation rec {
18   pname = "atop";
19   version = "2.11.0";
21   src = fetchurl {
22     url = "https://www.atoptool.nl/download/atop-${version}.tar.gz";
23     hash = "sha256-m5TGZmAu//e/QC7M5wbDR/OMOctjSY+dOWJoYeVkbiA=";
24   };
26   nativeBuildInputs =
27     [
28       pkg-config
29     ]
30     ++ lib.optionals withAtopgpu [
31       python3.pkgs.wrapPython
32     ];
34   buildInputs =
35     [
36       glib
37       zlib
38       ncurses
39     ]
40     ++ lib.optionals withAtopgpu [
41       python3
42     ];
44   pythonPath = lib.optionals withAtopgpu [
45     python3.pkgs.pynvml
46   ];
48   makeFlags = [
49     "DESTDIR=$(out)"
50     "BINPATH=/bin"
51     "SBINPATH=/bin"
52     "MAN1PATH=/share/man/man1"
53     "MAN5PATH=/share/man/man5"
54     "MAN8PATH=/share/man/man8"
55     "SYSDPATH=/lib/systemd/system"
56     "PMPATHD=/lib/systemd/system-sleep"
57   ];
59   patches = [
60     # Fix paths in atop.service, atop-rotate.service, atopgpu.service, atopacct.service,
61     # and atop-pm.sh
62     ./fix-paths.patch
63     # Don't fail on missing /etc/default/atop, make sure /var/log/atop exists pre-start
64     ./atop.service.patch
65   ];
67   preConfigure = ''
68     for f in *.{sh,service}; do
69       findutils=${findutils} systemd=${systemd} substituteAllInPlace "$f"
70     done
72     substituteInPlace Makefile --replace 'chown' 'true'
73     substituteInPlace Makefile --replace 'chmod 04711' 'chmod 0711'
74   '';
76   preInstall = ''
77     mkdir -p $out/bin
78   '';
80   postInstall =
81     ''
82       # Remove extra files we don't need
83       rm -r $out/{var,etc} $out/bin/atop{sar,}-${version}
84     ''
85     + (
86       if withAtopgpu then
87         ''
88           wrapPythonPrograms
89         ''
90       else
91         ''
92           rm $out/lib/systemd/system/atopgpu.service $out/bin/atopgpud $out/share/man/man8/atopgpud.8
93         ''
94     );
96   passthru.tests = { inherit (nixosTests) atop; };
98   meta = with lib; {
99     platforms = platforms.linux;
100     maintainers = with maintainers; [ raskin ];
101     description = "Console system performance monitor";
102     longDescription = ''
103       Atop is an ASCII full-screen performance monitor that is capable of reporting the activity of
104       all processes (even if processes have finished during the interval), daily logging of system
105       and process activity for long-term analysis, highlighting overloaded system resources by using
106       colors, etc. At regular intervals, it shows system-level activity related to the CPU, memory,
107       swap, disks and network layers, and for every active process it shows the CPU utilization,
108       memory growth, disk utilization, priority, username, state, and exit code.
109     '';
110     license = licenses.gpl2Plus;
111     downloadPage = "http://atoptool.nl/downloadatop.php";
112   };