mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 19:46:05 +01:00
78 lines
1.7 KiB
Nix
78 lines
1.7 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
|
|
cfg = config.programs.terminator;
|
|
|
|
toValue =
|
|
val:
|
|
if val == null then
|
|
"None"
|
|
else if val == true then
|
|
"True"
|
|
else if val == false then
|
|
"False"
|
|
else
|
|
''"${toString val}"'';
|
|
|
|
toConfigObject =
|
|
let
|
|
toKey = depth: key: if depth == 0 then key else toKey (depth - 1) "[${key}]";
|
|
toConfigObjectLevel =
|
|
depth: obj:
|
|
lib.flatten (
|
|
lib.mapAttrsToList (
|
|
key: val:
|
|
if lib.isAttrs val then
|
|
[ (toKey depth key) ] ++ toConfigObjectLevel (depth + 1) val
|
|
else
|
|
[ "${key} = ${toValue val}" ]
|
|
) obj
|
|
);
|
|
in
|
|
obj: lib.concatStringsSep "\n" (toConfigObjectLevel 1 obj);
|
|
|
|
in
|
|
{
|
|
meta.maintainers = [ lib.maintainers.chisui ];
|
|
|
|
options.programs.terminator = {
|
|
enable = lib.mkEnableOption "terminator, a tiling terminal emulator";
|
|
|
|
package = lib.mkPackageOption pkgs "terminator" { };
|
|
|
|
config = lib.mkOption {
|
|
default = { };
|
|
description = ''
|
|
configuration for terminator.
|
|
|
|
For a list of all possible options refer to the
|
|
{manpage}`terminator_config(5)`
|
|
man page.
|
|
'';
|
|
type = lib.types.attrsOf lib.types.anything;
|
|
example = lib.literalExpression ''
|
|
{
|
|
global_config.borderless = true;
|
|
profiles.default.background_color = "#002b36";
|
|
}
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
assertions = [
|
|
(lib.hm.assertions.assertPlatform "programs.terminator" pkgs lib.platforms.linux)
|
|
];
|
|
|
|
home.packages = [ cfg.package ];
|
|
|
|
xdg.configFile."terminator/config" = lib.mkIf (cfg.config != { }) {
|
|
text = toConfigObject cfg.config;
|
|
};
|
|
};
|
|
}
|