htop: fix htoprc when fields is not explicitly set

When the 'fields' setting is not set in htoprc, the htop program won't read any
of the settings. Provide a default value for fields in case it's not explicitly
set by the user.
This commit is contained in:
Bart Bakker 2021-07-29 14:54:28 +02:00 committed by Robert Helgesson
parent 447f80f676
commit e60dca7bb3
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
3 changed files with 47 additions and 3 deletions

View file

@ -145,9 +145,27 @@ in {
home.packages = [ pkgs.htop ];
xdg.configFile."htop/htoprc" = mkIf (cfg.settings != { }) {
text = concatStringsSep "\n" (mapAttrsToList formatOption cfg.settings)
+ "\n";
xdg.configFile."htop/htoprc" = let
defaults = {
fields = with fields; [
PID
USER
PRIORITY
NICE
M_SIZE
M_RESIDENT
M_SHARE
STATE
PERCENT_CPU
PERCENT_MEM
TIME
COMM
];
};
in mkIf (cfg.settings != { }) {
text = concatStringsSep "\n"
(mapAttrsToList formatOption (defaults // cfg.settings)) + "\n";
};
};
}

View file

@ -1,4 +1,5 @@
{
htop-empty-settings = ./empty-settings.nix;
htop-example-settings = ./example-settings.nix;
settings-without-fields = ./settings-without-fields.nix;
}

View file

@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
with lib;
{
config = {
programs.htop.enable = true;
programs.htop.settings = { color_scheme = 6; };
# Test that the 'fields' key is written in addition to the customized
# settings or htop won't read the options.
nmt.script = ''
htoprc=home-files/.config/htop/htoprc
assertFileExists $htoprc
assertFileContent $htoprc \
${
builtins.toFile "htoprc-expected" ''
color_scheme=6
fields=0 48 17 18 38 39 40 2 46 47 49 1
''
}
'';
};
}