summary refs log tree commit diff
path: root/nixos/modules/services/x11/display-managers/lightdm.nix
diff options
context:
space:
mode:
authorTimo Meijer <timo.meijer@live.nl>2015-11-28 09:55:46 +0000
committerTimo Meijer <timo.meijer@live.nl>2015-11-30 12:58:05 +0000
commit59c6fba342fabbd456675a0438c69da5b2efc488 (patch)
tree1d840ec7173e74c82b01d35aaa7b40a104f55eb4 /nixos/modules/services/x11/display-managers/lightdm.nix
parent054402d479b35c4a109549e6d37a8ded7ab65f73 (diff)
downloadnixlib-59c6fba342fabbd456675a0438c69da5b2efc488.tar
nixlib-59c6fba342fabbd456675a0438c69da5b2efc488.tar.gz
nixlib-59c6fba342fabbd456675a0438c69da5b2efc488.tar.bz2
nixlib-59c6fba342fabbd456675a0438c69da5b2efc488.tar.lz
nixlib-59c6fba342fabbd456675a0438c69da5b2efc488.tar.xz
nixlib-59c6fba342fabbd456675a0438c69da5b2efc488.tar.zst
nixlib-59c6fba342fabbd456675a0438c69da5b2efc488.zip
lightdm module: extract greeter configuration
Diffstat (limited to 'nixos/modules/services/x11/display-managers/lightdm.nix')
-rw-r--r--nixos/modules/services/x11/display-managers/lightdm.nix73
1 files changed, 24 insertions, 49 deletions
diff --git a/nixos/modules/services/x11/display-managers/lightdm.nix b/nixos/modules/services/x11/display-managers/lightdm.nix
index 8452b1ec33cd..c8ccf43029dc 100644
--- a/nixos/modules/services/x11/display-managers/lightdm.nix
+++ b/nixos/modules/services/x11/display-managers/lightdm.nix
@@ -18,38 +18,6 @@ let
       exec ${dmcfg.xserverBin} ${dmcfg.xserverArgs}
     '';
 
-  theme = pkgs.gnome3.gnome_themes_standard;
-  icons = pkgs.gnome3.defaultIconTheme;
-
-  # The default greeter provided with this expression is the GTK greeter.
-  # Again, we need a few things in the environment for the greeter to run with
-  # fonts/icons.
-  wrappedGtkGreeter = stdenv.mkDerivation {
-    name = "lightdm-gtk-greeter";
-    buildInputs = [ pkgs.makeWrapper ];
-
-    buildCommand = ''
-      # This wrapper ensures that we actually get themes
-      makeWrapper ${pkgs.lightdm_gtk_greeter}/sbin/lightdm-gtk-greeter \
-        $out/greeter \
-        --prefix PATH : "${pkgs.glibc}/bin" \
-        --set GDK_PIXBUF_MODULE_FILE "${pkgs.gdk_pixbuf}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" \
-        --set GTK_PATH "${theme}:${pkgs.gtk3}" \
-        --set GTK_EXE_PREFIX "${theme}" \
-        --set GTK_DATA_PREFIX "${theme}" \
-        --set XDG_DATA_DIRS "${theme}/share:${icons}/share" \
-        --set XDG_CONFIG_HOME "${theme}/share"
-
-      cat - > $out/lightdm-gtk-greeter.desktop << EOF
-      [Desktop Entry]
-      Name=LightDM Greeter
-      Comment=This runs the LightDM Greeter
-      Exec=$out/greeter
-      Type=Application
-      EOF
-    '';
-  };
-
   usersConf = writeText "users.conf"
     ''
       [UserList]
@@ -72,34 +40,42 @@ let
       ${cfg.extraSeatDefaults}
     '';
 
-  gtkGreeterConf = writeText "lightdm-gtk-greeter.conf"
-    ''
-    [greeter]
-    theme-name = Adwaita
-    icon-theme-name = Adwaita
-    background = ${cfg.background}
-    '';
-
 in
 {
+  # Note: the order in which lightdm greeter modules are imported
+  # here determines the default: later modules (if enable) are
+  # preferred.
+  imports = [
+    ./lightdm-greeters/gtk.nix
+  ];
+
   options = {
+
     services.xserver.displayManager.lightdm = {
 
       enable = mkOption {
+        type = types.bool;
         default = false;
         description = ''
           Whether to enable lightdm as the display manager.
         '';
       };
 
-      greeter = mkOption {
-        description = ''
-          The LightDM greeter to login via. The package should be a directory
-          containing a .desktop file matching the name in the 'name' option.
-        '';
-        default = {
-          name = "lightdm-gtk-greeter";
-          package = wrappedGtkGreeter;
+      greeter =  {
+        package = mkOption {
+          type = types.path;
+          description = ''
+            The LightDM greeter to login via. The package should be a directory
+            containing a .desktop file matching the name in the 'name' option.
+          '';
+
+        };
+        name = mkOption {
+          type = types.string;
+          description = ''
+            The name of a .desktop file in the directory specified
+            in the 'package' option.
+          '';
         };
       };
 
@@ -135,7 +111,6 @@ in
       '';
     };
 
-    environment.etc."lightdm/lightdm-gtk-greeter.conf".source = gtkGreeterConf;
     environment.etc."lightdm/lightdm.conf".source = lightdmConf;
     environment.etc."lightdm/users.conf".source = usersConf;