nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 nix-update-script,
6 linkFarm,
7 replaceVars,
8 elementary-greeter,
9 pkg-config,
10 meson,
11 ninja,
12 vala,
13 desktop-file-utils,
14 gtk3,
15 granite,
16 libgee,
17 libhandy,
18 gala,
19 gnome-desktop,
20 gnome-settings-daemon,
21 mutter,
22 elementary-icon-theme,
23 wingpanel-with-indicators,
24 elementary-gtk-theme,
25 nixos-artwork,
26 lightdm,
27 gdk-pixbuf,
28 dbus,
29 accountsservice,
30 wayland-scanner,
31 wrapGAppsHook3,
32}:
33
34stdenv.mkDerivation rec {
35 pname = "elementary-greeter";
36 version = "8.0.1";
37
38 src = fetchFromGitHub {
39 owner = "elementary";
40 repo = "greeter";
41 rev = version;
42 sha256 = "sha256-T/tI8WRVbTLdolDYa98M2Vm26p0xhGiai74lXAlpQ8k=";
43 };
44
45 patches = [
46 ./sysconfdir-install.patch
47 # Needed until https://github.com/elementary/greeter/issues/360 is fixed
48 (replaceVars ./hardcode-fallback-background.patch {
49 default_wallpaper = "${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}";
50 })
51 ];
52
53 depsBuildBuild = [ pkg-config ];
54
55 nativeBuildInputs = [
56 desktop-file-utils
57 meson
58 ninja
59 pkg-config
60 vala
61 wayland-scanner
62 wrapGAppsHook3
63 ];
64
65 buildInputs = [
66 accountsservice
67 elementary-icon-theme
68 gala # for io.elementary.desktop.background
69 gnome-desktop
70 gnome-settings-daemon
71 gdk-pixbuf
72 granite
73 gtk3
74 libgee
75 libhandy
76 lightdm
77 mutter
78 ];
79
80 mesonFlags = [
81 # A hook does this but after wrapGAppsHook3 so the files never get wrapped.
82 "--sbindir=${placeholder "out"}/bin"
83 # baked into the program for discovery of the greeter configuration
84 "--sysconfdir=/etc"
85 "-Dgsd-dir=${gnome-settings-daemon}/libexec/" # trailing slash is needed
86 ];
87
88 preFixup = ''
89 gappsWrapperArgs+=(
90 # dbus-launch needed in path
91 --prefix PATH : "${dbus}/bin"
92
93 # for `io.elementary.wingpanel -g`
94 --prefix PATH : "${wingpanel-with-indicators}/bin"
95
96 # for the compositor
97 --prefix PATH : "$out/bin"
98
99 # the GTK theme is hardcoded
100 --prefix XDG_DATA_DIRS : "${elementary-gtk-theme}/share"
101
102 # the icon theme is hardcoded
103 --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
104 )
105 '';
106
107 postFixup = ''
108 # Use NixOS default wallpaper
109 substituteInPlace $out/etc/lightdm/io.elementary.greeter.conf \
110 --replace "#default-wallpaper=/usr/share/backgrounds/elementaryos-default" \
111 "default-wallpaper=${nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}"
112
113 substituteInPlace $out/share/xgreeters/io.elementary.greeter.desktop \
114 --replace "Exec=io.elementary.greeter" "Exec=$out/bin/io.elementary.greeter"
115 '';
116
117 passthru = {
118 updateScript = nix-update-script { };
119
120 xgreeters = linkFarm "pantheon-greeter-xgreeters" [
121 {
122 path = "${elementary-greeter}/share/xgreeters/io.elementary.greeter.desktop";
123 name = "io.elementary.greeter.desktop";
124 }
125 ];
126 };
127
128 meta = with lib; {
129 description = "LightDM Greeter for Pantheon";
130 homepage = "https://github.com/elementary/greeter";
131 license = licenses.gpl3Plus;
132 platforms = platforms.linux;
133 teams = [ teams.pantheon ];
134 mainProgram = "io.elementary.greeter";
135 };
136}