aboutsummaryrefslogtreecommitdiff
path: root/modules/desktop/options.nix
blob: 72dda950d278ced2358f4ec06bcb55f07bfa9428 (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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
{
  pkgs,
  config,
  lib,
  my-lib,
  ...
}: let
  inherit (lib) mkOption mkEnableOption types;
  inherit (my-lib.options {inherit lib config;}) mkProgramOption;
in {
  options = {
    collinux.desktop = {
      wallpaper = mkOption {
        type = with types; oneOf [str path];
        description = "File to use as the wallpaper on this machine";
      };

      greetd = {
        enable = mkEnableOption "greetd greeter";
        command = mkOption {
          type = lib.types.package;
          default = let
            cfg = config.collinux.desktop;
          in
            if (cfg.sway.enable && !cfg.gnome.enable)
            then pkgs.sway
            else null;
        };
      };
      gdm.enable = mkEnableOption "gdm display manager";

      sway = {
        enable = mkEnableOption "sway";
        components = {
          # waybar = mkProgramOption "waybar";
          dunst = mkProgramOption "dunst";
          fuzzel = mkProgramOption "fuzzel";
        };
      };
      gnome.enable = mkEnableOption "gnome";

      gtk = {
        enable = mkEnableOption "gtk theming";
        theme = mkOption {
          type = types.enum ["catppuccin" "adwaita"];
          default = config.collinux.theme;
        };
        cursor_data = {
          package = mkOption {
            type = lib.types.package;
            default =
              if (config.collinux.desktop.gtk.theme == "catppuccin")
              then pkgs.catppuccin-cursors.mochaDark
              else if (config.collinux.desktop.gtk.theme == "adwaita")
              then pkgs.vanilla-dmz
              else null;
          };
          name = mkOption {
            type = lib.types.str;
            default =
              if (config.collinux.desktop.gtk.theme == "catppuccin")
              then "catppuccin-mocha-dark-cursors"
              else if (config.collinux.desktop.gtk.theme == "adwaita")
              then "Vanilla-DMZ"
              else null;
          };
        };
        theme_data = {
          package = mkOption {
            type = lib.types.package;
            default =
              if (config.collinux.desktop.gtk.theme == "catppuccin")
              then
                (pkgs.catppuccin-gtk.override {
                  variant = "mocha";
                  accents = ["blue"];
                  size = "standard";
                })
              else if (config.collinux.desktop.gtk.theme == "adwaita")
              then pkgs.adw-gtk3
              else "";
          };
          name = mkOption {
            type = lib.types.str;
            default =
              if (config.collinux.desktop.gtk.theme == "catppuccin")
              then "catppuccin-mocha-blue-standard"
              else if (config.collinux.desktop.gtk.theme == "adwaita")
              then "adw-gtk3"
              else "";
          };
        };
      };

      programs = {
        firefox = {
          enable = mkEnableOption "firefox";
          profileName = mkOption {
            type = types.str;
            default = config.collinux.user.name;
          };
          theme = mkOption {
            type = types.enum ["none" "catppuccin" "adwaita"];
            default = config.collinux.theme;
          };
          extensions.zotero.enable = mkOption {
            description = "install Zotero Connector for Firefox";
            default = config.collinux.desktop.programs.research.enable;
          };
        };

        foot.enable = mkEnableOption "foot";
        blackbox.enable = mkEnableOption "blackbox";

        research.enable = mkEnableOption "zathura, Xournal++, Zotero, Zotero Connector";
      };
    };
  };
}