{ config, lib, ... }: with lib; let cfg = config.custom.programs.htop; in { options.custom.programs.htop.enable = mkOption {default = false;}; config.home-manager.users.${config.custom.username} = mkIf cfg.enable { # https://github.com/htop-dev/htop programs.htop = { enable = true; # https://nix-community.github.io/home-manager/options.xhtml#opt-programs.htop.settings #!! Not up-to-date, some config is imperative settings = { account_guest_in_cpu_meter = 1; all_branches_collapsed = 0; color_scheme = 0; cpu_count_from_one = 1; degree_fahrenheit = 0; delay = 30; detailed_cpu_time = 0; enable_mouse = 1; find_comm_in_cmdline = 0; header_layout = "two_50_50"; header_margin = 1; hide_function_bar = 0; hide_kernel_threads = 1; hide_running_in_container = 0; hide_userland_threads = 1; highlight_base_name = 1; highlight_changes = 1; highlight_changes_delay_secs = 3; highlight_deleted_exe = 1; highlight_megabytes = 1; highlight_threads = 1; screen_tabs = 1; shadow_distribution_path_prefix = 0; shadow_other_users = 0; show_cpu_frequency = 0; show_cpu_temperature = 0; show_cpu_usage = 0; show_merged_command = 0; show_program_path = 0; show_thread_names = 0; sort_direction = -1; sort_key = 46; strip_exe_from_cmdline = 0; tree_sort_direction = 1; tree_sort_key = 0; tree_view = 0; tree_view_always_by_pid = 0; update_process_names = 1; #!! Variable max of 120 fields = with config.home-manager.users.${config.custom.username}.lib.htop.fields; [ PID USER PROCESSOR PERCENT_CPU PERCENT_MEM IO_READ_RATE IO_WRITE_RATE 125 # CWD COMM ]; } // ( with config.home-manager.users.${config.custom.username}.lib.htop; leftMeters [ (bar "LeftCPUs4") (text "Blank") (bar "CPU") (bar "MemorySwap") (text "System") (text "DateTime") ] ) // ( with config.home-manager.users.${config.custom.username}.lib.htop; rightMeters [ (bar "RightCPUs4") (text "Blank") (bar "NetworkIO") (bar "DiskIO") (text "Hostname") (text "Uptime") ] ); }; # https://github.com/nix-community/home-manager/issues/4947 xdg.configFile."htop/htoprc".force = true; # Force overwrite config file }; }