about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix')
-rw-r--r--nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix129
1 files changed, 129 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix
new file mode 100644
index 000000000000..da18ab26e083
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix
@@ -0,0 +1,129 @@
+{ stdenv
+, fetchFromGitHub
+, linkFarm
+, substituteAll
+, elementary-greeter
+, pantheon
+, pkgconfig
+, meson
+, ninja
+, vala
+, desktop-file-utils
+, gtk3
+, granite
+, libgee
+, elementary-settings-daemon
+, mutter
+, elementary-icon-theme
+, wingpanel-with-indicators
+, elementary-gtk-theme
+, nixos-artwork
+, lightdm
+, gdk-pixbuf
+, clutter-gtk
+, dbus
+, accountsservice
+, wrapGAppsHook
+}:
+
+stdenv.mkDerivation rec {
+  pname = "elementary-greeter";
+  version = "5.0.4";
+
+  repoName = "greeter";
+
+  src = fetchFromGitHub {
+    owner = "elementary";
+    repo = repoName;
+    rev = version;
+    sha256 = "1zrsvbd386f7r3jbvjf8j08v1n5cpzkbjjaj2lxvjn8b81xgwy8j";
+  };
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      attrPath = "pantheon.${pname}";
+    };
+
+    xgreeters = linkFarm "pantheon-greeter-xgreeters" [{
+      path = "${elementary-greeter}/share/xgreeters/io.elementary.greeter.desktop";
+      name = "io.elementary.greeter.desktop";
+    }];
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    meson
+    ninja
+    pkgconfig
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    accountsservice
+    clutter-gtk # else we get could not generate cargs for mutter-clutter-2
+    elementary-gtk-theme
+    elementary-icon-theme
+    elementary-settings-daemon
+    gdk-pixbuf
+    granite
+    gtk3
+    libgee
+    lightdm
+    mutter
+    wingpanel-with-indicators
+  ];
+
+  mesonFlags = [
+    # A hook does this but after wrapGAppsHook so the files never get wrapped.
+    "--sbindir=${placeholder "out"}/bin"
+    # baked into the program for discovery of the greeter configuration
+    "--sysconfdir=/etc"
+    # We use the patched gnome-settings-daemon
+    "-Dubuntu-patched-gsd=true"
+    "-Dgsd-dir=${elementary-settings-daemon}/libexec/" # trailing slash is needed
+  ];
+
+  patches = [
+    ./sysconfdir-install.patch
+    # Needed until https://github.com/elementary/greeter/issues/360 is fixed
+    (substituteAll {
+      src = ./hardcode-fallback-background.patch;
+      default_wallpaper = "${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}";
+    })
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      # dbus-launch needed in path
+      --prefix PATH : "${dbus}/bin"
+
+      # for `wingpanel -g`
+      --prefix PATH : "${wingpanel-with-indicators}/bin"
+
+      # for the compositor
+      --prefix PATH : "$out/bin"
+
+      # the theme is hardcoded
+      --prefix XDG_DATA_DIRS : "${elementary-gtk-theme}/share"
+    )
+  '';
+
+  postFixup = ''
+    # Use NixOS default wallpaper
+    substituteInPlace $out/etc/lightdm/io.elementary.greeter.conf \
+      --replace "#default-wallpaper=/usr/share/backgrounds/elementaryos-default" \
+      "default-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}"
+
+    substituteInPlace $out/share/xgreeters/io.elementary.greeter.desktop \
+      --replace "Exec=io.elementary.greeter" "Exec=$out/bin/io.elementary.greeter"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "LightDM Greeter for Pantheon";
+    homepage = "https://github.com/elementary/greeter";
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = pantheon.maintainers;
+  };
+}