vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / x11 / display-managers / lightdm-greeters / gtk.nix
blob0907aeb839ba35e31ed0acef6ce7143674d1e1a6
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   dmcfg = config.services.xserver.displayManager;
8   ldmcfg = dmcfg.lightdm;
9   xcfg = config.services.xserver;
10   cfg = ldmcfg.greeters.gtk;
12   inherit (pkgs) writeText;
14   theme = cfg.theme.package;
15   icons = cfg.iconTheme.package;
16   cursors = cfg.cursorTheme.package;
18   gtkGreeterConf = writeText "lightdm-gtk-greeter.conf"
19     ''
20     [greeter]
21     theme-name = ${cfg.theme.name}
22     icon-theme-name = ${cfg.iconTheme.name}
23     cursor-theme-name = ${cfg.cursorTheme.name}
24     cursor-theme-size = ${toString cfg.cursorTheme.size}
25     background = ${ldmcfg.background}
26     ${optionalString (cfg.clock-format != null) "clock-format = ${cfg.clock-format}"}
27     ${optionalString (cfg.indicators != null) "indicators = ${concatStringsSep ";" cfg.indicators}"}
28     ${optionalString (xcfg.dpi != null) "xft-dpi=${toString xcfg.dpi}"}
29     ${cfg.extraConfig}
30     '';
34   options = {
36     services.xserver.displayManager.lightdm.greeters.gtk = {
38       enable = mkOption {
39         type = types.bool;
40         default = true;
41         description = ''
42           Whether to enable lightdm-gtk-greeter as the lightdm greeter.
43         '';
44       };
46       theme = {
48         package = mkOption {
49           type = types.package;
50           default = pkgs.gnome-themes-extra;
51           defaultText = literalExpression "pkgs.gnome-themes-extra";
52           description = ''
53             The package path that contains the theme given in the name option.
54           '';
55         };
57         name = mkOption {
58           type = types.str;
59           default = "Adwaita";
60           description = ''
61             Name of the theme to use for the lightdm-gtk-greeter.
62           '';
63         };
65       };
67       iconTheme = {
69         package = mkOption {
70           type = types.package;
71           default = pkgs.adwaita-icon-theme;
72           defaultText = literalExpression "pkgs.adwaita-icon-theme";
73           description = ''
74             The package path that contains the icon theme given in the name option.
75           '';
76         };
78         name = mkOption {
79           type = types.str;
80           default = "Adwaita";
81           description = ''
82             Name of the icon theme to use for the lightdm-gtk-greeter.
83           '';
84         };
86       };
88       cursorTheme = {
90         package = mkOption {
91           type = types.package;
92           default = pkgs.adwaita-icon-theme;
93           defaultText = literalExpression "pkgs.adwaita-icon-theme";
94           description = ''
95             The package path that contains the cursor theme given in the name option.
96           '';
97         };
99         name = mkOption {
100           type = types.str;
101           default = "Adwaita";
102           description = ''
103             Name of the cursor theme to use for the lightdm-gtk-greeter.
104           '';
105         };
107         size = mkOption {
108           type = types.int;
109           default = 16;
110           description = ''
111             Size of the cursor theme to use for the lightdm-gtk-greeter.
112           '';
113         };
114       };
116       clock-format = mkOption {
117         type = types.nullOr types.str;
118         default = null;
119         example = "%F";
120         description = ''
121           Clock format string (as expected by strftime, e.g. "%H:%M")
122           to use with the lightdm gtk greeter panel.
124           If set to null the default clock format is used.
125         '';
126       };
128       indicators = mkOption {
129         type = types.nullOr (types.listOf types.str);
130         default = null;
131         example = [ "~host" "~spacer" "~clock" "~spacer" "~session" "~language" "~a11y" "~power" ];
132         description = ''
133           List of allowed indicator modules to use for the lightdm gtk
134           greeter panel.
136           Built-in indicators include "~a11y", "~language", "~session",
137           "~power", "~clock", "~host", "~spacer". Unity indicators can be
138           represented by short name (e.g. "sound", "power"), service file name,
139           or absolute path.
141           If set to null the default indicators are used.
142         '';
143       };
145       extraConfig = mkOption {
146         type = types.lines;
147         default = "";
148         description = ''
149           Extra configuration that should be put in the lightdm-gtk-greeter.conf
150           configuration file.
151         '';
152       };
154     };
156   };
158   config = mkIf (ldmcfg.enable && cfg.enable) {
160     services.xserver.displayManager.lightdm.greeter = mkDefault {
161       package = pkgs.lightdm-gtk-greeter.xgreeters;
162       name = "lightdm-gtk-greeter";
163     };
165     environment.systemPackages = [
166       cursors
167       icons
168       theme
169     ];
171     environment.etc."lightdm/lightdm-gtk-greeter.conf".source = gtkGreeterConf;
173   };