diff options
author | Timo Meijer <timo.meijer@live.nl> | 2015-11-28 09:55:46 +0000 |
---|---|---|
committer | Timo Meijer <timo.meijer@live.nl> | 2015-11-30 12:58:05 +0000 |
commit | 59c6fba342fabbd456675a0438c69da5b2efc488 (patch) | |
tree | 1d840ec7173e74c82b01d35aaa7b40a104f55eb4 | |
parent | 054402d479b35c4a109549e6d37a8ded7ab65f73 (diff) | |
download | nixlib-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
-rw-r--r-- | nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix | 79 | ||||
-rw-r--r-- | nixos/modules/services/x11/display-managers/lightdm.nix | 73 |
2 files changed, 103 insertions, 49 deletions
diff --git a/nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix b/nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix new file mode 100644 index 000000000000..10a7c535c25b --- /dev/null +++ b/nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix @@ -0,0 +1,79 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + + dmcfg = config.services.xserver.displayManager; + ldmcfg = dmcfg.lightdm; + cfg = ldmcfg.greeters.gtk; + + inherit (pkgs) stdenv lightdm writeScript writeText; + + 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 + ''; + }; + + gtkGreeterConf = writeText "lightdm-gtk-greeter.conf" + '' + [greeter] + theme-name = Adwaita + icon-theme-name = Adwaita + background = ${ldmcfg.background} + ''; + +in +{ + options = { + services.xserver.displayManager.lightdm.greeters.gtk = { + + enable = mkOption { + type = types.bool; + default = true; + description = '' + Whether to enable lightdm-gtk-greeter as the lightdm greeter. + ''; + }; + + }; + }; + + config = mkIf cfg.enable { + + services.xserver.displayManager.lightdm.greeter = mkDefault { + package = wrappedGtkGreeter; + name = "lightdm-gtk-greeter"; + }; + + environment.etc."lightdm/lightdm-gtk-greeter.conf".source = gtkGreeterConf; + + }; +} 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; |