vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / x11 / display-managers / lightdm-greeters / tiny.nix
blob835cf049e4ee5976a4dde857e3137ecdfd1b60d1
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   dmcfg = config.services.xserver.displayManager;
8   ldmcfg = dmcfg.lightdm;
9   cfg = ldmcfg.greeters.tiny;
13   options = {
15     services.xserver.displayManager.lightdm.greeters.tiny = {
17       enable = mkOption {
18         type = types.bool;
19         default = false;
20         description = ''
21           Whether to enable lightdm-tiny-greeter as the lightdm greeter.
23           Note that this greeter starts only the default X session.
24           You can configure the default X session using
25           [](#opt-services.displayManager.defaultSession).
26         '';
27       };
29       label = {
30         user = mkOption {
31           type = types.str;
32           default = "Username";
33           description = ''
34             The string to represent the user_text label.
35           '';
36         };
38         pass = mkOption {
39           type = types.str;
40           default = "Password";
41           description = ''
42             The string to represent the pass_text label.
43           '';
44         };
45       };
48       extraConfig = mkOption {
49         type = types.lines;
50         default = "";
51         description = ''
52           Section to describe style and ui.
53         '';
54       };
56     };
58   };
60   config = mkIf (ldmcfg.enable && cfg.enable) {
62     services.xserver.displayManager.lightdm.greeters.gtk.enable = false;
64     services.xserver.displayManager.lightdm.greeter =
65     let
66       configHeader = ''
67         #include <gtk/gtk.h>
68         static const char *user_text = "${cfg.label.user}";
69         static const char *pass_text = "${cfg.label.pass}";
70         static const char *session = "${dmcfg.defaultSession}";
71       '';
72       config = optionalString (cfg.extraConfig != "") (configHeader + cfg.extraConfig);
73       package = pkgs.lightdm-tiny-greeter.override { conf = config; };
74     in
75       mkDefault {
76         package = package.xgreeters;
77         name = "lightdm-tiny-greeter";
78       };
80     assertions = [
81       {
82         assertion = dmcfg.defaultSession != null;
83         message = ''
84           Please set: services.displayManager.defaultSession
85         '';
86       }
87     ];
89   };