From b558eb8329d36f79cdb635aace92b5aa033eaee6 Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Wed, 11 Sep 2019 07:07:45 -0400 Subject: nixos/lightdm-gtk-greeter: don't wrap in module --- .../x11/display-managers/lightdm-greeters/gtk.nix | 36 +++++----------------- .../display-managers/lightdm/gtk-greeter.nix | 31 ++++++++++++++----- 2 files changed, 30 insertions(+), 37 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 index 5b280b02423..de932e6e840 100644 --- a/nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix +++ b/nixos/modules/services/x11/display-managers/lightdm-greeters/gtk.nix @@ -15,34 +15,6 @@ let icons = cfg.iconTheme.package; cursors = cfg.cursorTheme.package; - # 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 = pkgs.runCommand "lightdm-gtk-greeter" { - buildInputs = [ pkgs.makeWrapper ]; - preferLocalBuild = true; - } '' - # This wrapper ensures that we actually get themes - makeWrapper ${pkgs.lightdm_gtk_greeter}/sbin/lightdm-gtk-greeter \ - $out/greeter \ - --prefix PATH : "${lib.getBin pkgs.stdenv.cc.libc}/bin" \ - --set GDK_PIXBUF_MODULE_FILE "${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache" \ - --set GTK_PATH "${theme}:${pkgs.gtk3.out}" \ - --set GTK_EXE_PREFIX "${theme}" \ - --set GTK_DATA_PREFIX "${theme}" \ - --set XDG_DATA_DIRS "${theme}/share:${icons}/share" \ - --set XDG_CONFIG_HOME "${theme}/share" \ - --set XCURSOR_PATH "${cursors}/share/icons" - - 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] @@ -185,10 +157,16 @@ in config = mkIf (ldmcfg.enable && cfg.enable) { services.xserver.displayManager.lightdm.greeter = mkDefault { - package = wrappedGtkGreeter; + package = pkgs.lightdm_gtk_greeter.xgreeters; name = "lightdm-gtk-greeter"; }; + environment.systemPackages = [ + cursors + icons + theme + ]; + environment.etc."lightdm/lightdm-gtk-greeter.conf".source = gtkGreeterConf; }; diff --git a/pkgs/applications/display-managers/lightdm/gtk-greeter.nix b/pkgs/applications/display-managers/lightdm/gtk-greeter.nix index f892a9da50b..0a49fa8c739 100644 --- a/pkgs/applications/display-managers/lightdm/gtk-greeter.nix +++ b/pkgs/applications/display-managers/lightdm/gtk-greeter.nix @@ -1,7 +1,18 @@ -{ stdenv, fetchurl, lightdm, pkgconfig, intltool -, hicolor-icon-theme, makeWrapper -, useGTK2 ? false, gtk2, gtk3 # gtk3 seems better supported -, exo, at-spi2-core +{ stdenv +, lightdm_gtk_greeter +, fetchurl +, lightdm +, pkgconfig +, intltool +, linkFarm +, wrapGAppsHook +, useGTK2 ? false +, gtk2 +, gtk3 # gtk3 seems better supported +, exo +, at-spi2-core +, librsvg +, hicolor-icon-theme }: #ToDo: bad icons with gtk2; @@ -20,14 +31,15 @@ stdenv.mkDerivation rec { sha256 = "1pis5qyg95pg31dvnfqq34bzgj00hg4vs547r8h60lxjk81z8p15"; }; - nativeBuildInputs = [ pkgconfig ]; - buildInputs = [ lightdm exo intltool makeWrapper hicolor-icon-theme ] + nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook ]; + buildInputs = [ lightdm exo librsvg hicolor-icon-theme ] ++ (if useGTK2 then [ gtk2 ] else [ gtk3 ]); configureFlags = [ "--localstatedir=/var" "--sysconfdir=/etc" "--disable-indicator-services-command" + "--sbindir=${placeholder "out"}/bin" # for wrapGAppsHook to wrap automatically ] ++ stdenv.lib.optional useGTK2 "--with-gtk2"; preConfigure = '' @@ -44,10 +56,13 @@ stdenv.mkDerivation rec { postInstall = '' substituteInPlace "$out/share/xgreeters/lightdm-gtk-greeter.desktop" \ --replace "Exec=lightdm-gtk-greeter" "Exec=$out/sbin/lightdm-gtk-greeter" - wrapProgram "$out/sbin/lightdm-gtk-greeter" \ - --prefix XDG_DATA_DIRS ":" "${hicolor-icon-theme}/share" ''; + passthru.xgreeters = linkFarm "lightdm-gtk-greeter-xgreeters" [{ + path = "${lightdm_gtk_greeter}/share/xgreeters/lightdm-gtk-greeter.desktop"; + name = "lightdm-gtk-greeter.desktop"; + }]; + meta = with stdenv.lib; { homepage = https://launchpad.net/lightdm-gtk-greeter; platforms = platforms.linux; -- cgit 1.4.1