sneeuwvlok/modules/shell/toolset/btop.nix

146 lines
4.6 KiB
Nix

{ config, options, lib, pkgs, ... }:
let
inherit (lib.modules) mkIf;
inherit (lib.strings) concatStringsSep;
in
{
options.modules.shell.toolset.btop = let
inherit (lib.options) mkEnableOption;
in { enable = mkEnableOption "system-monitor"; };
config = mkIf config.modules.shell.toolset.btop.enable {
hm.programs.btop = let
inherit (config.modules.themes) active;
in
{
enable = true;
settings = {
force_tty = false;
vim_keys = true; # Directional keys: "h,j,k,l,g,G"
update_ms = 1500; # ms (s^{-3})
temp_scale = "celsius";
base_10_sizes = false;
show_cpu_freq = true;
clock_format = "%H:%M";
background_update = true;
disks_filter = "exclude=/boot";
color_theme = "${active}";
rounded_corners = true;
theme_background = false;
truecolor = true;
presets = concatStringsSep "," [
"cpu:1:default"
"proc:0:default cpu:0:default"
"mem:0:default"
"net:0:default cpu:0:block"
"net:0:tty"
];
graph_symbol = "braille";
graph_symbol_cpu = "default";
graph_symbol_mem = "default";
graph_symbol_net = "default";
graph_symbol_proc = "default";
shown_boxes = "proc cpu mem net";
proc_sorting = "cpu lazy";
proc_reversed = false;
proc_tree = false;
proc_colors = true;
proc_gradient = true;
proc_per_core = true;
proc_mem_bytes = true;
proc_info_smaps = false;
proc_left = false;
cpu_graph_upper = "total";
cpu_graph_lower = "total";
cpu_single_graph = false;
cpu_bottom = false;
show_uptime = true;
check_temp = true;
cpu_sensor = "Auto";
show_coretemp = true;
cpu_core_map = "";
custom_cpu_name = "";
mem_graphs = true;
mem_below_net = false;
show_swap = true;
swap_disk = true;
show_disks = true;
only_physical = true;
use_fstab = false; # Enable -> disables `only_physical`
disk_free_priv = false;
show_io_stat = true;
io_mode = false;
io_graph_combined = false;
io_graph_speeds = "";
net_download = 100;
net_upload = 100;
net_auto = true;
net_sync = false;
net_iface = "br0";
show_battery = true;
selected_battery = "Auto";
log_level = "DEBUG";
};
};
home.configFile.btop-theme = let
inherit (config.modules.themes) active;
in
mkIf (active != null) {
target = "btop/themes/${active}.theme";
text = let
inherit (config.modules.themes.colors.main) bright types;
in ''
theme[main_bg]="${types.bg}"
theme[main_fg]="${types.fg}"
theme[title]="${types.fg}"
theme[hi_fg]="${types.highlight}"
theme[selected_bg]="${types.border}"
theme[selected_fg]="${types.bg}"
theme[inactive_fg]="${bright.black}"
theme[graph_text]="${bright.yellow}"
theme[meter_bg]="${bright.black}"
theme[proc_misc]="${bright.yellow}"
theme[cpu_box]="${bright.cyan}"
theme[mem_box]="${bright.green}"
theme[net_box]="${bright.magenta}"
theme[proc_box]="${bright.yellow}"
theme[div_line]="${bright.black}"
theme[temp_start]="${bright.yellow}"
theme[temp_mid]="${types.panelbg}"
theme[temp_end]="${bright.red}"
theme[cpu_start]="${bright.cyan}"
theme[cpu_mid]="${types.border}"
theme[cpu_end]="${bright.green}"
theme[free_start]="${bright.green}"
theme[free_mid]="${bright.green}"
theme[free_end]="${bright.green}"
theme[cached_start]="${bright.yellow}"
theme[cached_mid]="${bright.yellow}"
theme[cached_end]="${bright.magenta}"
theme[available_start]="${bright.yellow}"
theme[available_mid]="${bright.yellow}"
theme[available_end]="${bright.yellow}"
theme[used_start]="${types.panelbg}"
theme[used_mid]="${types.panelbg}"
theme[used_end]="${bright.red}"
theme[download_start]="${bright.blue}"
theme[download_mid]="${bright.blue}"
theme[download_end]="${bright.magenta}"
theme[upload_start]="${bright.blue}"
theme[upload_mid]="${bright.blue}"
theme[upload_end]="${bright.magenta}"
theme[process_start]="${bright.cyan}"
theme[process_mid]="${types.border}"
theme[process_end]="${bright.green}"
'';
};
};
}