1
0
Fork 1
mirror of https://github.com/NixOS/nixpkgs.git synced 2024-11-21 21:21:06 +00:00

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>
This commit is contained in:
Maciej Krüger 2021-09-21 16:07:35 +02:00
parent 87180d88f9
commit a425421e28
No known key found for this signature in database
GPG key ID: 0D948CE19CF49C5F
2 changed files with 59 additions and 0 deletions

View file

@ -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

View file

@ -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);
};
}