2021-07-02 22:36:30 +00:00
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
|
|
|
|
with lib;
|
|
|
|
|
|
|
|
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:
|
|
|
|
flatten (mapAttrsToList (key: val:
|
|
|
|
if isAttrs val then
|
|
|
|
[ (toKey depth key) ] ++ toConfigObjectLevel (depth + 1) val
|
|
|
|
else
|
|
|
|
[ "${key} = ${toValue val}" ]) obj);
|
|
|
|
in obj: concatStringsSep "\n" (toConfigObjectLevel 1 obj);
|
|
|
|
|
|
|
|
in {
|
|
|
|
meta.maintainers = [ maintainers.chisui ];
|
|
|
|
|
|
|
|
options.programs.terminator = {
|
|
|
|
enable = mkEnableOption "terminator, a tiling terminal emulator";
|
|
|
|
|
|
|
|
package = mkOption {
|
|
|
|
type = types.package;
|
|
|
|
default = pkgs.terminator;
|
2021-11-04 16:42:44 +00:00
|
|
|
example = literalExpression "pkgs.terminator";
|
2021-07-02 22:36:30 +00:00
|
|
|
description = "terminator package to install.";
|
|
|
|
};
|
|
|
|
|
|
|
|
config = mkOption {
|
|
|
|
default = { };
|
|
|
|
description = ''
|
|
|
|
configuration for terminator.
|
2023-08-08 10:19:01 +00:00
|
|
|
|
2021-07-02 22:36:30 +00:00
|
|
|
For a list of all possible options refer to the
|
2023-08-08 10:19:01 +00:00
|
|
|
{manpage}`terminator_config(5)`
|
2021-07-02 22:36:30 +00:00
|
|
|
man page.
|
|
|
|
'';
|
|
|
|
type = types.attrsOf types.anything;
|
2021-11-04 16:42:44 +00:00
|
|
|
example = literalExpression ''
|
2021-07-02 22:36:30 +00:00
|
|
|
{
|
|
|
|
global_config.borderless = true;
|
|
|
|
profiles.default.background_color = "#002b36";
|
|
|
|
}
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
config = mkIf cfg.enable {
|
2021-11-04 16:42:44 +00:00
|
|
|
assertions = [
|
|
|
|
(hm.assertions.assertPlatform "programs.terminator" pkgs platforms.linux)
|
|
|
|
];
|
|
|
|
|
2021-07-02 22:36:30 +00:00
|
|
|
home.packages = [ cfg.package ];
|
2021-11-04 16:42:44 +00:00
|
|
|
|
2021-07-02 22:36:30 +00:00
|
|
|
xdg.configFile."terminator/config" =
|
|
|
|
mkIf (cfg.config != { }) { text = toConfigObject cfg.config; };
|
|
|
|
};
|
|
|
|
}
|