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}