nixos/htop: add module

This module allows setting global configuration for htop in /etc/htoprc,

for example to disable showing userland threads by default

Co-authored-by: pennae <82953136+pennae@users.noreply.github.com>

Co-authored-by: Aaron Andersen <aaron@fosslib.net>
main
Maciej Krüger 3 years ago
parent 87180d88f9
commit a425421e28
No known key found for this signature in database
GPG Key ID: 0D948CE19CF49C5F
  1. 1
      nixos/modules/module-list.nix
  2. 58
      nixos/modules/programs/htop.nix

@ -154,6 +154,7 @@
./programs/gnupg.nix
./programs/gphoto2.nix
./programs/hamster.nix
./programs/htop.nix
./programs/iftop.nix
./programs/iotop.nix
./programs/java.nix

@ -0,0 +1,58 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.htop;
fmt = value:
if isList value then concatStringsSep " " (map fmt value) else
if isString value then value else
if isBool value || isInt value then toString value else
throw "Unrecognized type ${typeOf value} in htop settings";
in
{
options.programs.htop = {
package = mkOption {
type = types.package;
default = pkgs.htop;
defaultText = "pkgs.htop";
description = ''
The htop package that should be used.
'';
};
enable = mkEnableOption "htop process monitor";
settings = mkOption {
type = with types; attrsOf (oneOf [ str int bool (listOf (oneOf [ str int bool ])) ]);
default = {};
example = {
hide_kernel_threads = true;
hide_userland_threads = true;
};
description = ''
Extra global default configuration for htop
which is read on first startup only.
Htop subsequently uses ~/.config/htop/htoprc
as configuration source.
'';
};
};
config = mkIf cfg.enable {
environment.systemPackages = [
cfg.package
];
environment.etc."htoprc".text = ''
# Global htop configuration
# To change set: programs.htop.settings.KEY = VALUE;
'' + concatStringsSep "\n" (mapAttrsToList (key: value: "${key}=${fmt value}") cfg.settings);
};
}
Loading…
Cancel
Save