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