{ stdenv, lib, substituteAll, fetchurl, fetchpatch, meson, ninja, pkg-config, gnome, perl, gettext, gtk3, glib, libnotify, libgnomekbd, libpulseaudio, alsa-lib, libcanberra-gtk3, upower, colord, libgweather, polkit, gsettings-desktop-schemas, geoclue2, systemd, libgudev, libwacom, libxslt, libxml2, modemmanager, networkmanager, gnome-desktop, geocode-glib_2, docbook_xsl, wrapGAppsHook3, python3, tzdata, gcr_4, gnome-session-ctl, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, }: stdenv.mkDerivation (finalAttrs: { pname = "gnome-settings-daemon"; version = "46.0"; src = fetchurl { url = "mirror://gnome/sources/gnome-settings-daemon/${lib.versions.major finalAttrs.version}/gnome-settings-daemon-${finalAttrs.version}.tar.xz"; hash = "sha256-C5oPZPoYqOfgm0yVo/dU+gM8LNvS3DVwHwYYVywcs9c="; }; patches = [ # https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/merge_requests/202 ./add-gnome-session-ctl-option.patch (substituteAll { src = ./fix-paths.patch; inherit tzdata; }) (fetchpatch { name = "backport-no-systemd-fix-1.patch"; url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/commit/46f998d7308cb18832666bc34ee54b1d9c27739f.patch"; includes = [ "plugins/sharing/gsd-sharing-manager.c" ]; hash = "sha256-P5FJUY50Pg3MuwHwGUz28/TMZkT7j+fmGPozWb9rVYo="; }) (fetchpatch { name = "backport-no-systemd-fix-2.patch"; url = "https://gitlab.gnome.org/GNOME/gnome-settings-daemon/-/commit/1a4d50f4ee611bdede6072c0bfd2a1b2e327c5fc.patch"; hash = "sha256-pROhnE9GziS9h0nMWZBsd8YtW6RxMrwmaSOe0UtkUJU="; }) ]; nativeBuildInputs = [ meson ninja pkg-config perl gettext libxml2 libxslt docbook_xsl wrapGAppsHook3 python3 ]; buildInputs = [ gtk3 glib gsettings-desktop-schemas modemmanager networkmanager libnotify libgnomekbd # for org.gnome.libgnomekbd.keyboard schema gnome-desktop libpulseaudio alsa-lib libcanberra-gtk3 upower colord libgweather polkit geocode-glib_2 geoclue2 libgudev libwacom gcr_4 ] ++ lib.optionals withSystemd [ systemd ]; mesonFlags = [ "-Dudev_dir=${placeholder "out"}/lib/udev" (lib.mesonBool "systemd" withSystemd) ] ++ lib.optionals withSystemd [ "-Dgnome_session_ctl_path=${gnome-session-ctl}/libexec/gnome-session-ctl" ]; # Default for release buildtype but passed manually because # we're using plain env.NIX_CFLAGS_COMPILE = "-DG_DISABLE_CAST_CHECKS"; postPatch = '' for f in gnome-settings-daemon/codegen.py plugins/power/gsd-power-constants-update.pl; do chmod +x $f patchShebangs $f done ''; passthru = { updateScript = gnome.updateScript { packageName = "gnome-settings-daemon"; }; }; meta = with lib; { license = licenses.gpl2Plus; maintainers = teams.gnome.members; platforms = platforms.linux; }; })