about summary refs log tree commit diff
path: root/pkgs/desktops/pantheon/desktop/elementary-greeter
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops/pantheon/desktop/elementary-greeter')
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch25
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix103
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch13
-rw-r--r--pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch13
4 files changed, 154 insertions, 0 deletions
diff --git a/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch b/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch
new file mode 100644
index 000000000000..626e56ce5960
--- /dev/null
+++ b/pkgs/desktops/pantheon/desktop/elementary-greeter/01-sysconfdir-install.patch
@@ -0,0 +1,25 @@
+From 2384bee55a46eac44eb9d329be4c2a097e053ae1 Mon Sep 17 00:00:00 2001
+From: worldofpeace <worldofpeace@users.noreply.github.com>
+Date: Tue, 17 Jul 2018 07:04:18 -0400
+Subject: [PATCH 1/1] 'sysconfdir' will be etc not /etc for install
+
+---
+ data/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/data/meson.build b/data/meson.build
+index 7621b03..7c08eaf 100644
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -20,7 +20,7 @@ i18n.merge_file (
+ 
+ install_data(
+     meson.project_name() + '.conf',
+-    install_dir: join_paths(get_option('sysconfdir'), 'lightdm')
++    install_dir: join_paths(get_option('prefix'), 'etc', 'lightdm')
+ )
+ 
+ install_data(
+-- 
+2.17.1
+
diff --git a/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix b/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix
new file mode 100644
index 000000000000..303aae6882b8
--- /dev/null
+++ b/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix
@@ -0,0 +1,103 @@
+{ stdenv, fetchFromGitHub, pantheon, pkgconfig, substituteAll, makeWrapper, meson
+, ninja, vala, desktop-file-utils, gtk3, granite, libgee, elementary-settings-daemon
+, gnome-desktop, mutter, gobject-introspection, elementary-icon-theme, wingpanel-with-indicators
+, elementary-gtk-theme, nixos-artwork, elementary-default-settings, lightdm, numlockx
+, clutter-gtk, libGL, dbus, wrapGAppsHook }:
+
+stdenv.mkDerivation rec {
+  pname = "greeter";
+  version = "3.3.1";
+
+  name = "elementary-${pname}-${version}";
+
+  src = fetchFromGitHub {
+    owner = "elementary";
+    repo = pname;
+    rev = version;
+    sha256 = "1vkq4z0hrmvzv4sh2qkxjajdxcycd1zj97a3pc8n4yb858pqfyzc";
+  };
+
+  passthru = {
+    updateScript = pantheon.updateScript {
+      repoName = pname;
+      attrPath = "elementary-${pname}";
+    };
+  };
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gobject-introspection
+    meson
+    ninja
+    pkgconfig
+    vala
+    wrapGAppsHook
+  ];
+
+  buildInputs = [
+    clutter-gtk
+    elementary-icon-theme
+    elementary-gtk-theme
+    elementary-settings-daemon
+    gnome-desktop
+    granite
+    gtk3
+    libgee
+    libGL
+    lightdm
+    mutter
+    wingpanel-with-indicators
+  ];
+
+  patches = [
+    (substituteAll {
+      src = ./gsd.patch;
+      elementary-settings-daemon = "${elementary-settings-daemon}/libexec";
+    })
+    (substituteAll {
+      src = ./numlockx.patch;
+      inherit numlockx;
+    })
+    ./01-sysconfdir-install.patch
+  ];
+
+  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"
+  ];
+
+  preFixup = ''
+    gappsWrapperArgs+=(
+      # GTK+ reads default settings (such as icons and themes) from elementary's settings.ini here
+      --prefix XDG_CONFIG_DIRS : "${elementary-default-settings}/etc"
+
+      # dbus-launch needed in path
+      --prefix PATH : "${dbus}/bin"
+
+      # for `wingpanel -g`
+      --prefix PATH : "${wingpanel-with-indicators}/bin"
+
+      # TODO: they should be using meson for this
+      # See: https://github.com/elementary/greeter/blob/19c0730fded4e9ddec5a491f0e78f83c7c04eb59/src/PantheonGreeter.vala#L451
+      --prefix PATH : "$out/bin"
+    )
+  '';
+
+  postFixup = ''
+    substituteInPlace $out/share/xgreeters/io.elementary.greeter.desktop \
+      --replace  "Exec=io.elementary.greeter" "Exec=$out/bin/io.elementary.greeter"
+
+    substituteInPlace $out/etc/lightdm/io.elementary.greeter.conf \
+      --replace "#default-wallpaper=/usr/share/backgrounds/elementaryos-default" "default-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray}/share/artwork/gnome/nix-wallpaper-simple-dark-gray.png"
+  '';
+
+  meta = with stdenv.lib; {
+    description = "LightDM Greeter for Pantheon";
+    homepage = https://github.com/elementary/greeter;
+    license = licenses.gpl3Plus;
+    platforms = platforms.linux;
+    maintainers = pantheon.maintainers;
+  };
+}
diff --git a/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch b/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch
new file mode 100644
index 000000000000..1770d54aee0d
--- /dev/null
+++ b/pkgs/desktops/pantheon/desktop/elementary-greeter/gsd.patch
@@ -0,0 +1,13 @@
+diff --git a/src/meson.build b/src/meson.build
+index 2450c1a..a908d11 100644
+--- a/src/meson.build
++++ b/src/meson.build
+@@ -1,7 +1,7 @@
+ conf_data = configuration_data()
+ conf_data.set('CONF_DIR', join_paths(get_option('sysconfdir'), 'lightdm'))
+ conf_data.set('GETTEXT_PACKAGE', meson.project_name())
+-conf_data.set('GSD_DIR', '/usr/lib/gnome-settings-daemon/')
++conf_data.set('GSD_DIR', '@elementary-settings-daemon@')
+ conf_data.set('VERSION', meson.project_version())
+ config_header = configure_file (
+     input: 'config.vala.in',
diff --git a/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch b/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch
new file mode 100644
index 000000000000..2c7766b4284c
--- /dev/null
+++ b/pkgs/desktops/pantheon/desktop/elementary-greeter/numlockx.patch
@@ -0,0 +1,13 @@
+diff --git a/src/PantheonGreeter.vala b/src/PantheonGreeter.vala
+index 11aa4c0..ae7bf7e 100644
+--- a/src/PantheonGreeter.vala
++++ b/src/PantheonGreeter.vala
+@@ -163,7 +163,7 @@ public class PantheonGreeter : Gtk.Window {
+             warning (e.message);
+         }
+         if (activate_numlock) {
+-            Granite.Services.System.execute_command ("/usr/bin/numlockx on");
++            Granite.Services.System.execute_command ("@numlockx@/bin/numlockx on");
+         }
+ 
+         var screensaver_timeout = 60;