{ config, lib, ... }: let cfg = config.programs.htop; in { options.programs.htop = { _configure = lib.mkEnableOption "apply sensible defaults to htop"; }; config = lib.mkIf cfg._configure { programs.htop.enable = lib.mkDefault true; programs.htop.settings = { fields = with config.lib.htop.fields; [ PID USER 124 # EXE PERCENT_CPU PERCENT_MEM STARTTIME ELAPSED # time elapsed since process start IO_READ_RATE RBYTES # num read bytes IO_WRITE_RATE WBYTES # num written bytes TIME STIME # sys time CSTIME # child sys time NICE STATE PRIORITY 125 # CWD ]; } // (with config.lib.htop; leftMeters [ (bar "AllCPUs2") (bar "CPU") (bar "Memory") (bar "DiskIO") (bar "NetworkIO") ]) // (with config.lib.htop; rightMeters [ (text "Hostname") (text "Clock") (text "Uptime") (text "Battery") (text "LoadAverage") (text "Tasks") ]); }; }