diff --git a/modules/programs/htop.nix b/modules/programs/htop.nix
index 1edd0f7a..390f0d20 100644
--- a/modules/programs/htop.nix
+++ b/modules/programs/htop.nix
@@ -10,14 +10,10 @@ let
let v' = if isBool v then (if v then "1" else "0") else toString v;
in "${n}=${v'}";
- formatMeters = side: meters:
- let
- warn' = warn "htop: meters should be passed as a list";
- meters' = if isList meters then meters else warn' [ meters ];
- in {
- "${side}_meters" = concatMap (mapAttrsToList (x: _: x)) meters';
- "${side}_meter_modes" = concatMap (mapAttrsToList (_: y: y)) meters';
- };
+ formatMeters = side: meters: {
+ "${side}_meters" = concatMap (mapAttrsToList (x: _: x)) meters;
+ "${side}_meter_modes" = concatMap (mapAttrsToList (_: y: y)) meters;
+ };
leftMeters = formatMeters "left";
rightMeters = formatMeters "right";
@@ -92,113 +88,6 @@ let
led = meter modes.LED;
blank = text "Blank";
- # Mapping from names to defaults
- meters = {
- Clock = 2;
- Date = 2;
- DateTime = 2;
- LoadAverage = 2;
- Load = 2;
- Memory = 1;
- Swap = 1;
- Zram = 2;
- HugePages = 2;
- Tasks = 2;
- Uptime = 2;
- Battery = 2;
- Hostname = 2;
- AllCPUs = 1;
- AllCPUs2 = 1;
- AllCPUs4 = 1;
- AllCPUs8 = 1;
- LeftCPUs = 1;
- RightCPUs = 1;
- Right = 1;
- CPUs = 1;
- LeftCPUs2 = 1;
- RightCPUs2 = 1;
- LeftCPUs4 = 1;
- RightCPUs4 = 1;
- LeftCPUs8 = 1;
- RightCPUs8 = 1;
- Blank = 2;
- PressureStallCPUSome = 2;
- PressureStallIOSome = 2;
- PressureStallIOFull = 2;
- PressureStallMemorySome = 2;
- PressureStallMemoryFull = 2;
- ZFSARC = 2;
- ZFSCARC = 2;
- CPU = 1;
- "CPU(1)" = 1;
- "CPU(2)" = 1;
- "CPU(3)" = 1;
- "CPU(4)" = 1;
- "CPU(5)" = 1;
- "CPU(6)" = 1;
- "CPU(7)" = 1;
- "CPU(8)" = 1;
- SELinux = 2;
- Systemd = 2;
- DiskIO = 2;
- NetworkIO = 2;
- };
-
- singleMeterType = let
- meterEnum = types.enum (attrNames meters);
- meterSubmodule = types.submodule {
- options = {
- kind = mkOption {
- type = types.enum (attrNames meters);
- example = "AllCPUs";
- description = "What kind of meter.";
- };
-
- mode = mkOption {
- type = types.enum [ 1 2 3 4 ];
- example = 2;
- description =
- "Which mode the meter should use, one of 1(Bar) 2(Text) 3(Graph) 4(LED).";
- };
- };
- };
- in types.coercedTo meterEnum (m: {
- kind = m;
- mode = meters.${m};
- }) meterSubmodule;
-
- meterType = types.submodule {
- options = {
- left = mkOption {
- description = "Meters shown in the left header.";
- default = [ "AllCPUs" "Memory" "Swap" ];
- example = [
- "Memory"
- "LeftCPUs2"
- "RightCPUs2"
- {
- kind = "CPU";
- mode = 3;
- }
- ];
- type = types.listOf singleMeterType;
- };
- right = mkOption {
- description = "Meters shown in the right header.";
- default = [ "Tasks" "LoadAverage" "Uptime" ];
- example = [
- {
- kind = "Clock";
- mode = 4;
- }
- "Uptime"
- "Tasks"
- ];
- type = types.listOf singleMeterType;
- };
- };
- };
-
in {
options.programs.htop = {
enable = mkEnableOption "htop";
@@ -291,300 +180,6 @@ in {
description = ''
Configuration options to add to
~/.config/htop/htoprc.
-
- This superseedes any other (deprecated) settings in this module.
- '';
- };
-
- fields = mkOption {
- type = types.nullOr (types.listOf (types.enum (attrNames fields)));
- default = null;
- example = [
- "PID"
- "USER"
- "PRIORITY"
- "PERCENT_CPU"
- "M_RESIDENT"
- "PERCENT_MEM"
- "TIME"
- "COMM"
- ];
- description = ''
- Deprecated. Please use programs.htop.settings.fields instead.
-
- Active fields shown in the table.
- '';
- };
-
- sortKey = mkOption {
- type = types.nullOr (types.enum (attrNames fields));
- default = null;
- example = "TIME";
- description = ''
- Deprecated. Please use programs.htop.settings.sort_key instead.
-
- Which field to use for sorting.
- '';
- };
-
- sortDescending = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.sort_direction instead.
-
- Whether to sort descending or not.
- '';
- };
-
- hideThreads = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.hide_threads instead.
-
- Hide threads.
- '';
- };
-
- hideKernelThreads = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.hide_kernel_threads instead.
-
- Hide kernel threads.
- '';
- };
-
- hideUserlandThreads = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.hide_userland_threads instead.
-
- Hide userland process threads.
- '';
- };
-
- shadowOtherUsers = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.shadow_other_users instead.
-
- Shadow other users' processes.
- '';
- };
-
- showThreadNames = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.show_thread_names instead.
-
- Show custom thread names.
- '';
- };
-
- showProgramPath = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.show_program_path instead.
-
- Show program path.
- '';
- };
-
- highlightBaseName = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.highlight_base_name instead.
-
- Highlight program basename
.
- '';
- };
-
- highlightMegabytes = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.highlight_megabytes instead.
-
- Highlight large numbers in memory counters.
- '';
- };
-
- highlightThreads = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.highlight_threads instead.
-
- Display threads in a different color.
- '';
- };
-
- treeView = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.tree_view instead.
-
- Tree view.
- '';
- };
-
- headerMargin = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.header_margin instead.
-
- Leave a margin around header.
- '';
- };
-
- detailedCpuTime = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.detailed_cpu_time instead.
-
- Detailed CPU time (System/IO-Wait/Hard-IRQ/Soft-IRQ/Steal/Guest).
- '';
- };
-
- cpuCountFromZero = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.cpu_count_from_zero instead.
-
- Count CPUs from 0 instead of 1.
- '';
- };
-
- showCpuUsage = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.show_cpu_usage instead.
-
- Show CPU usage frequency.
- '';
- };
-
- showCpuFrequency = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.show_cpu_frequency instead.
-
- Show CPU frequency.
- '';
- };
-
- updateProcessNames = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.update_process_names instead.
-
- Update process names on every refresh.
- '';
- };
-
- accountGuestInCpuMeter = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.account_guest_in_cpu_meter instead.
-
- Add guest time in CPU meter percentage.
- '';
- };
-
- colorScheme = mkOption {
- type = types.nullOr (types.enum [ 0 1 2 3 4 5 6 ]);
- default = null;
- example = 6;
- description = ''
- Deprecated. Please use programs.htop.settings.color_scheme instead.
-
- Which color scheme to use.
- '';
- };
-
- enableMouse = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.enable_mouse instead.
-
- Enable mouse support.
- '';
- };
-
- delay = mkOption {
- type = types.nullOr types.int;
- default = null;
- example = 2;
- description = ''
- Deprecated. Please use programs.htop.settings.delay instead.
-
- Set the delay between updates, in tenths of seconds.
- '';
- };
-
- meters = mkOption {
- description = ''
- Deprecated. Please use programs.htop.settings.left_meters,
- programs.htop.settings.left_meter_modes,
- programs.htop.settings.right_meters and
- programs.htop.settings.right_meter_modes instead. Or consider using
- lib.htop.leftMeters and lib.htop.rightMeters.
-
- Meters shown in the header.
- '';
- default = null;
- example = {
- left = [
- "Memory"
- "CPU"
- "LeftCPUs2"
- "RightCPUs2"
- {
- kind = "CPU";
- mode = 3;
- }
- ];
- right = [
- {
- kind = "Clock";
- mode = 4;
- }
- "Uptime"
- "Tasks"
- "LoadAverage"
- {
- kind = "Battery";
- mode = 1;
- }
- ];
- };
- type = types.nullOr meterType;
- };
-
- vimMode = mkOption {
- type = types.nullOr types.bool;
- default = null;
- description = ''
- Deprecated. Please use programs.htop.settings.vim_mode instead.
-
- Vim key bindings.
'';
};
};
@@ -596,72 +191,7 @@ in {
home.packages = [ pkgs.htop ];
- xdg.configFile."htop/htoprc".text = let
-
- deprecate = settingsKey: optionKey: optionValue:
- let
- warn' = warn
- "htop: programs.htop.${optionKey} is deprecated; please is programs.htop.settings.${settingsKey} instead";
- in if !isNull optionValue then
- warn' optionValue
- else if hasAttr settingsKey cfg.settings then
- cfg.settings.${settingsKey}
- else
- null;
-
- deprecate' = settingsKey: optionKey:
- deprecate settingsKey optionKey cfg.${optionKey};
-
- ifNonNull = x: y: if isNull x then null else y;
-
- leftMeters = deprecate "left_meters" "meters.left"
- (ifNonNull cfg.meters (map (m: m.kind) cfg.meters.left));
- leftModes = deprecate "left_meter_modes" "meters.left"
- (ifNonNull cfg.meters (map (m: m.mode) cfg.meters.left));
- rightMeters = deprecate "right_meters" "meters.right"
- (ifNonNull cfg.meters (map (m: m.kind) cfg.meters.right));
- rightModes = deprecate "right_meter_modes" "meters.right"
- (ifNonNull cfg.meters (map (m: m.mode) cfg.meters.right));
-
- settings' = cfg.settings // (filterAttrs (_: v: !isNull v) {
- fields = deprecate "fields" "fields"
- (ifNonNull cfg.fields (map (n: fields.${n}) cfg.fields));
- sort_key = deprecate "sort_key" "sortKey"
- (ifNonNull cfg.sortKey fields.${cfg.sortKey});
- sort_direction = deprecate' "sort_direction" "sortDescending";
- hide_threads = deprecate' "hide_threads" "hideThreads";
- hide_kernel_threads =
- deprecate' "hide_kernel_threads" "hideKernelThreads";
- hide_userland_threads =
- deprecate' "hide_userland_threads" "hideUserlandThreads";
- shadow_other_users = deprecate' "shadow_other_users" "shadowOtherUsers";
- show_thread_names = deprecate' "show_thread_names" "showThreadNames";
- show_program_path = deprecate' "show_program_path" "showProgramPath";
- highlight_base_name =
- deprecate' "highlight_base_name" "highlightBaseName";
- highlight_megabytes =
- deprecate' "highlight_megabytes" "highlightMegabytes";
- highlight_threads = deprecate' "highlight_threads" "highlightThreads";
- tree_view = deprecate' "tree_view" "treeView";
- header_margin = deprecate' "header_margin" "headerMargin";
- detailed_cpu_time = deprecate' "detailed_cpu_time" "detailedCpuTime";
- cpu_count_from_zero =
- deprecate' "cpu_count_from_zero" "cpuCountFromZero";
- show_cpu_usage = deprecate' "show_cpu_usage" "showCpuUsage";
- show_cpu_frequency = deprecate' "show_cpu_frequency" "showCpuFrequency";
- update_process_names =
- deprecate' "update_process_names" "updateProcessNames";
- account_guest_in_cpu_meter =
- deprecate' "account_guest_in_cpu_meter" "accountGuestInCpuMeter";
- color_scheme = deprecate' "color_scheme" "colorScheme";
- enable_mouse = deprecate' "enable_mouse" "enableMouse";
- delay = deprecate' "delay" "delay";
- left_meters = leftMeters;
- left_meter_modes = leftModes;
- right_meters = rightMeters;
- right_meter_modes = rightModes;
- vim_mode = deprecate' "vim_mode" "vimMode";
- });
- in concatStringsSep "\n" (mapAttrsToList formatOption settings');
+ xdg.configFile."htop/htoprc".text =
+ concatStringsSep "\n" (mapAttrsToList formatOption cfg.settings);
};
}