anchor.diff: -{ lib, stdenv
  +{ lib
  +, stdenv
   , fetchurl
   , fetchpatch
   , meson
  
positive.code: 
  stdenv.mkDerivation rec {
    pname = "gnome-todo";
    version = "3.28.1";
  
    src = fetchurl {
      url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
      sha256 = "08ygqbib72jlf9y0a16k54zz51sncpq2wa18wp81v46q8301ymy7";
    };
  
    patches = [
      # fix build with libecal 2.0
      (fetchpatch {
        name = "gnome-todo-eds-libecal-2.0.patch";
        url = "https://src.fedoraproject.org/rpms/gnome-todo/raw/bed44b8530f3c79589982e03b430b3a125e9bceb/f/gnome-todo-eds-libecal-2.0.patch";
        sha256 = "1ghrz973skal36j90wm2z13m3panw983r6y0k7z9gpj5lxgz92mq";
      })
    ];
    postPatch = ''
      chmod +x meson_post_install.py
      patchShebangs meson_post_install.py
    '';
  
    nativeBuildInputs = [
      meson
  
negative.code: 
    buildInputs = [
      glib
      gtk4
      wayland # required by gtk header
      libadwaita
      libpeas
      gnome-online-accounts
      gsettings-desktop-schemas
      gnome.adwaita-icon-theme
  
      # Plug-ins
      libportal # background
      evolution-data-server # eds
      libical
      librest # todoist
      json-glib # todoist
    ];
  
    postPatch = ''
      chmod +x build-aux/meson/meson_post_install.py
      patchShebangs build-aux/meson/meson_post_install.py
  
      # https://gitlab.gnome.org/GNOME/gnome-todo/merge_requests/103
      substituteInPlace src/meson.build \
        --replace 'Gtk-3.0' 'Gtk-4.0'
    '';
  
    passthru = {
      updateScript = gnome.updateScript {
  