htop: use types.coercedTo

This commit is contained in:
Silvan Mosberger 2017-07-24 20:44:58 +02:00 committed by Robert Helgesson
parent be432c8654
commit 1d24e96074
No known key found for this signature in database
GPG key ID: C3DB11069E65DC86

View file

@ -87,28 +87,24 @@ let
"CPU(4)" = 1; "CPU(4)" = 1;
}; };
singleMeterType = types.either (types.enum (attrNames meters)) (types.submodule { singleMeterType = types.coercedTo
options = { (types.enum (attrNames meters))
kind = mkOption { (m: { kind = m; mode = meters.${m}; })
type = types.enum (attrNames meters); (types.submodule {
example = "AllCPUs"; options = {
description = "What kind of meter."; 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).";
};
}; };
});
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).";
};
};
});
# Converts the meter to an attribute set if it isn't already
meterStandard = m: if builtins.isString m then {
kind = m;
mode = meters.${m};
} else m;
meterType = types.submodule { meterType = types.submodule {
options = { options = {
@ -295,10 +291,10 @@ in
home.packages = [ pkgs.htop ]; home.packages = [ pkgs.htop ];
home.file.".config/htop/htoprc".text = let home.file.".config/htop/htoprc".text = let
leftMeters = map (m: (meterStandard m).kind) cfg.meters.left; leftMeters = map (m: m.kind) cfg.meters.left;
leftModes = map (m: (meterStandard m).mode) cfg.meters.left; leftModes = map (m: m.mode) cfg.meters.left;
rightMeters = map (m: (meterStandard m).kind) cfg.meters.right; rightMeters = map (m: m.kind) cfg.meters.right;
rightModes = map (m: (meterStandard m).mode) cfg.meters.right; rightModes = map (m: m.mode) cfg.meters.right;
in '' in ''
# This file is regenerated by home-manager # This file is regenerated by home-manager
# when options are changed in the config # when options are changed in the config