diff options
Diffstat (limited to 'nixpkgs/pkgs/os-specific/linux/atop/default.nix')
-rw-r--r-- | nixpkgs/pkgs/os-specific/linux/atop/default.nix | 63 |
1 files changed, 47 insertions, 16 deletions
diff --git a/nixpkgs/pkgs/os-specific/linux/atop/default.nix b/nixpkgs/pkgs/os-specific/linux/atop/default.nix index e1b64c0a4b5c..50a3e3e63168 100644 --- a/nixpkgs/pkgs/os-specific/linux/atop/default.nix +++ b/nixpkgs/pkgs/os-specific/linux/atop/default.nix @@ -1,4 +1,14 @@ -{lib, stdenv, fetchurl, zlib, ncurses}: +{ lib +, stdenv +, fetchurl +, zlib +, ncurses +, findutils +, systemd +, python3 +# makes the package unfree via pynvml +, withAtopgpu ? false +}: stdenv.mkDerivation rec { pname = "atop"; @@ -9,31 +19,52 @@ stdenv.mkDerivation rec { sha256 = "nsLKOlcWkvfvqglfmaUQZDK8txzCLNbElZfvBIEFj3I="; }; - buildInputs = [zlib ncurses]; + nativeBuildInputs = lib.optionals withAtopgpu [ python3.pkgs.wrapPython ]; + buildInputs = [ zlib ncurses ] ++ lib.optionals withAtopgpu [ python3 ]; + pythonPath = lib.optionals withAtopgpu [ python3.pkgs.pynvml ]; makeFlags = [ - "SCRPATH=$out/etc/atop" - "LOGPATH=/var/log/atop" - "INIPATH=$out/etc/rc.d/init.d" - "SYSDPATH=$out/lib/systemd/system" - "CRNPATH=$out/etc/cron.d" - "DEFPATH=$out/etc/default" - "ROTPATH=$out/etc/logrotate.d" + "DESTDIR=$(out)" + "BINPATH=/bin" + "SBINPATH=/bin" + "MAN1PATH=/share/man/man1" + "MAN5PATH=/share/man/man5" + "MAN8PATH=/share/man/man8" + "SYSDPATH=/lib/systemd/system" + "PMPATHD=/lib/systemd/system-sleep" + ]; + + patches = [ + # Fix paths in atop.service, atop-rotate.service, atopgpu.service, atopacct.service, + # and atop-pm.sh + ./fix-paths.patch + # Don't fail on missing /etc/default/atop, make sure /var/log/atop exists pre-start + ./atop.service.patch + # Specify PIDFile in /run, not /var/run to silence systemd warning + ./atopacct.service.patch ]; preConfigure = '' - sed -e "s@/usr/@$out/@g" -i $(find . -type f ) - sed -e "/mkdir.*LOGPATH/s@mkdir@echo missing dir @" -i Makefile - sed -e "/touch.*LOGPATH/s@touch@echo should have created @" -i Makefile - sed -e 's/chown/true/g' -i Makefile - sed -e '/chkconfig/d' -i Makefile - sed -e 's/chmod 04711/chmod 0711/g' -i Makefile + for f in *.{sh,service}; do + findutils=${findutils} systemd=${systemd} substituteAllInPlace "$f" + done + + substituteInPlace Makefile --replace 'chown' 'true' + substituteInPlace Makefile --replace 'chmod 04711' 'chmod 0711' ''; installTargets = [ "systemdinstall" ]; preInstall = '' - mkdir -p "$out"/{bin,sbin} + mkdir -p $out/bin ''; + postInstall = '' + # remove extra files we don't need + rm -r $out/{var,etc} $out/bin/atop{sar,}-${version} + '' + (if withAtopgpu then '' + wrapPythonPrograms + '' else '' + rm $out/lib/systemd/system/atopgpu.service $out/bin/atopgpud $out/share/man/man8/atopgpud.8 + ''); meta = with lib; { platforms = platforms.linux; |