Commit acf6b15f authored by Alyssa Ross's avatar Alyssa Ross
Browse files

gnome-settings-daemon: add withSystemd option

Since 7f2a6f17 ("xdg-desktop-portal-gtk: Enable all default
portals unconditionally"), building gnome-settings-daemon is necessary
to build xdg-desktop-portal-gtk, but it wasn't possible for systems
that can't use systemd.

I've called the option "withSystemd" as it's the most common name for
this kind of option in Nixpkgs.

A couple of backports are required for it to build.  They can be
removed when we update to GNOME 47.
parent 9704a4f8
Loading
Loading
Loading
Loading
+48 −27
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@
  lib,
  substituteAll,
  fetchurl,
  fetchpatch,
  meson,
  ninja,
  pkg-config,
@@ -37,6 +38,7 @@
  tzdata,
  gcr_4,
  gnome-session-ctl,
  withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
}:

stdenv.mkDerivation (finalAttrs: {
@@ -56,6 +58,18 @@ stdenv.mkDerivation (finalAttrs: {
      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 = [
@@ -71,7 +85,8 @@ stdenv.mkDerivation (finalAttrs: {
    python3
  ];

  buildInputs = [
  buildInputs =
    [
      gtk3
      glib
      gsettings-desktop-schemas
@@ -89,14 +104,20 @@ stdenv.mkDerivation (finalAttrs: {
      polkit
      geocode-glib_2
      geoclue2
    systemd
      libgudev
      libwacom
      gcr_4
    ]
    ++ lib.optionals withSystemd [
      systemd
    ];

  mesonFlags = [
  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"
    ];