1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8with lib;
9
10let
11
12 dmcfg = config.services.xserver.displayManager;
13 ldmcfg = dmcfg.lightdm;
14 cfg = ldmcfg.greeters.mini;
15
16 miniGreeterConf = pkgs.writeText "lightdm-mini-greeter.conf" ''
17 [greeter]
18 user = ${cfg.user}
19 show-password-label = true
20 password-label-text = Password:
21 invalid-password-text = Invalid Password
22 show-input-cursor = true
23 password-alignment = right
24
25 [greeter-hotkeys]
26 mod-key = meta
27 shutdown-key = s
28 restart-key = r
29 hibernate-key = h
30 suspend-key = u
31
32 [greeter-theme]
33 font = Sans
34 font-size = 1em
35 font-weight = bold
36 font-style = normal
37 text-color = "#080800"
38 error-color = "#F8F8F0"
39 background-image = "${ldmcfg.background}"
40 background-color = "#1B1D1E"
41 window-color = "#F92672"
42 border-color = "#080800"
43 border-width = 2px
44 layout-space = 15
45 password-color = "#F8F8F0"
46 password-background-color = "#1B1D1E"
47 password-border-color = "#080800"
48 password-border-width = 2px
49
50 ${cfg.extraConfig}
51 '';
52
53in
54{
55 options = {
56
57 services.xserver.displayManager.lightdm.greeters.mini = {
58
59 enable = mkOption {
60 type = types.bool;
61 default = false;
62 description = ''
63 Whether to enable lightdm-mini-greeter as the lightdm greeter.
64
65 Note that this greeter starts only the default X session.
66 You can configure the default X session using
67 [](#opt-services.displayManager.defaultSession).
68 '';
69 };
70
71 user = mkOption {
72 type = types.str;
73 default = "root";
74 description = ''
75 The user to login as.
76 '';
77 };
78
79 extraConfig = mkOption {
80 type = types.lines;
81 default = "";
82 description = ''
83 Extra configuration that should be put in the lightdm-mini-greeter.conf
84 configuration file.
85 '';
86 };
87
88 };
89
90 };
91
92 config = mkIf (ldmcfg.enable && cfg.enable) {
93
94 services.xserver.displayManager.lightdm.greeters.gtk.enable = false;
95
96 services.xserver.displayManager.lightdm.greeter = mkDefault {
97 package = pkgs.lightdm-mini-greeter.xgreeters;
98 name = "lightdm-mini-greeter";
99 };
100
101 environment.etc."lightdm/lightdm-mini-greeter.conf".source = miniGreeterConf;
102
103 };
104}