vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / x11 / display-managers / lightdm-greeters / slick.nix
blob4758b8d94eda29cb0af42d4e577827c743ebd608
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
6   ldmcfg = config.services.xserver.displayManager.lightdm;
7   cfg = ldmcfg.greeters.slick;
9   inherit (pkgs) writeText;
11   theme = cfg.theme.package;
12   icons = cfg.iconTheme.package;
13   font = cfg.font.package;
14   cursors = cfg.cursorTheme.package;
16   slickGreeterConf = writeText "slick-greeter.conf" ''
17     [Greeter]
18     background=${ldmcfg.background}
19     theme-name=${cfg.theme.name}
20     icon-theme-name=${cfg.iconTheme.name}
21     font-name=${cfg.font.name}
22     cursor-theme-name=${cfg.cursorTheme.name}
23     cursor-theme-size=${toString cfg.cursorTheme.size}
24     draw-user-backgrounds=${boolToString cfg.draw-user-backgrounds}
25     ${cfg.extraConfig}
26   '';
29   options = {
30     services.xserver.displayManager.lightdm.greeters.slick = {
31       enable = mkEnableOption "lightdm-slick-greeter as the lightdm greeter";
33       theme = {
34         package = mkOption {
35           type = types.package;
36           default = pkgs.gnome-themes-extra;
37           defaultText = literalExpression "pkgs.gnome-themes-extra";
38           description = ''
39             The package path that contains the theme given in the name option.
40           '';
41         };
43         name = mkOption {
44           type = types.str;
45           default = "Adwaita";
46           description = ''
47             Name of the theme to use for the lightdm-slick-greeter.
48           '';
49         };
50       };
52       iconTheme = {
53         package = mkOption {
54           type = types.package;
55           default = pkgs.adwaita-icon-theme;
56           defaultText = literalExpression "pkgs.adwaita-icon-theme";
57           description = ''
58             The package path that contains the icon theme given in the name option.
59           '';
60         };
62         name = mkOption {
63           type = types.str;
64           default = "Adwaita";
65           description = ''
66             Name of the icon theme to use for the lightdm-slick-greeter.
67           '';
68         };
69       };
71       font = {
72         package = mkOption {
73           type = types.package;
74           default = pkgs.ubuntu-classic;
75           defaultText = literalExpression "pkgs.ubuntu-classic";
76           description = ''
77             The package path that contains the font given in the name option.
78           '';
79         };
81         name = mkOption {
82           type = types.str;
83           default = "Ubuntu 11";
84           description = ''
85             Name of the font to use.
86           '';
87         };
88       };
90       cursorTheme = {
91         package = mkOption {
92           type = types.package;
93           default = pkgs.adwaita-icon-theme;
94           defaultText = literalExpression "pkgs.adwaita-icon-theme";
95           description = ''
96             The package path that contains the cursor theme given in the name option.
97           '';
98         };
100         name = mkOption {
101           type = types.str;
102           default = "Adwaita";
103           description = ''
104             Name of the cursor theme to use for the lightdm-slick-greeter.
105           '';
106         };
108         size = mkOption {
109           type = types.int;
110           default = 24;
111           description = ''
112             Size of the cursor theme to use for the lightdm-slick-greeter.
113           '';
114         };
115       };
117       draw-user-backgrounds = mkEnableOption "draw user backgrounds";
119       extraConfig = mkOption {
120         type = types.lines;
121         default = "";
122         description = ''
123           Extra configuration that should be put in the lightdm-slick-greeter.conf
124           configuration file.
125         '';
126       };
127     };
128   };
130   config = mkIf (ldmcfg.enable && cfg.enable) {
131     services.xserver.displayManager.lightdm = {
132       greeters.gtk.enable = false;
133       greeter = mkDefault {
134         package = pkgs.lightdm-slick-greeter.xgreeters;
135         name = "lightdm-slick-greeter";
136       };
137     };
139     environment.systemPackages = [
140       cursors
141       icons
142       theme
143     ];
145     fonts.packages = [ font ];
147     environment.etc."lightdm/slick-greeter.conf".source = slickGreeterConf;
148   };