about summary refs log tree commit diff
path: root/nixpkgs/pkgs/desktops/budgie
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2023-08-23 10:09:14 +0000
committerAlyssa Ross <hi@alyssa.is>2023-08-26 09:07:03 +0000
commit63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f (patch)
treed58934cb48f9c953b19a0d0d5cffc0d0c5561471 /nixpkgs/pkgs/desktops/budgie
parentc4eef3dacb2a3d359561f30917d9e3cc4e041be9 (diff)
parent91a22f76cd1716f9d0149e8a5c68424bb691de15 (diff)
downloadnixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.gz
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.bz2
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.lz
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.xz
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.tar.zst
nixlib-63dabcc77ef9a56655e1ca2ab2e25e6163a72c1f.zip
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts:
	nixpkgs/pkgs/build-support/go/module.nix
	nixpkgs/pkgs/development/python-modules/django-mailman3/default.nix
Diffstat (limited to 'nixpkgs/pkgs/desktops/budgie')
-rw-r--r--nixpkgs/pkgs/desktops/budgie/budgie-backgrounds/default.nix9
-rw-r--r--nixpkgs/pkgs/desktops/budgie/budgie-control-center/default.nix5
-rw-r--r--nixpkgs/pkgs/desktops/budgie/budgie-desktop/default.nix9
-rw-r--r--nixpkgs/pkgs/desktops/budgie/budgie-desktop/plugins.patch154
-rw-r--r--nixpkgs/pkgs/desktops/budgie/budgie-desktop/wrapper.nix2
-rw-r--r--nixpkgs/pkgs/desktops/budgie/budgie-gsettings-overrides/default.nix2
-rw-r--r--nixpkgs/pkgs/desktops/budgie/default.nix1
-rw-r--r--nixpkgs/pkgs/desktops/budgie/magpie/default.nix163
8 files changed, 319 insertions, 26 deletions
diff --git a/nixpkgs/pkgs/desktops/budgie/budgie-backgrounds/default.nix b/nixpkgs/pkgs/desktops/budgie/budgie-backgrounds/default.nix
index 37e3b231aa2c..989908916689 100644
--- a/nixpkgs/pkgs/desktops/budgie/budgie-backgrounds/default.nix
+++ b/nixpkgs/pkgs/desktops/budgie/budgie-backgrounds/default.nix
@@ -9,13 +9,13 @@
 
 stdenv.mkDerivation rec {
   pname = "budgie-backgrounds";
-  version = "1.0";
+  version = "2.0";
 
   src = fetchFromGitHub {
     owner = "BuddiesOfBudgie";
     repo = "budgie-backgrounds";
     rev = "v${version}";
-    hash = "sha256-TdtgOYHO2QH4W2jWBuAzYQwxwAPya2lC3VrIi7kvi+M=";
+    hash = "sha256-L6y9YVS0NFsycS90AmUJJd9HFMJ/Ge99pI426tC05jA=";
   };
 
   nativeBuildInputs = [
@@ -25,11 +25,6 @@ stdenv.mkDerivation rec {
     ninja
   ];
 
-  preConfigure = ''
-    chmod +x ./scripts/optimizeImage.sh
-    patchShebangs ./scripts/optimizeImage.sh
-  '';
-
   meta = with lib; {
     description = "The default background set for the Budgie Desktop";
     homepage = "https://github.com/BuddiesOfBudgie/budgie-backgrounds";
diff --git a/nixpkgs/pkgs/desktops/budgie/budgie-control-center/default.nix b/nixpkgs/pkgs/desktops/budgie/budgie-control-center/default.nix
index 1a51c3dfc1f1..7c11fe7933e5 100644
--- a/nixpkgs/pkgs/desktops/budgie/budgie-control-center/default.nix
+++ b/nixpkgs/pkgs/desktops/budgie/budgie-control-center/default.nix
@@ -39,6 +39,7 @@
 , libwacom
 , libxml2
 , libxslt
+, magpie
 , meson
 , modemmanager
 , networkmanager
@@ -108,7 +109,6 @@ stdenv.mkDerivation rec {
     gnome.gnome-remote-desktop
     gnome.gnome-settings-daemon
     gnome.gnome-user-share
-    gnome.mutter
     gsettings-desktop-schemas
     gsound
     gtk3
@@ -126,6 +126,7 @@ stdenv.mkDerivation rec {
     libsecret
     libwacom
     libxml2
+    magpie
     modemmanager
     networkmanager
     polkit
@@ -158,7 +159,7 @@ stdenv.mkDerivation rec {
       --prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
       --prefix XDG_DATA_DIRS : "${librsvg}/share"
       # WM keyboard shortcuts
-      --prefix XDG_DATA_DIRS : "${gnome.mutter}/share"
+      --prefix XDG_DATA_DIRS : "${magpie}/share"
     )
   '';
 
diff --git a/nixpkgs/pkgs/desktops/budgie/budgie-desktop/default.nix b/nixpkgs/pkgs/desktops/budgie/budgie-desktop/default.nix
index 787389c7576c..43a68e54beed 100644
--- a/nixpkgs/pkgs/desktops/budgie/budgie-desktop/default.nix
+++ b/nixpkgs/pkgs/desktops/budgie/budgie-desktop/default.nix
@@ -23,6 +23,7 @@
 , libpulseaudio
 , libuuid
 , libwnck
+, magpie
 , mesa
 , meson
 , ninja
@@ -36,14 +37,14 @@
 
 stdenv.mkDerivation rec {
   pname = "budgie-desktop";
-  version = "10.7.2";
+  version = "10.8";
 
   src = fetchFromGitHub {
     owner = "BuddiesOfBudgie";
     repo = pname;
     rev = "v${version}";
     fetchSubmodules = true;
-    hash = "sha256-fd3B2DMZxCI4Gb9mwdACjIPydKghXx8IkhFpMS/Clps=";
+    hash = "sha256-fOsTBnKtwBGQSPkBBrzwHEB3+OcJYtPIdvZsV31oi6g=";
   };
 
   patches = [
@@ -70,7 +71,6 @@ stdenv.mkDerivation rec {
     gnome-menus
     gnome.gnome-bluetooth_1_0
     gnome.gnome-settings-daemon
-    gnome.mutter
     gnome.zenity
     graphene
     gtk3
@@ -83,6 +83,7 @@ stdenv.mkDerivation rec {
     libpulseaudio
     libuuid
     libwnck
+    magpie
     mesa
     polkit
     sassc
@@ -101,6 +102,6 @@ stdenv.mkDerivation rec {
     homepage = "https://github.com/BuddiesOfBudgie/budgie-desktop";
     platforms = platforms.linux;
     maintainers = [ maintainers.federicoschonborn ];
-    license = with licenses; [ gpl2Plus lgpl21Plus cc-by-sa-30];
+    license = with licenses; [ gpl2Plus lgpl21Plus cc-by-sa-30 ];
   };
 }
diff --git a/nixpkgs/pkgs/desktops/budgie/budgie-desktop/plugins.patch b/nixpkgs/pkgs/desktops/budgie/budgie-desktop/plugins.patch
index af03fb635140..ca23edc42cee 100644
--- a/nixpkgs/pkgs/desktops/budgie/budgie-desktop/plugins.patch
+++ b/nixpkgs/pkgs/desktops/budgie/budgie-desktop/plugins.patch
@@ -1,21 +1,153 @@
+diff --git a/meson.build b/meson.build
+index 48aeeb38..31e4c24b 100644
+--- a/meson.build
++++ b/meson.build
+@@ -88,11 +88,6 @@ datadir = join_paths(prefix, get_option('datadir'))
+ localedir = join_paths(prefix, get_option('localedir'))
+ podir = join_paths(meson.source_root(), 'po')
+ 
+-cdata.set_quoted('DATADIR', datadir)
+-cdata.set_quoted('SYSCONFDIR', confdir)
+-cdata.set_quoted('LOCALEDIR', localedir)
+-cdata.set_quoted('PACKAGE_URL', 'https://buddiesofbudgie.org')
+-
+ # Handle i18n on the .desktop file
+ # Originally stolem from TingPing:
+ # https://github.com/vinszent/gnome-twitch/blob/master/data/meson.build
+@@ -111,23 +106,10 @@ cdata.set_quoted('MODULEDIR', plugin_libdir)
+ cdata.set_quoted('MODULE_DATA_DIR', plugin_datadir)
+ cdata.set_quoted('RAVEN_PLUGIN_LIBDIR', raven_plugin_libdir)
+ cdata.set_quoted('RAVEN_PLUGIN_DATADIR', raven_plugin_datadir)
+-
+-if prefix == '/usr' or prefix == '/usr/local'
+-    cdata.set('HAS_SECONDARY_PLUGIN_DIRS', true)
+-
+-    if prefix == '/usr'
+-        secondary_libdir_root = join_paths(prefix, 'local', get_option('libdir'), meson.project_name())
+-        secondary_datadir_root = join_paths(prefix, 'local', get_option('datadir'), meson.project_name())
+-    else
+-        secondary_libdir_root = join_paths('/usr', get_option('libdir'), meson.project_name())
+-        secondary_datadir_root = join_paths('/usr', get_option('datadir'), meson.project_name())
+-    endif
+-
+-    cdata.set_quoted('MODULEDIR_SECONDARY', join_paths(secondary_libdir_root, 'plugins'))
+-    cdata.set_quoted('MODULE_DATA_DIR_SECONDARY', join_paths(secondary_datadir_root, 'plugins'))
+-    cdata.set_quoted('RAVEN_PLUGIN_LIBDIR_SECONDARY', join_paths(secondary_libdir_root, 'raven-plugins'))
+-    cdata.set_quoted('RAVEN_PLUGIN_DATADIR_SECONDARY', join_paths(secondary_datadir_root, 'raven-plugins'))
+-endif
++cdata.set_quoted('DATADIR', datadir)
++cdata.set_quoted('SYSCONFDIR', confdir)
++cdata.set_quoted('LOCALEDIR', localedir)
++cdata.set_quoted('PACKAGE_URL', 'https://buddiesofbudgie.org')
+ 
+ with_bluetooth = get_option('with-bluetooth')
+ if with_bluetooth == true
+diff --git a/src/config/budgie-config.c b/src/config/budgie-config.c
+index fc531f59..0a21b690 100644
+--- a/src/config/budgie-config.c
++++ b/src/config/budgie-config.c
+@@ -11,7 +11,6 @@
+ 
+ #ifndef CONFIG_H_INCLUDED
+ #include "config.h"
+-#include <stdbool.h>
+ 
+ /**
+  * All this is to keep Vala happy & configured..
+@@ -20,21 +19,6 @@ const char* BUDGIE_MODULE_DIRECTORY = MODULEDIR;
+ const char* BUDGIE_MODULE_DATA_DIRECTORY = MODULE_DATA_DIR;
+ const char* BUDGIE_RAVEN_PLUGIN_LIBDIR = RAVEN_PLUGIN_LIBDIR;
+ const char* BUDGIE_RAVEN_PLUGIN_DATADIR = RAVEN_PLUGIN_DATADIR;
+-
+-#ifdef HAS_SECONDARY_PLUGIN_DIRS
+-const bool BUDGIE_HAS_SECONDARY_PLUGIN_DIRS = true;
+-const char* BUDGIE_MODULE_DIRECTORY_SECONDARY = MODULEDIR_SECONDARY;
+-const char* BUDGIE_MODULE_DATA_DIRECTORY_SECONDARY = MODULE_DATA_DIR_SECONDARY;
+-const char* BUDGIE_RAVEN_PLUGIN_LIBDIR_SECONDARY = RAVEN_PLUGIN_LIBDIR_SECONDARY;
+-const char* BUDGIE_RAVEN_PLUGIN_DATADIR_SECONDARY = RAVEN_PLUGIN_DATADIR_SECONDARY;
+-#else
+-const bool BUDGIE_HAS_SECONDARY_PLUGIN_DIRS = false;
+-const char* BUDGIE_MODULE_DIRECTORY_SECONDARY = NULL;
+-const char* BUDGIE_MODULE_DATA_DIRECTORY = NULL;
+-const char* BUDGIE_RAVEN_PLUGIN_LIBDIR = NULL;
+-const char* BUDGIE_RAVEN_PLUGIN_DATADIR = NULL;
+-#endif
+-
+ const char* BUDGIE_DATADIR = DATADIR;
+ const char* BUDGIE_VERSION = PACKAGE_VERSION;
+ const char* BUDGIE_WEBSITE = PACKAGE_URL;
+diff --git a/src/config/budgie-config.h b/src/config/budgie-config.h
+index 720379a5..c5774820 100644
+--- a/src/config/budgie-config.h
++++ b/src/config/budgie-config.h
+@@ -12,8 +12,6 @@
+ #ifndef _BUDGIE_CONFIG_H_
+ #define _BUDGIE_CONFIG_H_
+ 
+-#include <stdbool.h>
+-
+ /* i.e. /usr/lib/budgie-desktop */
+ extern const char* BUDGIE_MODULE_DIRECTORY;
+ 
+@@ -26,12 +24,6 @@ extern const char* BUDGIE_RAVEN_PLUGIN_LIBDIR;
+ /* i.e. /usr/share/budgie-desktop/raven-plugins */
+ extern const char* BUDGIE_RAVEN_PLUGIN_DATADIR;
+ 
+-extern const bool BUDGIE_HAS_SECONDARY_PLUGIN_DIRS;
+-extern const char* BUDGIE_MODULE_DIRECTORY_SECONDARY;
+-extern const char* BUDGIE_MODULE_DATA_DIRECTORY_SECONDARY;
+-extern const char* BUDGIE_RAVEN_PLUGIN_LIBDIR_SECONDARY;
+-extern const char* BUDGIE_RAVEN_PLUGIN_DATADIR_SECONDARY;
+-
+ /* i.e. /usr/share/ */
+ extern const char* BUDGIE_DATADIR;
+ 
+diff --git a/src/config/budgie-config.vapi b/src/config/budgie-config.vapi
+index 5eb445d1..7d27e348 100644
+--- a/src/config/budgie-config.vapi
++++ b/src/config/budgie-config.vapi
+@@ -22,21 +22,6 @@ namespace Budgie {
+ 	[CCode (cheader_filename="budgie-config.h")]
+ 	public extern const string RAVEN_PLUGIN_DATADIR;
+ 
+-	[CCode (cheader_filename="budgie-config.h")]
+-	public extern const bool HAS_SECONDARY_PLUGIN_DIRS;
+-
+-	[CCode (cheader_filename="budgie-config.h")]
+-	public extern const string? MODULE_DIRECTORY_SECONDARY;
+-
+-	[CCode (cheader_filename="budgie-config.h")]
+-    public extern const string? MODULE_DATA_DIRECTORY_SECONDARY;
+-
+-	[CCode (cheader_filename="budgie-config.h")]
+-	public extern const string? RAVEN_PLUGIN_LIBDIR_SECONDARY;
+-
+-	[CCode (cheader_filename="budgie-config.h")]
+-	public extern const string? RAVEN_PLUGIN_DATADIR_SECONDARY;
+-
+     [CCode (cheader_filename="budgie-config.h")]
+     public extern const string DATADIR;
+ 
 diff --git a/src/panel/plugin_manager.vala b/src/panel/plugin_manager.vala
-index d3cdb65c..9d569bd1 100644
+index f4f2e4da..9d569bd1 100644
 --- a/src/panel/plugin_manager.vala
 +++ b/src/panel/plugin_manager.vala
-@@ -40,10 +40,26 @@ namespace Budgie {
+@@ -40,13 +40,26 @@ namespace Budgie {
  			}
  
  			/* System path */
 -			var dir = Environment.get_user_data_dir();
 -			engine.add_search_path(Budgie.MODULE_DIRECTORY, Budgie.MODULE_DATA_DIRECTORY);
+-			if (Budgie.HAS_SECONDARY_PLUGIN_DIRS) {
+-				engine.add_search_path(Budgie.MODULE_DIRECTORY_SECONDARY, Budgie.MODULE_DATA_DIRECTORY_SECONDARY);
 +			var libdir = Environment.get_variable("BUDGIE_PLUGIN_LIBDIR");
 +			if (libdir != null) {
 +				debug("BUDGIE_PLUGIN_LIBDIR is set to %s", libdir);
 +			} else {
 +				debug("BUDGIE_PLUGIN_LIBDIR is unset, defaulting to %s", Budgie.MODULE_DIRECTORY);
 +				libdir = Budgie.MODULE_DIRECTORY;
-+			}
-+
+ 			}
+ 
 +			var datadir = Environment.get_variable("BUDGIE_PLUGIN_DATADIR");
 +			if (datadir != null) {
 +				debug("BUDGIE_PLUGIN_DATADIR is set to %s", datadir);
@@ -25,22 +157,24 @@ index d3cdb65c..9d569bd1 100644
 +			}
 +
 +			engine.add_search_path(libdir, datadir);
- 
++
  			/* User path */
 +			var dir = Environment.get_user_data_dir();
  			var user_mod = Path.build_path(Path.DIR_SEPARATOR_S, dir, "budgie-desktop", "plugins");
  			var hdata = Path.build_path(Path.DIR_SEPARATOR_S, dir, "budgie-desktop", "data");
  			engine.add_search_path(user_mod, hdata);
 diff --git a/src/raven/plugin_manager.vala b/src/raven/plugin_manager.vala
-index b0814693..d671109a 100644
+index 01f32553..d671109a 100644
 --- a/src/raven/plugin_manager.vala
 +++ b/src/raven/plugin_manager.vala
-@@ -51,10 +51,26 @@ namespace Budgie {
+@@ -51,13 +51,26 @@ namespace Budgie {
  			}
  
  			/* System path */
 -			var dir = Environment.get_user_data_dir();
 -			engine.add_search_path(Budgie.RAVEN_PLUGIN_LIBDIR, Budgie.RAVEN_PLUGIN_DATADIR);
+-			if (Budgie.HAS_SECONDARY_PLUGIN_DIRS) {
+-				engine.add_search_path(Budgie.RAVEN_PLUGIN_LIBDIR_SECONDARY, Budgie.RAVEN_PLUGIN_DATADIR_SECONDARY);
 +			var libdir = Environment.get_variable("RAVEN_PLUGIN_LIBDIR");
 +			if (libdir != null) {
 +				debug("RAVEN_PLUGIN_LIBDIR is set to %s", libdir);
@@ -55,10 +189,10 @@ index b0814693..d671109a 100644
 +			} else {
 +				debug("RAVEN_PLUGIN_DATADIR is unset, defaulting to %s", Budgie.RAVEN_PLUGIN_DATADIR);
 +				datadir = Budgie.RAVEN_PLUGIN_DATADIR;
-+			}
-+
-+			engine.add_search_path(libdir, datadir);
+ 			}
  
++			engine.add_search_path(libdir, datadir);
++
  			/* User path */
 +			var dir = Environment.get_user_data_dir();
  			var user_mod = Path.build_path(Path.DIR_SEPARATOR_S, dir, "budgie-desktop", "raven-plugins");
diff --git a/nixpkgs/pkgs/desktops/budgie/budgie-desktop/wrapper.nix b/nixpkgs/pkgs/desktops/budgie/budgie-desktop/wrapper.nix
index 88c8d132bf12..99b33b68cb0e 100644
--- a/nixpkgs/pkgs/desktops/budgie/budgie-desktop/wrapper.nix
+++ b/nixpkgs/pkgs/desktops/budgie/budgie-desktop/wrapper.nix
@@ -4,7 +4,7 @@
 , xorg
 , wrapGAppsHook
 , budgie-desktop
-, plugins ? []
+, plugins ? [ ]
 }:
 
 stdenv.mkDerivation {
diff --git a/nixpkgs/pkgs/desktops/budgie/budgie-gsettings-overrides/default.nix b/nixpkgs/pkgs/desktops/budgie/budgie-gsettings-overrides/default.nix
index 6516498dea89..411d8a1f6f63 100644
--- a/nixpkgs/pkgs/desktops/budgie/budgie-gsettings-overrides/default.nix
+++ b/nixpkgs/pkgs/desktops/budgie/budgie-gsettings-overrides/default.nix
@@ -3,7 +3,6 @@
 , budgie-desktop
 , budgie-desktop-view
 , glib
-, gnome
 , gsettings-desktop-schemas
 , mate
 , nixos-artwork
@@ -57,7 +56,6 @@ let
       budgie-desktop
       budgie-desktop-view
       gsettings-desktop-schemas
-      gnome.mutter
   ] ++ extraGSettingsOverridePackages;
 
 in
diff --git a/nixpkgs/pkgs/desktops/budgie/default.nix b/nixpkgs/pkgs/desktops/budgie/default.nix
index afe954610fff..73eca3942023 100644
--- a/nixpkgs/pkgs/desktops/budgie/default.nix
+++ b/nixpkgs/pkgs/desktops/budgie/default.nix
@@ -8,4 +8,5 @@ lib.makeScope pkgs.newScope (self: with self; {
   budgie-desktop-with-plugins = callPackage ./budgie-desktop/wrapper.nix { };
   budgie-gsettings-overrides = callPackage ./budgie-gsettings-overrides { };
   budgie-screensaver = callPackage ./budgie-screensaver { };
+  magpie = callPackage ./magpie { };
 })
diff --git a/nixpkgs/pkgs/desktops/budgie/magpie/default.nix b/nixpkgs/pkgs/desktops/budgie/magpie/default.nix
new file mode 100644
index 000000000000..15e59f801a23
--- /dev/null
+++ b/nixpkgs/pkgs/desktops/budgie/magpie/default.nix
@@ -0,0 +1,163 @@
+{ fetchFromGitHub
+, runCommand
+, lib
+, fetchpatch
+, stdenv
+, pkg-config
+, gnome
+, gettext
+, gobject-introspection
+, cairo
+, colord
+, lcms2
+, pango
+, json-glib
+, libstartup_notification
+, libcanberra
+, ninja
+, xvfb-run
+, xkeyboard_config
+, libxcvt
+, libxkbfile
+, libXdamage
+, libxkbcommon
+, libXtst
+, libinput
+, libdrm
+, gsettings-desktop-schemas
+, glib
+, gtk3
+, gnome-desktop
+, pipewire
+, libgudev
+, libwacom
+, mesa
+, meson
+, xorgserver
+, python3
+, wrapGAppsHook
+, gi-docgen
+, sysprof
+, libsysprof-capture
+, desktop-file-utils
+, libcap_ng
+, graphene
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "magpie";
+  version = "0.9.2";
+
+  outputs = [ "out" "dev" "devdoc" ];
+
+  src = fetchFromGitHub {
+    owner = "BuddiesOfBudgie";
+    repo = "magpie";
+    rev = "v${finalAttrs.version}";
+    hash = "sha256-GoilHdESFgpwt8+Uqzrnf8jBpeaSak1uHTlkNcQdgtk=";
+  };
+
+  patches = [
+    # Fix build with separate sysprof.
+    # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2572
+    (fetchpatch {
+      url = "https://gitlab.gnome.org/GNOME/mutter/-/commit/285a5a4d54ca83b136b787ce5ebf1d774f9499d5.patch";
+      sha256 = "/npUE3idMSTVlFptsDpZmGWjZ/d2gqruVlJKq4eF4xU=";
+    })
+  ];
+
+  mesonFlags = [
+    "-Degl_device=true"
+    "-Dprofiler=true"
+    "-Ddocs=true"
+    "-Dwith_shared_components=true"
+  ];
+
+  propagatedBuildInputs = [
+    # required for pkg-config to detect magpie-clutter
+    json-glib
+    libXtst
+    libcap_ng
+    graphene
+  ];
+
+  nativeBuildInputs = [
+    desktop-file-utils
+    gettext
+    libxcvt
+    mesa # needed for gbm
+    meson
+    ninja
+    xvfb-run
+    pkg-config
+    python3
+    wrapGAppsHook
+    gi-docgen
+    xorgserver
+  ];
+
+  buildInputs = [
+    cairo
+    glib
+    gnome-desktop
+    gnome.gnome-settings-daemon
+    gobject-introspection
+    gsettings-desktop-schemas
+    gtk3
+    libcanberra
+    libdrm
+    libgudev
+    libinput
+    libstartup_notification
+    libwacom
+    libxkbcommon
+    libxkbfile
+    libXdamage
+    colord
+    lcms2
+    pango
+    pipewire
+    sysprof # for D-Bus interfaces
+    libsysprof-capture
+    xkeyboard_config
+  ];
+
+  postPatch = ''
+    patchShebangs src/backends/native/gen-default-modes.py
+    # Magpie doesn't install any .desktop files
+    substituteInPlace meson/meson-postinstall.sh --replace "update-desktop-database" "# update-desktop-database"
+  '';
+
+  postFixup = ''
+    # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back.
+    # TODO: Move this into a directory devhelp can find.
+    moveToOutput "share/magpie-0/doc" "$devdoc"
+  '';
+
+  # Install udev files into our own tree.
+  PKG_CONFIG_UDEV_UDEVDIR = "${placeholder "out"}/lib/udev";
+
+  separateDebugInfo = true;
+
+  passthru = {
+    libdir = "${finalAttrs.finalPackage}/lib/magpie-0";
+
+    tests = {
+      libdirExists = runCommand "magpie-libdir-exists" {} ''
+        if [[ ! -d ${finalAttrs.finalPackage.libdir} ]]; then
+          echo "passthru.libdir should contain a directory, “${finalAttrs.finalPackage.libdir}” is not one."
+          exit 1
+        fi
+        touch $out
+      '';
+    };
+  };
+
+  meta = with lib; {
+    description = "Softish fork of Mutter 43.x";
+    homepage = "https://github.com/BuddiesOfBudgie/magpie";
+    license = licenses.gpl2Plus;
+    maintainers = with maintainers; [ federicoschonborn ];
+    platforms = platforms.linux;
+  };
+})