summaryrefslogtreecommitdiff
path: root/common/modules/terminal/default.nix
blob: b8f97c2e11860842aeb0b08c5b98e7851ec102dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
{
  homeManager,
  inputs,
  moduleNameSpace,
  ...
}:
{
  config,
  lib,
  pkgs,
  ...
}:
with lib;
let
  cfg = config.${moduleNameSpace}.terminal;
in
{
  imports = [
    (import ./foot.nix { inherit lib config; })
    (import ./ghostty.nix { inherit lib config; })
    (import ./alacritty.nix { inherit lib config; })
  ];

  options.${moduleNameSpace}.terminal = {
    default = mkOption {
      type = types.enum [
        "foot"
        "ghostty"
        "alacritty"
      ];
      default = "foot";
      description = "The terminal emulator to enable.";
    };
    foot = mkEnableOption "enable foot";
    alacritty = mkEnableOption "enable alacritty";
    ghostty = mkEnableOption "enable ghostty";

    font = {
      family = mkOption {
        type = types.str;
        default = "monospace";
      };

      size = mkOption {
        type = types.float;
        default = 13.0;
      };

      bright_color_is_bold = mkOption {
        type = types.bool;
        default = false;
        description = "Force bold text";
      };

      ligatures = mkEnableOption "Only supported by ghostty";
    };

    window = {
      padding-x = mkOption {
        type = types.int;
        default = 10;
        description = "Window padding x axis (pixels).";
      };

      padding-y = mkOption {
        type = types.int;
        default = 10;
        description = "Window padding y axis (pixels).";
      };
    };
  };
}